7.1 KiB
7.1 KiB
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
- Build with
python scripts/build-plugin.pyon Windows, or obtain a matching Windows artifact from the configured CI workflow. - Copy
Motif Storyboard.claptoC:\Program Files\Common Files\CLAP, or a CLAP location scanned by your FL Studio version. Close existing instances before replacing the binary. - 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. 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.