Aurelia Overture and Velvet Circuit both build a Chorus the way audioeffects used to take one, and neither piece renders any more:
$ composer/preview.py --piece AureliaOverture out.wav
TypeError: Chorus._build() got an unexpected keyword argument 'depth_ms'
Aurelia dies three tracks in, on String Hall; Velvet Circuit dies on Neon Suitcase. Both are the first rack in their piece that reaches for a chorus, so the failure is the API and not the music.
audioeffects.Chorus is now:
_build(self, rate=0.8, depth=0.35, mix=0.815, delay_ms=8.8, tone_hz=3000.0, patch=None)
The racks pass depth_ms=, voices= and width=. depth is the survivor of depth_ms; there is no per-voice count and no width any more. It changed in audiocomponents cafcc57, "Phase 3: five modulation effects rebuilt, one dropped, two carried forward" — the compositions were not moved with it.
One more waiting behind it, found by reading rather than by running, because the Chorus stops the render first: Velvet Circuit's Ghost Projector builds Vibrato(source, rate=4.7, depth_semitones=0.06) and today's Vibrato._build takes depth, not depth_semitones. Everything else in both pieces checks out against the current signatures — TapeDelay still absorbs feedback/mix/wow/tone_hz through **options, and Saturation, Overdrive, Reverb, SlapbackDelay and Phaser all still take what the racks give them.
Why it is worth fixing rather than leaving
These are not just previews. pieces.py::load_piece is what reaper.py, verify_song.py and reaper.sh all go through, so neither piece can be played, generated or bounced either.
They are also two of the seven pieces in audioif's soundtrack render gate (tests/parity/capture_render_reference.py), which I have just repointed at this renderer for audioif#88. The gate now runs and grades six of eight pieces; these two come back failed, so a DSP change in audioif that moved Velvet Circuit's eleven hardware emulations would go unnoticed.
Note that a rack is a patch, embedded byte-for-byte in a generated .RPP — so changing these numbers changes how the piece sounds, and picking the new values is a musical decision, not a mechanical translation of the old ones.
Related: audiocomponents#83, a second seam where the soundtrack and today's audiocomponents disagree.
Aurelia Overture and Velvet Circuit both build a Chorus the way
audioeffectsused to take one, and neither piece renders any more:Aurelia dies three tracks in, on
String Hall; Velvet Circuit dies onNeon Suitcase. Both are the first rack in their piece that reaches for a chorus, so the failure is the API and not the music.audioeffects.Chorusis now:The racks pass
depth_ms=,voices=andwidth=.depthis the survivor ofdepth_ms; there is no per-voice count and no width any more. It changed in audiocomponentscafcc57, "Phase 3: five modulation effects rebuilt, one dropped, two carried forward" — the compositions were not moved with it.One more waiting behind it, found by reading rather than by running, because the Chorus stops the render first: Velvet Circuit's
Ghost ProjectorbuildsVibrato(source, rate=4.7, depth_semitones=0.06)and today'sVibrato._buildtakesdepth, notdepth_semitones. Everything else in both pieces checks out against the current signatures —TapeDelaystill absorbsfeedback/mix/wow/tone_hzthrough**options, andSaturation,Overdrive,Reverb,SlapbackDelayandPhaserall still take what the racks give them.Why it is worth fixing rather than leaving
These are not just previews.
pieces.py::load_pieceis whatreaper.py,verify_song.pyandreaper.shall go through, so neither piece can be played, generated or bounced either.They are also two of the seven pieces in audioif's soundtrack render gate (
tests/parity/capture_render_reference.py), which I have just repointed at this renderer for audioif#88. The gate now runs and grades six of eight pieces; these two come backfailed, so a DSP change in audioif that moved Velvet Circuit's eleven hardware emulations would go unnoticed.Note that a rack is a patch, embedded byte-for-byte in a generated
.RPP— so changing these numbers changes how the piece sounds, and picking the new values is a musical decision, not a mechanical translation of the old ones.Related: audiocomponents#83, a second seam where the soundtrack and today's
audiocomponentsdisagree.