Profile selection · WIP

Which profiles
should ship?

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.

Status: this page is deliberately WIP. There is no hardware capture yet, the song has not been chosen and no MP3 is published. Nothing here is a listening result or a final profile.

Method

One song, many profiles

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.

Run on the FM-1

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.

Capture and measure

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.

Listen blind

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.

Freeze three profiles

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.

Candidate profiles

NameVoicesModesPickupNoiseDragRole
HQ_887fullononreference / default
MQ_12125fullononintermediate
MQ_16165fullononbalanced release candidate
LQ_24244liteoffoffdense passages
LQ_32323liteoffoffmaximum polyphony candidate
FULL_32327fullononcontrol: 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).

Capture pipeline

profiles.json→MIDI CC profile→ FM-1 lab firmware→MIDI song→ P2 / UAC capture→WAV + 320k MP3→ results.csv
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.

Results

ProfileCPU maxLate halvesMP3Listening
HQ_8——pendingpending
MQ_12——pendingpending
MQ_16——pendingpending
LQ_24——pendingpending
LQ_32——pendingpending
FULL_32——controlcontrol

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.

Selection rule

GateRequirement
StabilityNo late halves/underruns in repeated takes; CPU below ~70% of the half-buffer in the worst passage.
SoundBlind preference for attack detail, bark, tuning and musical usefulness; LQ must not sound like a different instrument.
CoverageThree profiles: 8 high quality, 16 medium, 32 low (or fewer if 32 does not pass).
HonestyIf 32 full fails, the page says so and publishes the control capture.

What is still missing

Hardware

A physical FM-1 to flash with the lab image and measure. No capture exists yet.

Song

A MIDI file that exercises all practical cases within a short, repeatable take. To be chosen.

Captures

WAV/MP3 and CPU logs per profile. To be produced by the runner.