Hearing is proof: testing sound without fooling yourself
"It compiles and runs" is not the same as "it makes sound". FaustWave's house rule — for humans AND the assistant — is hearing is the proof: a DSP counts as working when a test note is audible, confirmed by ears or by the master meters read at the right moment.
The right moment matters more than it looks. A hard-earned lesson:
midi.note.playblocks until its note-off — the call returns after the note has ended.- The master peak-hold decays within a second or two.
- Therefore a meter read after a
midi.note.playcall always lands in the decay and shows ~zero — fake silence. An entire evening of bisecting was once spent chasing this artifact across three builds while every "silent" note was audibly playing.
The two reliable measurement windows:
- A held note —
keyboard.note.onsustains until you release it, so a meter read in between measures the live signal. - A loop — a playing sequencer pattern gives you an arbitrarily long window; read the meters mid-loop.
Prove it, hands-free
Run this with an instrument DSP running and routed (the previous sections' tutorial DSP works):
actions:
- action_id: keyboard.note.on
input: { note: 69, velocity: 100 }
label: "▶ 1. Hold a note (no note-off yet)"
- action_id: system.state
input: { sections: ["master"] }
save_as: meters
label: "▶ 2. Read the master meters WHILE it sounds"
- action_id: keyboard.notes.clear
input: {}
label: "▶ 3. Release the note"
Step 2's peakL/holdL show the live level — that's your objective
audibility proof. Values like 1e-5 mean genuinely nothing is sounding
(check routing, channel filter, mixer mutes — in that order).