The live node, and three workflows
analysis_bass — the numbers in the signal path
Offline is for decisions; live is for watching. The Bass Analyzer node (analysis_bass, category Analyzers) is a stereo passthrough with eleven bargraphs: momentary LUFS (BS.1770, 400 ms), crest over 1 s, energy share for all six bands, and L/R correlation in sub, fund and harm. Drop it in a Builder as an insert — input → analysis_bass → output — and put that Builder on a track's FX chain or the master rack; the Inspector shows the meters while it plays.
Six of the numbers are also control outputs (lufs, crest, sub_db, fund_db, harm_db, corr_sub), so a patch can react to them: auto-mono the low end when corr_sub drops, sidechain something on lufs.
The bundled demo ships Bass Analyzer.builder ready to insert:
actions:
- action_id: documents.list
input: {}
label: "▶ Find Bass Analyzer.builder in the project"
Then mixer.tracks.fx.add with the file as ref on the track you want to watch. Bands are 4th-order Butterworth (two cascaded 2nd-order stages) with 300 ms smoothing — the same filters as the offline analyzer.
Workflow 1 — the tweak loop
- Play the scene. 2.
analysis.capture { bars: 4, reference: "trap-808" }. 3. Change ONE thing (dsp.param.set, a fader, an insert param). 4. Capture again. 5. Keep what moved the number the way you meant.
The whole Around-the-World 808 was tuned this way: harm band below → harm_level up; sub above and "too thick" → an octave up and body_level down; crest 14 on the bass alone → the clipper insert. Four bars is enough; eight when the pattern is eight.
Workflow 2 — the sample audition
Before a sample goes into a kit:
actions:
- action_id: samples.list
input: {}
save_as: store
label: "▶ 1. List the store"
then analysis.sample { sha256 } per candidate. Rules that came out of the alarm-clock pack: hats, claps and snares must read "noise" with peakBinShare <= 0.03; a kick's strongestLowBinHz should sit above the 808 (a trap kick is a knock, not a sub); a sample whose crestDb is under 5 is a constant tone and will end hard — give it an envelope, or let the player's end-fade handle it.
Workflow 3 — the click hunt
Something crackles. Do not guess which instrument.
- Capture the mix; note the
stepscount and the onsets withisClickand a lowhfRelDb(a click on a bass note, not a hat). - Solo one track (
mixer.tracks.set { track_id, soloed: true }), capture again. A clean 808 reads astepscount of 0. - Move the solo until the steps appear. In the demo they were in the sampled 808 layer: the sample restarted on sample 0 while the previous hit still rang, and it ended without reaching zero — a player bug, fixed in the
soundfilenode (two read heads with a crossfade, end fade). The measurement went 3 → 0. - Remember that noise material always shows steps. For a kit, the number that counts is the
isClickon its low-frequency onsets, and after that the ear.
Where to go from here
- FaustWave — Recorder — the takes the analysis reads are Recorder files;
recordings.listis the picker. - FaustWave — Mixer & Master — solo, track inserts, the master rack the capture listens after.
- The Around the World book — every rule in this chapter with the measurement that made it.