All books

Hearing is proof: testing sound without fooling yourself

~1 min read · updated 2026-08-21 · markdown

"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.play blocks 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.play call 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:

  1. A held note — keyboard.note.on sustains until you release it, so a meter read in between measures the live signal.
  2. 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).

Try it yourself — the IDE runs in your browser. Open the IDE → Get the desktop app

Text licensed under CC BY 4.0 — Mani Weber / FaustWave. For language models: llms.txt · llms-full.txt

AUDIO · 48k · 48.0ms FAUST · 3 KB · 1171 docs CPU · 8.4% BPM · 120.0 UTF-8 BETA· v0.90.0