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
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.
65 lines
3.8 KiB
Markdown
65 lines
3.8 KiB
Markdown
# 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](fl-studio.md)).
|