Files
bass-foundry/docs/fl-studio.md
T
nvrl 3281535a04
Check and build / core (push) Successful in 51s
Check and build / plugin (ubuntu-latest) (push) Failing after 32s
Check and build / plugin (windows-latest) (push) Canceled after 0s
feat: add Motif Storyboard composition plugin
2026-11-05 22:39:36 +01:00

115 lines
7.1 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 `Motif Storyboard.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 Motif Storyboard.
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, generate three continuations, and audition each. The opening
must match the source; candidates should be audibly related and differ later.
- Lock a source note, regenerate, and verify pitch, velocity, start, and duration
are unchanged at each repeated position. Locks may override register/scale.
- Try four/eight bars, all scales, different seeds, and rhythm preservation.
- Accept candidate A; accept B; undo/redo. Regenerate with a different seed and
confirm accepted work remains available.
- Export selected and accepted MIDI separately. Import each into the piano roll
of an existing synth and compare note timing, duration, velocity, and length.
## 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 two bars,
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, candidates, an accepted result, and history.
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 Motif Storyboard. 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 local two-bar boundary or end.
- 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.
- Pin bars 3–4 from proposal A, select B, and preview/export the combined phrase.
Regenerate with another seed: pinned notes must remain exact. Change the motif
or phrase length: pins clear. Restore a version-1 session and a version-2
project with harmony, pins, and kept history.
- Evaluate artistic usefulness through the real patch: can the producer choose
a meaningful alternative, retain just its useful section, and make it his own?
Automated diversity metrics do not replace that evaluation.
## Version 0.3: gestures, branches, roles, and controllers
- Save a named source gesture and a developed two-bar gesture. Export the library
and import it into another instance: notes, locks, and performance choices
should survive; recalling keeps the destination harmony.
- Save a branch, apply Subtract to bars 3–4, restore the parent, and try Longer
gates instead. Both children should remain available. Restore each after
saving/reopening the host project. Remove leaves without losing their parent.
- 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 a saved gesture still feels like the same idea with another
patch, and whether branching makes it easy to retain useful exceptions.
The internal voices and the automated checks cannot establish artistic quality.