Song: per-note probability, ratchet and condition fields #162

Open
opened 2026-10-06 16:24:14 +00:00 by bcox · 0 comments
Owner

bcox asked on 2026-10-06 for a ticket for each gap docs/modular-gaps.md names without one, whether or not it is ever done. Engine claims are from reading the tree at 6a3fede9 on main. Nothing here is built, measured or listened to.

Summary

A song note carries start, length, pitch, velocity, release and curves (project/song.h), and no probability, condition or ratchet. docs/modular-gaps.md reaches note probability with a per-note random against a threshold in every patch, ratchets with a pulse LFO into the gate target, and conditions with a drawn lane per condition, each static or patch-wide. The first-class form is the field in the note, with the editor to set it and sequence/resolve.h to honor it.

What the tree has

  • Breakpoint and LaneTarget; kCurveInterval; the resolver's one sorted event list; the note editor's selection by id.

The work, as a sketch

  • Three appended note fields: probability (resolved per pass with the song's seed, so a pass is reproducible), ratchet count (the note split into N shorter notes), and a condition (every Nth pass, first pass, not first). Format: appended bytes in the note record, defaulting to today's behavior.

Open

Where the random for probability lives so that a loop pass and a bounce agree; whether conditions follow Elektron's vocabulary.

bcox asked on 2026-10-06 for a ticket for each gap `docs/modular-gaps.md` names without one, whether or not it is ever done. Engine claims are from reading the tree at `6a3fede9` on `main`. **Nothing here is built, measured or listened to.** ## Summary A song note carries start, length, pitch, velocity, release and curves (`project/song.h`), and no probability, condition or ratchet. `docs/modular-gaps.md` reaches note probability with a per-note random against a threshold in every patch, ratchets with a pulse LFO into the gate target, and conditions with a drawn lane per condition, each static or patch-wide. The first-class form is the field in the note, with the editor to set it and `sequence/resolve.h` to honor it. ## What the tree has - `Breakpoint` and `LaneTarget`; `kCurveInterval`; the resolver's one sorted event list; the note editor's selection by id. ## The work, as a sketch - Three appended note fields: probability (resolved per pass with the song's seed, so a pass is reproducible), ratchet count (the note split into N shorter notes), and a condition (every Nth pass, first pass, not first). Format: appended bytes in the note record, defaulting to today's behavior. ## Open Where the random for probability lives so that a loop pass and a bounce agree; whether conditions follow Elektron's vocabulary.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
bcox/tymbal#162
No description provided.