@kieransimkin/dance-rudiments 0.2.4 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +16 -0
- package/README.md +86 -4
- package/package.json +1 -1
package/AGENTS.md
CHANGED
|
@@ -7,3 +7,19 @@
|
|
|
7
7
|
- Keep credentials, account data, private media and rights records out of source, fixtures, logs and packages. Use synthetic fixtures or explicitly authorised public examples and preserve their provenance/licences.
|
|
8
8
|
- Use [CONTRIBUTING.md](CONTRIBUTING.md) for review. Maintainers publish accepted, validated improvements as a fresh matching GitHub release and verify configured registry destinations. Preserve existing tags and release assets; publication and deployment remain subject to applicable authorisation.
|
|
9
9
|
- Website: https://kieransimkin.co.uk/danceflow/
|
|
10
|
+
|
|
11
|
+
## Keep README documentation current
|
|
12
|
+
|
|
13
|
+
- Whenever a feature is added or changed, update the relevant README.md in the same change to reflect the resulting behaviour. This applies to every feature addition or modification, including APIs, commands, configuration, defaults, integrations and removals.
|
|
14
|
+
- Update affected feature descriptions, usage instructions, options, examples and limitations. For tools or packages with their own README.md, update that README as well as the repository README when its overview or usage is affected.
|
|
15
|
+
- Check the README against the implemented and verified behaviour before committing, opening or merging a PR, publishing a release or handing off the work. A feature change is incomplete until its README documentation is current; a changelog or other documentation does not replace this requirement.
|
|
16
|
+
|
|
17
|
+
## Released viewers and coordinated CI/CD
|
|
18
|
+
|
|
19
|
+
- Read [docs/released-viewers.md](docs/released-viewers.md) before changing dependency, build or release behaviour. The sibling layout is `DanceRudiments/`, `react-timeline-sequence/`, and `stemlab/` under one parent.
|
|
20
|
+
- Release the two companions first (React Timeline Sequence, then DanceRudiments), verify their configured publication workflows and public registries, then synchronize/rebuild/test/release StemLab. A merge or tag alone is not a verified release.
|
|
21
|
+
- StemLab must target the **latest stable official releases**. No unreleased main commit, mutable development override, local `file:` archive or vendor package may substitute for a missing release. Latest is resolved before the build and locked to exact published versions, release commits and registry hashes for that run; fail visibly on stale or incompatible dependencies rather than falling back silently.
|
|
22
|
+
- Use the canonical `stemlab/scripts/Release-DanceFlow.ps1` coordinator from the shared parent directory. Preview first; `-Execute` explicitly performs scoped commits, normal pushes and fresh tags; `-Resume` must preserve source identities and existing tags/assets. Never force-push, move release tags, commit unrelated work, bypass failed checks or change approvals/protections/credentials to manufacture a pass.
|
|
23
|
+
- Update this repository's README.md and AGENTS.md in the same change whenever release policy, dependency rules, automation, commands, controls or validation change. Keep relevant package/feature READMEs current too. A separate guide or changelog does not replace the root README update.
|
|
24
|
+
- Preserve the master-plus-drums/percussion beat-routing contract, 64-pips-per-beat native recording clock, per-dimension bars and combined waveform/spectrogram lanes. New UI features must be supplied by released shared APIs and genuinely rebuilt frontend assets, not copied engines or marker strings.
|
|
25
|
+
- Distinguish source CI, package publication, full-song inference, browser/audio QA, artifact packaging, actual Pages deployment and live URL/audio verification. Keep all four Arcadians pages together; do not report unexecuted, skipped or older-commit checks as success. CI playback evidence is not subjective listening QA.
|
package/README.md
CHANGED
|
@@ -24,7 +24,9 @@ Project website: [https://kieransimkin.co.uk/danceflow/](https://kieransimkin.co
|
|
|
24
24
|
|
|
25
25
|
## ▶ Try the pattern visualizer
|
|
26
26
|
|
|
27
|
-
**[
|
|
27
|
+
**[▶ Open the movement visualiser](https://kieransimkin.github.io/DanceRudiments/)**
|
|
28
|
+
|
|
29
|
+
[Download the self-contained HTML for offline use](https://github.com/kieransimkin/DanceRudiments/raw/refs/heads/main/harness/index.html)
|
|
28
30
|
|
|
29
31
|
Save the file and open it in a browser. **No install, server, CDN, soundfont or
|
|
30
32
|
separate WASM file is required.** The complete 1,731-movement catalogue includes a
|
|
@@ -41,13 +43,13 @@ The downloadable file is the checked-in snapshot; the **Pattern visualizer**
|
|
|
41
43
|
workflow also rebuilds a fresh version from every pushed native catalogue.
|
|
42
44
|
[Beat player, rebuilding, release downloads and optional live hosting](docs/midi-harness.md).
|
|
43
45
|
|
|
44
|
-
[](https://github.
|
|
46
|
+
[](https://kieransimkin.github.io/DanceRudiments/)
|
|
45
47
|
|
|
46
48
|
*Captured from the running C++/WebAssembly visualizer at beat 2.75. Audio was not started during this screenshot.*
|
|
47
49
|
|
|
48
50
|
|
|
49
51
|
|
|
50
|
-
DanceRudiments is a C++17 library of deterministic rhythmic position functions. One integer pip is `1/64` of a beat. Built-in and custom patterns each keep their own loop period. Every sampler wraps positive or negative input into its own loop before sampling.
|
|
52
|
+
DanceRudiments is a C++17 library of deterministic rhythmic position functions. One integer pip is `1/64` of a beat. Built-in and custom patterns each keep their own loop period. Every legacy pattern sampler wraps positive or negative input into its own loop before sampling.
|
|
51
53
|
|
|
52
54
|
Outputs are dimensionless offsets, normally in `[-1, 1]`. The caller chooses pixels, CSS units, metres, or another scale. There is deliberately no time interpolation in the public API: renderers advance with integer pips and get one exact sample per pip.
|
|
53
55
|
|
|
@@ -87,6 +89,33 @@ python tools/build_default_catalogue.py --check
|
|
|
87
89
|
The release workflow builds the complete native catalogue demo plus an offline,
|
|
88
90
|
audio-enabled 68-rhythm / 16-mapping comparison page. All live motion comes from C++/WASM.
|
|
89
91
|
|
|
92
|
+
## BPM-synchronised N-dimensional recordings and comparison harness
|
|
93
|
+
|
|
94
|
+
The additive `dancerudiments.recording` format stores **any number of named
|
|
95
|
+
float64 dimensions** at **64 pips per beat**, with a mandatory BPM estimate or
|
|
96
|
+
confirmed value and separate beat-phase provenance. `SampledRecording` provides
|
|
97
|
+
native non-looping C++/Python playback, including captures beyond the old
|
|
98
|
+
65,535-pip loop length; existing XYZ patterns and their wrapping rules are unchanged.
|
|
99
|
+
|
|
100
|
+
```python
|
|
101
|
+
from dancerudiments_authoring import load_recording
|
|
102
|
+
from dancerudiments_authoring.harness import build_recording_harness
|
|
103
|
+
r = load_recording("output/recordings/audio_recording.json")
|
|
104
|
+
values = r.to_native().sample(r.clock.start_pip) # every dimension, real C++
|
|
105
|
+
build_recording_harness([r], "output/index.html")
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
The exported page uses **the same packaged visualizer assets as catalogue/release
|
|
109
|
+
pages**, with native WASM sampling, shared transport, four-card comparison and
|
|
110
|
+
review import/export. Recording mode adds arbitrary-axis X/Y/Z selection, locked
|
|
111
|
+
BPM/origin and non-looping completion. The tiny generic WASM sampler is bundled;
|
|
112
|
+
no compiler or CDN is needed at export time. StemLab's `record-rudiment` and
|
|
113
|
+
`generate-batch` produce individual or varied stem/filter combinations using this
|
|
114
|
+
API without copying it. Music is not bundled unless explicitly requested.
|
|
115
|
+
|
|
116
|
+
See **[recording format, harness, native API and compatibility](docs/recordings.md)**.
|
|
117
|
+
Build the updated source to use this unreleased API; earlier releases lack it.
|
|
118
|
+
|
|
90
119
|
## Curve and event authoring
|
|
91
120
|
|
|
92
121
|
The optional **Python authoring tools** compile LFOs, segmented curves, sampled
|
|
@@ -152,7 +181,7 @@ another movement implementation. The examples below are checked into
|
|
|
152
181
|
| TypeScript / JavaScript | `catalogue` (an array, not a function) | `sample(name, pip)` after `bindNative()` | `info.periodPips` | Call the custom bank's `dispose()` |
|
|
153
182
|
|
|
154
183
|
**One beat is 64 pips.** Supply a signed 32-bit integer, not milliseconds or a
|
|
155
|
-
floating-point beat number. Every sampler wraps negative as well as positive
|
|
184
|
+
floating-point beat number. Every legacy pattern sampler wraps negative as well as positive
|
|
156
185
|
positions into its own loop. Offsets are `{x, y, z}`, dimensionless and bounded to
|
|
157
186
|
`[-1, 1]`; choose the pixel/metre scale in your application. There is no automatic
|
|
158
187
|
interpolation, BPM detection or audio playback inside a binding.
|
|
@@ -530,3 +559,56 @@ Apply an output to a bounded subject. DanceRudiments changes position only; it m
|
|
|
530
559
|
## Troubleshooting history
|
|
531
560
|
|
|
532
561
|
See [build and release troubleshooting](docs/troubleshooting.md) for prior failures, causes and fixes.
|
|
562
|
+
|
|
563
|
+
### Switch the shared visualizer between trajectories and bars
|
|
564
|
+
|
|
565
|
+
Use **Movement view → X–Y plot / Bar graph**. Bar view uses the same native
|
|
566
|
+
C++/WebAssembly sample and the existing clock, shows **every dimension** as a
|
|
567
|
+
separate signed bar, and keeps comparison cards on one common scale. Switching
|
|
568
|
+
views does not interrupt playback or change the underlying recording. The
|
|
569
|
+
selection is local to your browser; long dimension sets scroll horizontally.
|
|
570
|
+
This applies to catalogue/release pages and recording harnesses exported by
|
|
571
|
+
StemLab. Rebuild old generated pages to include the control. See
|
|
572
|
+
[recording visualizer controls](docs/recordings.md#trajectory-or-all-dimension-bars).
|
|
573
|
+
|
|
574
|
+
|
|
575
|
+
## Coordinated releases and latest-release dependencies
|
|
576
|
+
|
|
577
|
+
Keep `DanceRudiments`, `react-timeline-sequence`, and `stemlab` as sibling
|
|
578
|
+
checkouts. The release order is **React Timeline Sequence → DanceRudiments →
|
|
579
|
+
StemLab**: publish and verify the companions before updating the consuming app.
|
|
580
|
+
StemLab must use their **latest stable official releases**, not an unreleased
|
|
581
|
+
commit, sibling source package or vendored npm archive. Each build records exact
|
|
582
|
+
released versions/commits/integrity after latest-release resolution so all its
|
|
583
|
+
jobs use the same bytes; CI fails clearly when that snapshot is stale.
|
|
584
|
+
|
|
585
|
+
From the parent folder, preview and then explicitly execute:
|
|
586
|
+
|
|
587
|
+
```powershell
|
|
588
|
+
.\stemlab\scripts\Release-DanceFlow.ps1 -ProjectsRoot .
|
|
589
|
+
.\stemlab\scripts\Release-DanceFlow.ps1 -ProjectsRoot . -Execute
|
|
590
|
+
```
|
|
591
|
+
|
|
592
|
+
For the first migration use the same commands with
|
|
593
|
+
`.\release-kit\Release-DanceFlow.ps1` after extracting the complete kit. It
|
|
594
|
+
applies the three repository patches, updates versions, performs scoped commits
|
|
595
|
+
and normal pushes, waits for exact-commit CI, then creates **new** release tags.
|
|
596
|
+
The existing GitHub Actions workflows publish packages; no protection rules,
|
|
597
|
+
credentials, old tags or assets are changed. The initial expected next-minor
|
|
598
|
+
versions are only a preview proposal, never a claim that they are published.
|
|
599
|
+
|
|
600
|
+
Use Node.js 24, Python 3.11+, PowerShell 5.1+, Git and authenticated GitHub CLI.
|
|
601
|
+
Required main/registry/Pages jobs must pass; missing approvals and partial
|
|
602
|
+
publication are blockers, not success. The default script releases all three
|
|
603
|
+
projects, is opt-in via `-Execute`, and supports a saved exact-source `-Resume`
|
|
604
|
+
session. A changed checkout or pre-commit build failure requires review rather
|
|
605
|
+
than an automatic stash/reset or guessed recovery.
|
|
606
|
+
|
|
607
|
+
StemLab's helper updates npm manifests/lock, optional native dependency minimum,
|
|
608
|
+
release/build metadata and the genuinely rebuilt JS/CSS together. Its daily
|
|
609
|
+
release-update workflow proposes subsequent updates by PR without auto-merging.
|
|
610
|
+
A tagged StemLab release generates all four Arcadians pages and validates actual
|
|
611
|
+
Pages deployment, live HTML and seekable audio. Do not start a duplicate manual
|
|
612
|
+
Arcadians analysis during that tagged build. Read
|
|
613
|
+
**[the full release, resume, verification and troubleshooting guide](docs/released-viewers.md)**
|
|
614
|
+
before running it. Keep this README and AGENTS.md synchronized with future changes.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kieransimkin/dance-rudiments",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"description": "Deterministic rhythmic position functions with C++, Python, TypeScript/WASM and C# bindings. https://kieransimkin.co.uk/my-songs/",
|
|
5
5
|
"license": "MIT AND BSD-3-Clause AND CC0-1.0 AND CC-BY-4.0",
|
|
6
6
|
"type": "module",
|