Files
nvrl f1366280ff
Check and Windows preview / check (patina) (push) Successful in 3m59s
Check and Windows preview / check (rivet) (push) Successful in 2m2s
Check and Windows preview / previews (push) Successful in 1m8s
Independent plugin release / plan (push) Successful in 7s
Check and Windows preview / windows (push) Successful in 2m41s
Independent plugin release / build (push) Successful in 3m0s
Independent plugin release / publish (push) Successful in 9s
feat(rivet): storyboard composition with flexible lengths and meters
Rivet 0.4.0 tells a motif as a story. A timeline of blocks with roles
(statement, answer, departure, return, rest) replaces tasks, pins and
branches. Rivet writes each block from a motif and joins the seams with
a cut, breath, pickup or approach.

- Motifs of 1-8 bars in a bin of 16; storyboards up to 32 bars.
- Meters 2/4, 3/4, 4/4, 5/4, 6/8, 7/8 and 12/8 for import, writing,
  audition and export. Phrygian, harmonic minor and Mixolydian scales.
- Per-block options, Another take and Keep; templates for new boards.
- Editor rebuilt: motif bin, timeline, large piano roll, inspector,
  tabs for generation, harmony and sound roles, 32-step undo/redo.
- Sessions from 0.1-0.3 open as a storyboard from their source motif.
2026-11-06 02:15:18 +01:00

3.8 KiB
Raw Permalink Blame History

Rivet 0.4 implementation notes

Musical intent

Tell a producer's own motif as a story. The unit of work is a storyboard of blocks; each block has a role that says what it does for the story, and Rivet writes the notes for that role from the motif. Emotional interpretation stays with the producer.

Model

  • Meter. One time signature per session: 2/4, 3/4, 4/4, 5/4, 6/8, 7/8 or 12/8. Bar length is PPQ * 4 * beats / unit. Compound meters (6/8, 12/8) pulse in dotted quarters; strong positions, pickups and breaths use that pulse.
  • Motif. A monophonic phrase of 1–8 whole bars with per-note locks (whole note, pitch, rhythm). The bin holds 16 motifs.
  • Block. Motif, role, 1–8 bars, the join into the next block, a take number, up to three realized options, the chosen option, and a keep flag. A storyboard holds 32 blocks and 32 bars.
  • Roles. Statement, Answer, Departure, Return and Rest. Each role ranks the transformation families that suit it (statement: quote, displaced groove, changed ending; answer: call/response, changed ending, held back; departure: higher peak, displaced groove, fragment; return: familiar return, quote, room to breathe). The quote is always in the pool, so a statement can play the motif as written. Rest yields one silent option.
  • Realizing a block. The motif is tiled to the block length (notes crossing the end are shortened, or dropped when rhythm-locked), then developed. The seed mixes the session seed, the block's take and its position, so options are deterministic and differ between blocks. Harmony is read at the block's absolute position. The last sounding block follows the ending setting; other statements prefer an open last note.
  • Joins. Applied when the storyboard is composed, never stored in options. Breath ends the last note at least half a beat before the seam. Approach moves the last note one scale step next to the following first note. Pickup writes two half-beat notes in the last beat that move toward the following first note; it is skipped when anchors occupy that beat. Defaults follow the roles: into a departure a pickup, into a return an approach, around rests a cut, otherwise a breath.
  • Keep. Kept blocks are not rewritten when settings, harmony or neighbours change, unless their stored options no longer fit (for example after a meter change).

Editor

Header (key, scale, meter, tempo, play, loop, undo/redo, export), motif bin, timeline with role-coloured blocks and clickable seams, one large roll (the storyboard, or the selected motif for lock editing), inspector (block or motif), and tabs for generation, harmony and sound roles. Edits are synchronous; file dialogs run on a worker. Undo keeps the last 32 session states in the editor; continuous drags and typing collapse into one step. While the storyboard plays, an edit queues the new composition for the next bar line.

Compatibility

State version 4. Versions 1–3 are read leniently and upgraded: the source motif, a kept phrase and saved gestures enter the bin; an eight-bar phrase becomes an arc, a four-bar phrase statement and return. Branch history is dropped. Future versions are rejected without changing the current session. The CLAP ID and the story-session-v1 host field are unchanged.

Verification

Core tests cover role options and diversity, locks, a fully locked motif, harmony and endings, all meters, keys and lengths, templates, limits, joins, kept blocks, compound meters, motif removal, and v1/v3 migration. MIDI tests cover time signatures and compound-meter round trips. App tests cover queued switches at the meter's bar line. The CLAP ABI test restores a 6/8 storyboard session through host state. FL Studio routing and musical usefulness still need checks in the host (see FL Studio).