Files
bass-foundry/docs/rivet/fl-studio.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

109 lines
6.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# FL Studio acceptance test (Windows)
Record the FL Studio version, Windows version, plugin build revision, sample
rate, and audio buffer size with each test. These steps have not yet been run
against FL Studio in this environment.
## Install
1. Build with `python scripts/build-plugin.py` on Windows, or obtain a matching
Windows artifact from the configured CI workflow.
2. Copy `Rivet.clap` to
`C:\Program Files\Common Files\CLAP`, or a CLAP location scanned by your
FL Studio version. Close existing instances before replacing the binary.
3. In FL Studio's Plugin Manager, rescan plugins and locate Rivet.
Use an FL Studio version with CLAP support. Insert it as a generator.
## Creative workflow
- Open and close the editor repeatedly; verify keyboard input and controls work
at 100%, 150%, and 200% Windows display scaling, with no clipped content.
- Load the demo. The storyboard must show statement, answer, departure and
return; Play must loop all eight bars. The statement should quote the motif.
- Lock a motif note and confirm it appears unchanged (pitch, start, length) in
every block that develops the motif. Locks may override register/scale.
- Change a block's role, length (1–8 bars) and motif; try Another take and Keep.
Change the key: kept blocks must not change, the others must.
- Cycle each seam through Cut, Breath, Pickup and Approach and listen at the seam.
- Try 3/4, 6/8 and 12/8, all scales, and storyboards up to 32 bars.
- Undo and redo a series of edits, including a template rebuild and a meter change.
- Export the storyboard. Import it into the piano roll of an existing synth and
compare note timing, duration, velocity, length and time signature.
## Import and files
- Import a monophonic MIDI file exported from FL Studio at 96/480/960 PPQ.
- Import multitrack MIDI and select the intended note track.
- Verify useful errors for chords/overlaps, motifs longer than eight bars, a full bin,
unsupported meters, malformed files, and inaccessible paths.
- Cancel native dialogs. Try Unicode paths and the manual file-path controls.
- Export to an existing filename; confirm it is refused and the file is intact.
## Playback and state
- Confirm opening the editor and loading a project are silent until Preview.
- Preview, press Stop, and switch phrases rapidly; no stuck or overlapping voice.
- Preview while FL Studio's transport runs, then stop the host; audition stops.
- Enable host tempo following and change project tempo. Disable it and verify
local tempo controls audition speed. Host start must never trigger audition.
- At 44.1/48/96 kHz and several buffer sizes, confirm stable timing and no clicks
at ordinary note boundaries, dropouts, or non-finite output.
- Save a project containing locks, several motifs, kept blocks and joins.
Reopen it, confirm all state is restored and preview remains stopped.
- Save/load a JSON session; reject unsupported versions without changing the
current session. Test multiple plugin instances for independent state.
Use MIDI output mode to audition production synths, or export MIDI into the
piano roll. Native MIDI drag-out is outside this release.
## Version 0.2: contextual audition and composition
- Select MIDI output in Rivet. Where FL Studio exposes wrapper MIDI
ports, set its Output port to an unused port and the target synth's Input port
to the same value; receive notes on channel 1. These are FL Studio's documented
[wrapper input/output port controls](https://www.image-line.com/fl-studio-learning/fl-studio-online-manual/html/plugins/wrapper.htm).
This specific CLAP routing path is still unverified here; check it in the
installed FL Studio version. Keep the MIDI-file export path as fallback.
- Audition through the actual production patch with the surrounding project loop.
Host tempo follows BPM only; start audition at the desired point manually.
Switching a running audition waits for the next bar line.
- Test Loop on/off, same-pitch repeated notes, changing Internal/MIDI mode while
playing, rapid queued selections, Stop before a queued switch, host transport
stop, and project reload. There must be no hanging external notes.
- Import polyphonic harmony, verify gaps/changes/repetition, then compare open
and settled endings. Context is a pitch guide and does not itself emit chords.
- Test whole-note, pitch-only, and rhythm-only locks. Keep groove must retain
onset/duration; keep contour must prevent direction reversals except that a
register limit can flatten a step. Locks override other targets.
- Restore a version-1 session and a version-2/3 project with harmony, pins and
kept history: each must open as a storyboard built from its source motif.
- Evaluate artistic usefulness through the real patch: can the producer choose
a meaningful option per block, keep just the useful ones, and make it their own?
Automated diversity metrics do not replace that evaluation.
## Version 0.3: sound roles and controllers
- Try each role mode. Route channels 1 and 2 to separate patch parts (or choose
other distinct channels). Verify every original note belongs to one role.
A host configuration must preserve channels; MIDI file export provides named
role tracks when live routing cannot do this.
- Map CC20/21 explicitly to suitable macros in the target synths. Enable each
curve, edit points, compare Rise/Arch/Pulse, and verify the actual mapped
sound follows it. A curve describes controller values, not a guaranteed
timbral or emotional result. Imported MIDI controller automation is not read.
- While MIDI plays, stop, replace the profile/controller mapping, toggle audition
mode, and reload the project. Old notes must release and old controllers must
return to their specified stop values. Opening a project remains silent.
- Estimate patch attack/release by ear. Compare 0 ms and 40–100 ms attack,
including a same-pitch loop seam and a queued selection. Warmup occurs before
the local first beat. Re-audition after BPM changes.
- Export normally and confirm notes retain musical onset positions. Enable
compensated export: confirm one bar of lead-in, early MIDI triggers, separate
named tracks, and controller reset events. Compare through the same patch.
- Locks protect musical note attributes; attack/release compensation adjusts
MIDI trigger scheduling for the patch. Judge the audible onset against the
surrounding groove rather than expecting every trigger to stay on the grid.
- Evaluate whether the storyboard still feels like the same idea with another
patch.
The internal voices and the automated checks cannot establish artistic quality.