The first Acid hardly squelched. Its tanh ate the resonance, and its
sweep fell evenly in octaves. The user pointed at the acid tone of
nodeseq.com/studio, so the node now follows how that voice is built
from Web Audio parts.
- The filter is a two-pole 12 dB low-pass with Q in dB up to 17.5,
like a BiquadFilterNode. The ladder and its tanh are gone.
- One ADSR drives both the volume and the filter. The sweep falls
back in Hz, fast from the top and long at the bottom.
- Every note glides from the one before. A new note cuts the last
one off, and the node plays its release itself.
- Knobs: cutoff, reso, env, attack, decay, sustain, release and
glide. The defaults are the acid preset of nodeseq.
- Accent, slide, drive and tuning are dropped. Old projects were not
kept, the user had only placed the node for a try.
- A hook __gm.acid.compare renders a line offline through our
worklet and through the nodeseq graph, for e2e 34.
Found on the way: in Chrome an oscillator that starts inside a
render block runs its first samples at 440 Hz. The comparison evens
this out.
Tests:
- tsc, eslint, Prettier clean
- Unit: acid.test.ts rewritten with 12 tests. chip-presets and
sound-library follow the new node.
- e2e 34 on melektaus-atx: ALL PASSED, 148 checks. Against nodeseq
the loudness per 10 ms window is at most 0.14 dB apart, and 95 to
97 % of the windows are equally bright.
- With a linear Q instead of Q in dB the comparison is red.
- Gate on melektaus-atx: green, 306 files, 4752 tests. That is
4754 less the 14 old and plus the 12 new Acid tests.
- Not checked: the sound by ear, the master chain of nodeseq, the
keyboard and a bake with the new node.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The instruments could only come near a 303 with a Chip, a Filter and
two envelopes. The biquad filter does not saturate, every note strikes
anew, and there was no slide and no accent.
- Acid is a new instrument node that plays a saw or a square through a
four-pole ladder low-pass with tanh saturation, oversampled twice.
Knobs: cutoff, resonance, env mod, decay, accent, tuning and slide
time.
- An accent comes from the velocity, from 0.9 on. It is louder, opens
the filter further with a shorter decay, and accents close behind
each other build up.
- Two notes that touch or overlap slide. Each note stays a voice of
its own, so the scheduler is unchanged. The notes of a line share
one synth in the worklet, and the new voice takes it over from its
first sample on.
- The node sets its own volume, so it needs no envelope behind it.
- The graph shows it as a device with the filter curve at rest and at
the top of the sweep.
- A preset Acid Bass puts an Acid in front of a short echo.
Tests:
- tsc, eslint, Prettier clean
- Unit: 14 new tests in acid.test.ts for pitch, low-pass, resonance,
sweep, accent, slide and the handover between two voices.
- e2e 34 on melektaus-atx: ALL PASSED, 148 checks (3 new). The
handover sits on sample 4800 and jumps by 0.0012, of three notes
only the second slides.
- Without the handover, or with a slide that strikes anew, the unit
tests are red.
- Gate on melektaus-atx: tsc, eslint, Prettier clean, 4753 of 4754
tests green. The red one was sound-library.test.ts, which did not
know the new slid count in the stats. Fixed, and the file alone
is green again with 128 tests. No second full gate.
- Not checked: the sound by ear, slide at the keyboard, a bake with
Acid, the CPU load of many notes.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>