From de765267c5f28b7a3312f690c13df2bb1c6c1806 Mon Sep 17 00:00:00 2001 From: Anachronaut Date: Fri, 4 Sep 2026 16:13:44 -0400 Subject: [PATCH] Lunar Porter's crash is a designed sound now, not a guessed one Crash1.json, made in soundThing and converted by SoundPatch. Two noise oscillators fifteen cents apart, a filter opened 11.6 kHz by the modulation envelope, and the LEVEL shaped by that same envelope rather than by the amplitude one - which is exactly the freedom the routed level was for, and not a thing the engine could express a week ago. It peaks at 10,501 and is gone in about six tenths of a second, inside the eight tenths the pieces are in the air. The guessed one wandered between 1600 and 8200 and sounded like a drain. The patch predates the gate field, so the program's own trigger write is what makes it a one-shot - which is the argument for having put it there rather than leaving it to the patch. LowFuel.json is here too, saved from the newer soundThing with the gate and LFO mode in it, and is not wired to anything yet. Both JSONs live beside the tables they produce. The build has never needed soundThing and still does not, but a sound can now be regenerated, or simply read, without going to find the editor first. --- Crash1.json => Programs/Sounds/Crash1.json | 0 LowFuel.json => Programs/Sounds/LowFuel.json | 0 Programs/Sounds/boom.asm | 48 ++++++++++---------- README.md | 7 +-- 4 files changed, 28 insertions(+), 27 deletions(-) rename Crash1.json => Programs/Sounds/Crash1.json (100%) rename LowFuel.json => Programs/Sounds/LowFuel.json (100%) diff --git a/Crash1.json b/Programs/Sounds/Crash1.json similarity index 100% rename from Crash1.json rename to Programs/Sounds/Crash1.json diff --git a/LowFuel.json b/Programs/Sounds/LowFuel.json similarity index 100% rename from LowFuel.json rename to Programs/Sounds/LowFuel.json diff --git a/Programs/Sounds/boom.asm b/Programs/Sounds/boom.asm index c6bd568..a12c77f 100644 --- a/Programs/Sounds/boom.asm +++ b/Programs/Sounds/boom.asm @@ -1,4 +1,4 @@ -; BoomPatch, converted from External/soundThing/patches/Drums/Kick808.json by SoundPatch. +; BoomPatch, converted from Programs/Sounds/Crash1.json by SoundPatch. ; Designed in soundThing, where it can be heard. Do not edit the numbers ; here: change the patch and convert it again. @@ -6,50 +6,50 @@ BoomPatch: 0d47 ; how many pairs follow - 0x50 0x01 ; the level is the amplitude envelope - 0x00 0d0 ; oscillator 0, waveform + 0x00 0d5 ; oscillator 0, waveform 0x01 0d255 ; gain 0x02 0d128 ; duty 0x03 0d128 ; detune, in cents - 0x04 0d127 ; octave + 0x04 0d130 ; octave 0x05 0d1 ; on 0x06 0d0 ; what moves its width 0x07 0d128 ; and how far 0x08 0d2 ; what moves its pitch - 0x09 0d197 ; and how far + 0x09 0d147 ; and how far 0x0A 0d0 ; what moves its gain - 0x0B 0d128 ; and how far + 0x0B 0d255 ; and how far 0x10 0d5 ; oscillator 1, waveform - 0x11 0d146 ; gain - 0x12 0d128 ; duty - 0x13 0d128 ; detune, in cents - 0x14 0d128 ; octave + 0x11 0d255 ; gain + 0x12 0d140 ; duty + 0x13 0d126 ; detune, in cents + 0x14 0d129 ; octave 0x15 0d1 ; on 0x16 0d0 ; what moves its width - 0x17 0d128 ; and how far - 0x18 0d0 ; what moves its pitch - 0x19 0d128 ; and how far + 0x17 0d0 ; and how far + 0x18 0d2 ; what moves its pitch + 0x19 0d246 ; and how far 0x1A 0d0 ; what moves its gain - 0x1B 0d128 ; and how far - 0x20 0d4 ; amplitude envelope, attack - 0x21 0d79 ; decay + 0x1B 0d255 ; and how far + 0x20 0d180 ; amplitude envelope, attack + 0x21 0d40 ; decay 0x22 0d0 ; sustain - 0x23 0d31 ; release + 0x23 0d4 ; release 0x30 0d4 ; modulation envelope, attack - 0x31 0d35 ; decay + 0x31 0d99 ; decay 0x32 0d0 ; sustain - 0x33 0d13 ; release + 0x33 0d180 ; release 0x40 0d1 ; filter, on 0x41 0d0 ; type: 0 low, 1 high, 2 band - 0x42 0d92 ; cutoff, in hertz - 0x43 0d10 ; resonance - 0x44 0d0 ; what moves the cutoff - 0x45 0d128 ; and how far, in hertz + 0x42 0d240 ; cutoff, in hertz + 0x43 0d148 ; resonance + 0x44 0d2 ; what moves the cutoff + 0x45 0d255 ; and how far, in hertz 0x46 0d0 ; what moves the resonance 0x47 0d128 ; and how far 0x60 0d0 ; LFO 0, on 0x61 0d0 ; waveform - 0x62 0d127 ; rate, in hertz + 0x62 0d220 ; rate, in hertz 0x70 0d0 ; LFO 1, on 0x71 0d0 ; waveform 0x72 0d127 ; rate, in hertz + 0x50 0d2 ; what shapes the level diff --git a/README.md b/README.md index 20b2630..f42ce24 100644 --- a/README.md +++ b/README.md @@ -27,7 +27,7 @@ wrote Asm.sbx: program 7533, data 4099, labels 555 | [`Source/Patch`](Source/Patch) | SoundPatch, which turns a soundThing patch into a table the sound device takes | | [`Programs/Examples`](Programs/Examples) | Programs to read: hello, a calculator, Fibonacci, a prime sieve, Life, the colours | | [`Programs/Libraries`](Programs/Libraries) | Code included by name rather than linked, since there is no linker | -| [`Programs/Sounds`](Programs/Sounds) | Patch tables, converted from soundThing and checked in so the build never needs it | +| [`Programs/Sounds`](Programs/Sounds) | Patches as soundThing saved them, and the tables SoundPatch made from them, both checked in so the build never needs soundThing | | [`Programs/Loader`](Programs/Loader) | The standalone loader CosmOS grew out of | | [`Programs/CosmOS`](Programs/CosmOS) | The operating system, its applications, and the native assembler | | [`Programs/testPrograms`](Programs/testPrograms) | What the test suite drives | @@ -329,8 +329,9 @@ A field the tool does not recognise stops it rather than being skipped, because that has moved on would otherwise produce a table that quietly means something else. **The build does not depend on it.** soundThing lives in its own repository and is not -required to build anything here: the tables it produces are checked into `Programs/Sounds`, -and the tool is for when a sound is being changed. +required to build anything here. `Programs/Sounds` holds both halves - the patch as soundThing +saved it and the table made from it - so a sound can be regenerated, or read, without going +and finding the editor first. The tool is for when a sound is being changed. ## Checking Assembly: SplitLint