Skip to content

Aurelia Overture and Velvet Circuit cannot render: their Chorus racks predate the effects rebuild #8

Description

@bdbarnett

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.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions