One MIDI song, the same hardware, every candidate profile. Each take is rendered by the FM-1 itself, captured as 320 kbps MP3, and accompanied by CPU/underrun data. The final release will hardcode the best three; this page will hold the evidence.
The same MIDI file exercises single notes, bass, chords, sustain, tremolo and dense passages. It is chosen later; the runner accepts any Standard MIDI File.
The lab firmware sets each profile over USB-MIDI CCs, plays the song on the same MIDI port and records the P2 analog output through an audio interface. UAC is optional.
ffmpeg records WAV, converts to a loudness-matched 320 kbps MP3, and the run log stores CPU load, max render µs, late halves and active voices before/after each take.
MP3s are labelled by code, not by profile name and loudness-matched. Listeners rate attack detail, bark, tuning, noise and musical usefulness without knowing which profile is which. The timbre pass is dry (tremolo off); a second pass can include tremolo if needed.
Pick the highest quality that stays under the CPU/underrun safety margin, plus a 16-voice and a 32-voice option if the measurements support them. The release hardcodes them.
| Name | Voices | Modes | Pickup | Noise | Drag | Role |
|---|---|---|---|---|---|---|
| HQ_8 | 8 | 7 | full | on | on | reference / default |
| MQ_12 | 12 | 5 | full | on | on | intermediate |
| MQ_16 | 16 | 5 | full | on | on | balanced release candidate |
| LQ_24 | 24 | 4 | lite | off | off | dense passages |
| LQ_32 | 32 | 3 | lite | off | off | maximum polyphony candidate |
| FULL_32 | 32 | 7 | full | on | on | control: expected to overrun |
Values are provisional; they are the starting matrix, not the final answer.
The profiles are defined in tools/lab/profiles.json. The test song must not
contain CC20..27 (those are the profile controls).
python3 tools/lab/run_profiles.py \ --midi-out "FM-1 Reed LAB" \ --audio-input "-f avfoundation -i :2" \ --song assets/lab/song.mid \ --profiles tools/lab/profiles.json \ --out captures/lab --repeats 3 --blind
See the lab build page for the serial protocol, build command and safety notes.
| Profile | CPU max | Late halves | MP3 | Listening |
|---|---|---|---|---|
| HQ_8 | — | — | pending | pending |
| MQ_12 | — | — | pending | pending |
| MQ_16 | — | — | pending | pending |
| LQ_24 | — | — | pending | pending |
| LQ_32 | — | — | pending | pending |
| FULL_32 | — | — | control | control |
No row will be filled until a real FM-1 capture exists. The page will publish the MP3, the CPU/underrun log and the listening notes for each profile.
| Gate | Requirement |
|---|---|
| Stability | No late halves/underruns in repeated takes; CPU below ~70% of the half-buffer in the worst passage. |
| Sound | Blind preference for attack detail, bark, tuning and musical usefulness; LQ must not sound like a different instrument. |
| Coverage | Three profiles: 8 high quality, 16 medium, 32 low (or fewer if 32 does not pass). |
| Honesty | If 32 full fails, the page says so and publishes the control capture. |
A physical FM-1 to flash with the lab image and measure. No capture exists yet.
A MIDI file that exercises all practical cases within a short, repeatable take. To be chosen.
WAV/MP3 and CPU logs per profile. To be produced by the runner.