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.
109 lines
6.5 KiB
Markdown
109 lines
6.5 KiB
Markdown
# 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.
|