Chapter 13 — Two Albums, Distinct Musical Identities

An album renderer needs two things that pull against each other: a shared engine, and songs that don’t sound like each other. Reusing the sample loading, event scheduling and export code is obviously good — that’s an afternoon saved per track. Reusing the form is the trap, and it’s a comfortable one, because the twelfth track renders without complaint and the record quietly becomes one long variation on the first idea you had.

Sign-Off and The Quiet Hours come out of the same staged workflow and sound nothing alike, which is the point of putting them side by side here. Sign-Off is an imperfect late-night broadcast: steady drum attacks, worn pitched sources, room for pieces that drift. The Quiet Hours puts piano in front, uses strings selectively, and shapes its timing around phrases rather than a grid.

Give each track a reason to exist

The Sign-Off specifications carry individual chord banks, motifs, answering phrases, section lists and production settings. Rabbit Ears and Vertical Hold take the heaviest warble; elsewhere the damage backs off in favour of thinner textures, gentler movement, or no drums at all. A strong identity doesn’t require the same intensity everywhere — it requires the intensity to mean something when it arrives.

The Quiet Hours varies meter, register, piano pattern, phrase length and where the strings come in. Slow Rain writes its events through its own path; the other tracks have explicit specifications in scripts/album_v2/quiet_hours.py. Shared playback machinery does not oblige you to share composition machinery.

Before rendering anything, describe the lead idea and say what each section is for. A score table will happily show you twelve different parameter sets, and different parameters are not the same thing as musical contrast — the numbers can vary while the record stays static. Listen to the sequence and ask what each track adds that the one before it didn’t.

Prepare the instruments

The Quiet Hours uses Salamander Grand Piano and VSCO Community Edition strings. Run the preparation script and the preflight from the repository root:

python scripts/prepare_open_instruments.py --asset-root /path/to/studio-assets
python scripts/check_album_assets.py --album quiet-hours --asset-root /path/to/studio-assets

The preparer downloads pinned source revisions and keeps their licence records. It selects the piano zones the scores actually need, applies onset offsets and retuned root mappings, and converts everything to stereo 44.1 kHz float WAVs. For the strings it selects quiet sustain layers, normalizes them, and extends the sustains with crossfades so a long note holds without wobbling.

What it does not do is implement the complete source SFZ player — the pedal behaviour, sympathetic resonance and hammer noise all stay behind. This is a prepared instrument built from those recordings, not an emulation of the original library, and that distinction belongs in your credits as much as in your head.

Speaking of which. The piano source is Salamander Grand Piano v3 by Alexander Holm, with mapping by kinwie and retuning by Markus Fiedler, under CC BY 3.0. Keep those credits, the licence link and a description of your changes with any shared performance. VSCO Community Edition is by Sam Gossner/Versilian Studios and Simon Dalzell/Ivy Audio, with sample cutting by Elan Hickler/Soundemote, under CC0. Full source links and notices live in THIRD_PARTY.md.

Sign-Off needs three separately supplied LM-2 one-shots — kick.wav, snare-m.wav and hhclosed.wav under Samples/LM-2. Its pitched sources are synthesized, so that’s the entire external dependency. The public repository contains code, not sample libraries.

Render one track, then the record

python scripts/album_v2/render.py --album quiet-hours --track 2 --asset-root /path/to/studio-assets --output-dir Tracks/albums

Drop --track 2 to render the whole album. What lands on disk separates decisions from sound, exactly as the last eleven chapters have been arguing:

The Quiet Hours/
    Sessions/02 Slow Rain/
        score.json
        dry/piano.wav
        dry/strings.wav
        stems/piano.wav
        stems/strings.wav
        stems/room.wav
        mix-float.wav
        manifest.json
    Masters/02 Slow Rain.wav
    Listening/02 Slow Rain.mp3

Dry buses preserve the performed sources. Processed stems preserve their contributions to the float mix. The manifest records the specification, the code and score fingerprint, asset hashes, render times and delivery measurements — everything you’d need to answer “what is this file, exactly?” long after you’ve forgotten.

The piano and strings use fixed gains across the album, with the strings about 14 dB behind the piano in the Slow Rain reference. Final delivery gain then brings each track toward its loudness target, subject to the peak ceiling from Chapter 12. It does not individually normalize every quiet note or instrument, which is how a record keeps its dynamics between tracks as well as within them.

Reuse a stage deliberately

Use --remix when you’ve changed only mix decisions. It reads the existing dry files, so it cannot apply a change to notes, timing or instrument sources — and it won’t warn you that you’ve edited a melody it isn’t going to render. Know which stage your change lives in before you pick the flag.

Use --resume to skip tracks whose fingerprint, master hash and recorded asset hashes all still match. And keep a separate output folder for any comparison you want to preserve, because the renderer’s job is to produce the current version, not to protect the previous one from you.

The seed strategy from Chapter 9 localizes randomness by track and part, and explicit voice IDs keep overlapping note boundaries paired. Those mechanisms support repeatability. Recording your source versions and keeping the dry files is what completes it.

Listen at album scale

Each record runs twelve tracks: about 28:19 for Sign-Off, 25:19 for The Quiet Hours. The website’s custom album players let a listener pick a track or ride the whole sequence, and starting one album pauses the other.

Check the transitions and the endings, not only the songs. A technically flawless export can still contain a phrase that repeats twice too often, a texture that turns tiring at minute three, or two tracks in a row that open the same way. The delivery checks cover format, finite audio, loudness, true peak, tails and float-stem reconstruction. Every musical decision on the record is still yours, made with headphones on, in order, at the same volume.


Next — Chapter 14: AI Collaboration and a Clear Production Record.