Files
bass-foundry/docs/rivet/theory/README.md
T
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

5.7 KiB
Raw Blame History

Theory: perceptual identity as a compositional resource

The research and local reference work are consolidated in psychoacoustics and creative direction and Devath measurements. This document connects those findings to implementation choices and their practical limits.

Findings and their interpretation

  • Expectation is contextual. Recognition and deviation can both be rewarding; a mathematically novel note sequence is not automatically useful music.
  • Groove depends on how a pattern is heard against an orienting frame. Intermediate syncopation was preferred in particular experiments, not established as a universal genre-independent optimum.
  • Timbre can carry motion and contribute tension independently of MIDI pitch. Brightness, roughness, noisiness, loudness, and harmonic stability are distinct.
  • Relative timing helps determine which events form one perceived stream. Passing a gesture between sound roles should preserve chosen connections.
  • Preference depends on experience and culture as well as sensory mechanisms. Musical rules should inform experiments rather than rank artistic worth.

Primary research: Cheung et al., Witek et al., Farbood and Price, Elhilali et al., and McDermott et al.. The genre-specific design connections are hypotheses, not reported findings from those studies or claims about Devath's intent.

What the references establish

The seven local FLACs have measured differences in level, attacks, and broad spectral texture. HENKA and Phantasy contain substantial reductions followed by returns; Petals retains more consistent activity through much of its early span. These observations motivate exploring both contrast and continuous development. They do not identify exact notes, chords, emotional meaning, or melodic roles.

Implemented creative model (0.4)

  • A storyboard tells one motif through roles: statement (recognition), answer (reply), departure (contrast: register, rhythm, fragments), return (arrival), and rest (space). This puts the recognition/space/contrast/return findings directly on the timeline instead of hiding them in a task menu.
  • Seams between blocks carry explicit joins (breath, pickup, approach), so connection is a visible decision rather than an accident of concatenation.
  • Two sound roles can share or answer a motif through explicit routing. Each role has a separate MIDI channel, gate, velocity response, octave offset, and patch timing profile. The roles are user-assigned, not separated from mixed audio.
  • Each role can carry an optional, explicitly mapped MIDI CC trajectory. The tool sends controller data; the producer binds it to a synth macro. An internal voice does not simulate an arbitrary synth's timbre.
  • Patch attack compensation is scheduled using a short lead-in, and estimated release is accounted for when setting note-off times. These are editable timing estimates, not an automatic model of the target patch. Re-audition after tempo changes because millisecond offsets are compiled at the audition tempo.
  • Musical export stays on its original grid by default. Optional compensated export adds one bar of lead-in so early triggers have valid nonnegative MIDI times.

Producer workflow and evaluation

Import a motif -> lock what defines it -> lay out roles on the storyboard -> pick an option per block and set the joins -> keep what works, take again where it does not -> distribute sound roles and map controllers -> audition through real patches -> export. Compare alternatives against the same surrounding loop and listening level. The useful outcome is a section the producer can own and develop further.

All mappings and compensation are explicit. Original reference audio remains local. The model does not claim source separation, automatic emotion recognition, universal quality scoring, or a verified melodic transcription of Devath's tracks.

Concrete limits and implementation

A motif is 1–8 bars; a storyboard is up to 32 blocks and 32 bars in one of seven meters. The bin holds 16 motifs. Each block stores up to three options. Sessions from versions 1–3 migrate to version 4; controller output stays disabled by default.

Role assignment partitions existing notes, so it preserves a readable motif before sound design. It is not source separation or independent counterpoint. Controller curves span the phrase, interpolate at 32nd-note intervals and exact control points, and reset to explicit stop values. Their effect depends entirely on the synth mapping. Gates are capped at subsequent triggers in the same role; estimated release cannot guarantee that a patch becomes silent at that point. Negative attack triggers receive a warmup and a separate repeated-loop schedule.

Composition and performance compilation run away from the audio callback. The callback uses fixed event storage and bounded control queues. Regression checks cover storyboard limits and joins, migration, locks, two-role event identity, MIDI channels/controller export, warmup/loop timing, mapping resets, and allocation-free rendering. Actual patch perception, FL Studio routing, and producer usefulness still require listening in the target workflow.

For implementation, see creative history, performance scheduling, and FL Studio acceptance checks.