Skip to content

gen: retune for the ADSR fix, and the new instruments in the shipped pieces - #339

Merged
mishan merged 2 commits into
masterfrom
pieces
Oct 4, 2026
Merged

mishan merged 2 commits into
masterfrom
pieces

Conversation

@mishan

@mishan mishan commented Oct 4, 2026

Copy link
Copy Markdown
Owner

Two things for the shipped pieces: a survey of what #337 (env::adsr following its trigger) changed, with retuning where it mattered, and the new instruments where they fit.

The ADSR survey

I rendered every piece for 240 s with the pre-#337 envelope and the current one.

  • 16 of 40 are bit-identical.
  • 7 differ inaudibly, more than 35 dB down.
  • The changes that matter are almost all basslines: sixteenths and octave figures on instruments whose decay is longer than the note. They used to play out the decay; now they release at the note's end, so they came out tighter and 0.6–2.6 dB quieter.
piece instrument before the retune release now channel vs. original
pearl bass -2.6 dB 760 ms +0.2 dB
seq bass -2.1 dB 760 ms -0.3 dB
sunrise bass / pulse -1.6 / -1.0 dB 400 / 390 ms +0.0 / +0.1 dB
boombox bass -1.2 dB 450 ms +0.2 dB
warehouse bass -1.7 dB 450 ms +0.1 dB
anthem bass / pluck -0.6 / -1.0 dB 220 / 360 ms +0.0 / +0.0 dB
riviera clav -1.0 dB 210 ms +0.1 dB
  • Why the release: lengthening the release, rather than the notes, keeps each note's articulation and lets it ring out about as long as the old decay did. Longer notes would turn into slides on these mono basses.
  • Left as is: mirrorball's section and round's low pad changed by under 1 dB (short notes on slow attacks) and are left alone.

New instruments

  • Glue master: the eight pieces that ended in fx/limiter.dsp (boombox, mirrorball, outrun, pearl, philly, riviera, sunrise, warehouse) now end in fx/glue.dsp. Its ceiling is the old limiter's, and its makeup is set so each piece renders within 0.05 dB of its original level.
  • philly: the organ is tonewheel.dsp, with drawbars at the old additive organ's harmonics, through the same rotary with its new drive at 1.
  • pearl: the DX electric piano is dx5.dsp. It needed amp 82 to match the old one's level.
  • free: the sixth instrument is the tonewheel.
  • Each swapped instrument is level-matched to what it replaced, within 0.3 dB.

Left alone on purpose

  • sunrise and riviera keep their Solina. Both pieces are about a string machine; the Violins ensemble would change what they are.
  • philly's horns stay on brass.dsp. The piece drives its fall knob, which horns.dsp doesn't have.
  • ebb's drone stays on organ0. It fades in over 700 ms, and the tonewheel has no attack setting.
  • The game-music pieces keep their chip sound.
  • No sampled instruments in shipped pieces: a demo shouldn't need a download to make sound.

Testing

  • Every changed piece renders with no clipped samples, within 0.05 dB of its original overall level.
  • ctest -R "gencheck|dsp|fx" passes.
  • 60 s before/after pairs for every changed piece are in the worktree's survey/ folder (not committed).

mishan added 2 commits October 4, 2026 15:38
Since #337 a short note on an instrument whose decay is longer than the
note releases when the note ends, where it used to play out the decay
first. The basslines (sixteenths and octave figures) were voiced
against the old behavior and came out 0.6 to 2.6 dB quieter and
clipped. Each affected instrument's release is lengthened to the value
whose channel level renders within 0.3 dB of the old one: pearl's and
seq's bass 760 ms, sunrise's bass 400 and pulse 390, boombox's and
warehouse's bass 450, anthem's bass 220 and pluck 360, riviera's clav
210.
The eight pieces that ended in fx/limiter.dsp end in fx/glue.dsp, its
ceiling the limiter's and its makeup set so the piece renders within
0.05 dB of its level before env::adsr changed. philly's organ is
tonewheel.dsp, drawbars at the old organ's harmonics, through the same
rotary with its valve amp pushed a little; pearl's DX piano is dx5.dsp;
free's sixth instrument is the tonewheel. Each at the level of what it
replaced. The Solina in sunrise and riviera stays a Solina: those
pieces are about a string machine.
@mishan
mishan merged commit 3797c40 into master Oct 4, 2026
20 checks passed
@mishan
mishan deleted the pieces branch October 4, 2026 23:15
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant