Independent offline research notebook

Inside the sound engine.

Turn the DSP research into musical engines with useful preset libraries, then test four logical synth tracks sharing the existing finite voice pool without sacrificing safe rollback.

The lab's focus has shifted from protocol archaeology to sound. The FM4 kernel family now has the musical controls the first auditions lacked — per-note ratios, detune, velocity, attack and brightness envelopes, interpolated sine reads — proved by a nineteen-second sample-exact song, and the two features that make it warm — interpolated sine reads and per-note brightness decay — now also run in the native in-firmware FM4 path that the preset auditions and bank comparisons use. A lush stereo FDN reverb passes exact kernel verification as the design study for the recovered global-reverb seam, and user-supplied patch banks audition the new oscillator through their own retained shells in before/after pairs. Four independent downstream patch strips and hardware qualification remain open.
TARGET / IC NXP DSP56724 dual DSP56300 cores
Core clock
246 MHz
Audio block
32 frames
Host
STM32F7
5host + DSP versions cross-mapped
48,046.875 Hzdecoded ESAI frame rate
15 / 21Project probes audible in the current profile
4stock sample voices active together
62verified CPU-emulated clips
903,500sample-exact warm-song samples

CPU-emulated DSP output

Hear the evidence

Matched stock-program probes plus clean-room DSP56300 algorithm kernels. Headphones recommended.

Custom FX · 14 Oct 2026

Custom FX: reverb, tape delay, lo-fi, chorus

The first custom effects built to actually run on the Circuit: code and settings in the DSP's internal memory, only the tape echo buffer in external memory (16-bit audio). They sit alongside stock: FX view pad 32 opens a Custom FX page with 8 reverb and 8 tape delay presets (each takes the stock slot while chosen, fed by the same sends), plus lo-fi and chorus presets per Synth/MIDI track. With everything off, the output is bit-identical to the build without them. The same phrase, stock patches with a pluck on MIDI 1, rendered through the whole emulated firmware. Not heard on hardware yet.

Custom FX · whole firmware

Reverb · Hall

Custom FDN reverb "Hall", reverb sends on Synth 1, Synth 2 and MIDI 1. Compare with "Stock delay + reverb" below.

14 OCT 2026 · New: custom FDN reverb4 bars Am–F–C–G, 104 BPM · stock patches + pluck · emulator
Custom FX · whole firmware

Reverb · Plate

Custom FDN reverb "Plate", reverb sends on Synth 1 and MIDI 1.

14 OCT 2026 · New: custom FDN reverb4 bars Am–F–C–G, 104 BPM · stock patches + pluck · emulator
Custom FX · whole firmware

Dry

No custom FX, no sends. The reference for everything below.

14 OCT 2026 · New: custom FX bundle4 bars Am–F–C–G, 104 BPM · stock patches + pluck · emulator
Custom FX · whole firmware

Lo-fi · tape

Synth 1 Cassette, Synth 2 Warm tape, MIDI 1 Worn tape.

14 OCT 2026 · New: custom FX bundle4 bars Am–F–C–G, 104 BPM · stock patches + pluck · emulator
Custom FX · whole firmware

Lo-fi · digital

Synth 1 12-bit, Synth 2 Old sampler, MIDI 1 8-bit.

14 OCT 2026 · New: custom FX bundle4 bars Am–F–C–G, 104 BPM · stock patches + pluck · emulator
Custom FX · whole firmware

Lo-fi · radio and dusty

Synth 1 Radio, Synth 2 and MIDI 1 Dusty blend.

14 OCT 2026 · New: custom FX bundle4 bars Am–F–C–G, 104 BPM · stock patches + pluck · emulator
Custom FX · whole firmware

Chorus · Juno

Synth 1 Juno I, Synth 2 Juno II, MIDI 1 Juno I+II.

14 OCT 2026 · New: custom FX bundle4 bars Am–F–C–G, 104 BPM · stock patches + pluck · emulator
Custom FX · whole firmware

Chorus · ensemble

Synth 1 Ensemble, MIDI 1 Slow wide.

14 OCT 2026 · New: custom FX bundle4 bars Am–F–C–G, 104 BPM · stock patches + pluck · emulator
Custom FX · whole firmware

Stock delay + reverb

Stock effects only, for comparing with the tape delays.

14 OCT 2026 · New: custom FX bundle4 bars Am–F–C–G, 104 BPM · stock patches + pluck · emulator
Custom FX · whole firmware

Tape delay · Space echo

Delay sends on Synth 1, Synth 2 and MIDI 1.

14 OCT 2026 · New: custom FX bundle4 bars Am–F–C–G, 104 BPM · stock patches + pluck · emulator
Custom FX · whole firmware

Tape delay · Ping-pong

Delay send on MIDI 1 only.

14 OCT 2026 · New: custom FX bundle4 bars Am–F–C–G, 104 BPM · stock patches + pluck · emulator
Custom FX · whole firmware

Tape delay · Dub

Delay sends on Synth 1 and MIDI 1.

14 OCT 2026 · New: custom FX bundle4 bars Am–F–C–G, 104 BPM · stock patches + pluck · emulator
Custom FX · whole firmware

Everything on

Lo-fi and chorus on three tracks, tape delay "Wide tape", custom reverb "Chamber" with sends at half. Re-rendered with the custom reverb.

14 OCT 2026 · New: custom FX bundle4 bars Am–F–C–G, 104 BPM · stock patches + pluck · emulator

Real DX7 engine · 14 Oct 2026

Real DX7 vs our firmware: same phrases

The old DX7 engine is gone; this is the only one now. Each card plays the same phrase three ways: the reference DX7 (msfa), our whole firmware in the emulator, and our firmware with the extra-voice fix (DX7 notes no longer also run a hidden stock voice, so the DSP's overload guard drops far fewer notes). Factory ROM voices, dry, no reverb, level-matched. Single notes match the reference on pitch, harmonics and loudness for keys, bell and bass. Brass has the right pitch and harmonics, but some notes are up to 4.3 dB off in body or tail. Still not like a real DX7: vibrato and tremolo, a small operator tuning offset (being fixed). Emulator only, not yet measured on hardware.

Real DX7 engine · firmware vs reference

Keys · E.Piano 1

153 notes. Without the extra-voice fix the stock overload guard drops 15 notes and cuts 22 held ones short; with it, 2 and 3.

Reference DX7 (msfa, the engine inside Dexed)

Our firmware as it stands (whole firmware, emulated)

Our firmware + extra-voice fix (next build)

After the fidelity pass: exact DX7 tuning, shared vibrato (14 Oct)

14 OCT 2026 · New: real DX7 engine, whole-firmware renderdry · level-matched · emulator, hardware-length audio block
Real DX7 engine · firmware vs reference

Bell · Tub Bells

60 notes. With the extra-voice fix, 0 dropped and 1 cut short.

Reference DX7 (msfa, the engine inside Dexed)

Our firmware as it stands (whole firmware, emulated)

Our firmware + extra-voice fix (next build)

After the fidelity pass: exact DX7 tuning, shared vibrato (14 Oct)

14 OCT 2026 · New: real DX7 engine, whole-firmware renderdry · level-matched · emulator, hardware-length audio block
Real DX7 engine · firmware vs reference

Bass · Bass 1

89 notes. Nothing dropped in either version.

Reference DX7 (msfa, the engine inside Dexed)

Our firmware as it stands (whole firmware, emulated)

Our firmware + extra-voice fix (next build)

After the fidelity pass: exact DX7 tuning, shared vibrato (14 Oct)

14 OCT 2026 · New: real DX7 engine, whole-firmware renderdry · level-matched · emulator, hardware-length audio block
Real DX7 engine · firmware vs reference

Brass · Brass 2

100 notes. 3 dropped and 4 cut short, or 1 and 2 with the extra-voice fix. Still off: operator tuning differs from a DX7 by up to 0.2 cents, so the beating between operators drifts (body up to 4.3 dB off). Being fixed.

Reference DX7 (msfa, the engine inside Dexed)

Our firmware as it stands (whole firmware, emulated)

Our firmware + extra-voice fix (next build)

After the fidelity pass: exact DX7 tuning, shared vibrato (14 Oct)

14 OCT 2026 · New: real DX7 engine, whole-firmware renderdry · level-matched · emulator, hardware-length audio block

New engine · 13 Oct 2026

Pluck v2: 32 plucked instruments

A plucked-string engine with live excitation (no stored samples), on the new shared filter/envelope/LFO block. The bank has 32 presets in 7 groups (harps and koto, guitars, mallets and tines, basses, synth plucks, plucked pads, lo-fi), checked so no two are near-duplicates and kept warm (no harsh top end). Start with the tour, which plays 18 presets back to back. Everything is played by the exact DSP code in firmware 4680 (emulator only; nothing on hardware yet).

New engine · pluck v2

Pluck · Tour

18 presets back to back on one 2-bar phrase: Concert Harp, Koto, Nylon Classical, Steel Acoustic, Twelve String, Jazz Archtop, Kalimba, Wood Marimba, Music Box, Glass Celesta, Finger Bass, Bright Synth Pluck, Soft Synth Pluck, Trance Detune Pluck, Bell Pluck, Glass Pad Pluck, Tape Wobble Pluck, Dusty Kalimba. Listen for: Whether each change is a genuinely different instrument (not a slight tweak). Which ones you'd keep.

13 OCT 2026 · New: pluck v2, 32-preset bank81 s · the exact DSP code in firmware 4680
New engine · pluck v2

Pluck · Lofi

Tape Wobble Pluck, Telephone Pluck, Dusty Kalimba, with an Upright Pizz bass. Listen for: Tape wobble should waver like worn tape without sounding out of tune; telephone is deliberately narrow.

13 OCT 2026 · New: pluck v2, 32-preset bank30 s · the exact DSP code in firmware 4680
New engine · pluck v2

Pluck · Plucked Pads

Warm Pluck Pad, Glass Pad Pluck, Evolving Strum Pad. Listen for: Slow swells that still start with a pluck; the filter breathing / sweeping.

13 OCT 2026 · New: pluck v2, 32-preset bank30 s · the exact DSP code in firmware 4680
New engine · pluck v2

Pluck · Synth Plucks

Bright Synth Pluck, Soft Synth Pluck, Resonant Zap, Trance Detune Pluck + Hollow Square Pluck, Bell Pluck, over a Sub Pluck bass. Listen for: House/trance-style plucks: the filter "snap" on Bright, the wide detune on Trance, the squelch on Resonant Zap.

13 OCT 2026 · New: pluck v2, 32-preset bank33 s · the exact DSP code in firmware 4680
New engine · pluck v2

Pluck · Bass

Palm Mute Bass, Upright Pizz, Finger Bass, Sub Pluck, Slap Funk Bass (quiet pluck chords behind). Listen for: Low notes in tune and solid (the bottom octave runs on the half-rate string); short vs sustained basses.

13 OCT 2026 · New: pluck v2, 32-preset bank38 s · the exact DSP code in firmware 4680
New engine · pluck v2

Pluck · Mallets Tines

Kalimba, Mbira Buzz, Wood Marimba, Music Box, Glass Celesta, Tongue Drum. Listen for: Hollow, bell-like tones from the "stiff string" setting; the mbira rattle; marimba should be a soft warm thock.

13 OCT 2026 · New: pluck v2, 32-preset bank41 s · the exact DSP code in firmware 4680
New engine · pluck v2

Pluck · Guitars

Nylon Classical (fingerpicking), Bossa Thumb, Steel Acoustic (strum), Twelve String (strum), Jazz Archtop (comping). Listen for: Warm nylon vs brighter steel; the twelve-string shimmer; whether strums sound like strings rather than synths.

13 OCT 2026 · New: pluck v2, 32-preset bank45 s · the exact DSP code in firmware 4680
New engine · pluck v2

Pluck · Harp Koto

Concert Harp (arpeggios), Celtic Harp, Koto (melody over harp), Dulcimer Shimmer. Listen for: Long harp ring and soft attack; koto's nasal bite and late vibrato; dulcimer's beating shimmer.

13 OCT 2026 · New: pluck v2, 32-preset bank45 s · the exact DSP code in firmware 4680

New · 13 Oct 2026

Foley & atmosphere generators

Six warm background generators (wind, rain, vinyl, tape & room, swells & risers, ocean), aiming at the soft bed under Ben Böhmer’s “Hiding”. Every foley sound is real DSP56300 code run in the emulator and matched bit for bit against its model, with live noise that never loops. Start with the three in-context clips and the no-foley reference. Not in firmware yet: tell us which you’d use.

New · foley prototype

In context · Night air (the “Hiding” brief)

Wind on the left with gusts on bars 1, 9 and 17, soft vinyl on the right, breath swells in the intro and a 4-bar riser through the breakdown that lands on the drop. Listen for air you feel more than hear once the kick is in.

13 OCT 2026 · Round 3 — new wind, rain, vinyl and tuned air 53 s · 26 bars at 122 BPM
New · foley prototype

In context · Rain on the window

Light rain on the left, tape hiss and a distant-room murmur on the right, breath swells and the riser. At the breakdown a note makes the rain surge while the kick drops out. Listen for rain that reads as rain, not hiss.

13 OCT 2026 · Round 3 — new wind, rain, vinyl and tuned air 53 s · 26 bars at 122 BPM
New · foley prototype

In context · Shoreline

Slow waves in the middle, a thin wind layer on the left, a touch of vinyl on the right. The waves drift against the groove like a real shore: noticeable in the intro and breakdown, barely there in the drop.

13 OCT 2026 · Round 3 — new wind, rain, vinyl and tuned air 53 s · 26 bars at 122 BPM
New · foley prototype

Reference · same music, no foley

The identical music bed with no foley at all, for A/B against the three clips above. The bed is a quick synthesised sketch made for these demos (pad, pluck, sub bass, soft kick), not a Circuit engine.

13 OCT 2026 · New — warm foley generators, emulator-only 53 s · reference
New · foley prototype

Solo · Tuned air (in key)

Noise through five resonances tuned to the scale (here F minor: F, Ab, C, Eb, G at 1.4–3.1 kHz), each drifting in level on its own, so the air shimmers in key with the music. On the Circuit it would follow your Scales setting. Inspired by the pitched, in-key air under “Hiding”. A resonance knob makes it less glassy.

13 OCT 2026 · Round 3 — soft wide bands, no whistle, notes no longer sharpen it ~28 s · mono strip
New · foley prototype

Solo · Wind

Soft moving air; the band wanders by itself, and notes at 5, 14 and 20 s raise gusts. Should feel like distant wind, never like hiss.

13 OCT 2026 · Round 3 — distant: slow 5–12 s swells, darker, no puffs ~28 s · mono strip
New · foley prototype

Solo · Wind, stereo pair

The same wind run on both strips 3 and 4 with different seeds, panned left and right. Compare the width with the mono wind clip.

13 OCT 2026 · Round 3 — distant: slow 5–12 s swells, darker, no puffs ~28 s · two strips
New · foley prototype

Solo · Rain

Drizzle that swells into steadier rain: a note-on surge at 8 s and heavier settings from 15 s. Drops are now short, soft, unpitched taps: no more robot-bird tweets.

13 OCT 2026 · Round 3 — fine light patter, no rumble or debris wash ~28 s · mono strip
New · foley prototype

Solo · Vinyl

Crackle that never loops (every click has its own size and shape), soft hiss, low rumble, slow drift. A dust burst at 9 s; denser crackle from 16 s. This is the fix for August’s “sounded like a loop”.

13 OCT 2026 · Round 3 — detuned-radio hiss, same crackle ~28 s · mono strip
New · foley prototype

Solo · Tape & room

Warm, slightly wavering tape hiss plus a muffled “people in another room” murmur. A note at 10 s brings the room forward; from 18 s the murmur is nearer.

13 OCT 2026 · Round 2 — organic random movement ~28 s · mono strip
New · foley prototype

Solo · Swells & riser

Breath swells, then a riser from bar 9: a resonant band sweeps up about four octaves, it builds in loudness, and a tempo-synced pulse speeds up from 8ths to 32nds, peaking on bar 13 and stopping dead.

13 OCT 2026 · Round 2 — organic random movement, unmistakable riser ~28 s · mono strip
New · foley prototype

Solo · Ocean

Distant surf, each wave with its own random length and size; a note at 21 s forces a big wave.

13 OCT 2026 · New — warm foley generators, emulator-only ~28 s · mono strip
What these are: deterministic CPU-emulator output; each card identifies stock firmware or new clean-room code. What they are not: factory-ROM timbres or hardware captures; each new-code card states whether it is standalone, host-injected or integrated as native DSP instructions.

DX7 fix · 13 Oct 2026

Why DX7 sounded dull, and the fix

Two bugs made our DX7 near-sine. (1) The importer used modulation about 15 dB too gentle, ignored half the envelope settings and ignored key scaling. It now follows msfa, the open engine inside Dexed. (2) The engine's sine on the box peaked at half height, halving every modulation depth. Each card has four versions: as on your box now; the new card bank only (a file swap, works on 4672 today); the new bank plus the 6-word engine fix (needs a new build, about 6 dB louder); and FM4. Measured against a real-DX7 reference, the brightness error falls from 0.24 to 0.11 octave (bank only) and to 0.06 octave (bank plus engine fix).

DX7 fix · before / after

Keys · E.Piano 1

The tine comes back: strong 2nd–5th harmonics instead of near-sine, and it decays like a DX7 instead of holding like an organ.

DX7 as on your box now

DX7, new card bank only (works on 4672 today)

DX7, new bank + engine fix (needs a new build)

FM4 for comparison

13 OCT 2026 · New: DX7 import + engine fixloudness-matched · runs the device's own sine maths
DX7 fix · before / after

Bell · Tub Bells

Brightness goes from 600 Hz to about 2.1 kHz, close to a real DX7, with the metallic ring restored.

DX7 as on your box now

DX7, new card bank only (works on 4672 today)

DX7, new bank + engine fix (needs a new build)

FM4 for comparison

13 OCT 2026 · New: DX7 import + engine fixloudness-matched · runs the device's own sine maths
DX7 fix · before / after

Bass · Bass 1

From a dull 93 Hz thud to a defined bass (~310 Hz brightness, matching a real DX7).

DX7 as on your box now

DX7, new card bank only (works on 4672 today)

DX7, new bank + engine fix (needs a new build)

FM4 for comparison

13 OCT 2026 · New: DX7 import + engine fixloudness-matched · runs the device's own sine maths
DX7 fix · before / after

Brass · Brass 2

Only a little brighter. This patch is genuinely dark on the engine because one modulator feeds three carriers.

DX7 as on your box now

DX7, new card bank only (works on 4672 today)

DX7, new bank + engine fix (needs a new build)

FM4 for comparison

13 OCT 2026 · New: DX7 import + engine fixloudness-matched · runs the device's own sine maths

A/B · 13 Oct 2026

FM4 vs DX7: is FM4 still worth keeping?

Same phrase, same reverb, loudness-matched, each engine on its best-fitting patch from the libraries the device uses. Cost: one DX7 voice ≈ two FM4 voices (with all custom FX: 8 FM4 voices vs 4 DX7). Important caveat: rendering these showed our DX7 import is too gentle. Its modulation depth is capped well below a real DX7, which makes many voices near-sine and dull, and envelopes are simplified. So the DX7 side here undersells the engine. The fixed DX7 is in the section above.

A/B · FM4 vs DX7

Keys · FM4 E.Piano 3 vs DX7 E.Piano 1

FM4 has a glassier tine; the DX7 side is rounder, near-sine, and barely decays (organ-like on held chords). Same 16-bar phrase (Fmaj9 | Em9 | Dm9 | Cmaj9, 120 BPM), loudness matched.

FM4

DX7 (6-op)

13 OCT 2026 · New: FM4 vs DX7 matched pair~38 s each
A/B · FM4 vs DX7

Bell · Tub Bells on both

The DX7 has a short inharmonic strike over a pure ring; FM4 is about twice as bright with a sustained shimmer. Same 16-bar phrase (Fmaj9 | Em9 | Dm9 | Cmaj9, 120 BPM), loudness matched.

FM4

DX7 (6-op)

13 OCT 2026 · New: FM4 vs DX7 matched pair~38 s each
A/B · FM4 vs DX7

Bass · Bass 1 on both

DX7: a short, deep pluck, mostly below 250 Hz (thin on a phone). FM4: brighter and sustained, cuts through small speakers. Same 16-bar phrase (Fmaj9 | Em9 | Dm9 | Cmaj9, 120 BPM), loudness matched.

FM4

DX7 (6-op)

13 OCT 2026 · New: FM4 vs DX7 matched pair~38 s each
A/B · FM4 vs DX7

Brass · Brass 2 on both

DX7 starts mellow and swells open over ~0.4 s; FM4 is brassy from the attack but changes less. Same 16-bar phrase (Fmaj9 | Em9 | Dm9 | Cmaj9, 120 BPM), loudness matched.

FM4

DX7 (6-op)

13 OCT 2026 · New: FM4 vs DX7 matched pair~38 s each

Wavetables · rendered Aug 2026

Could new wavetables change your existing patches?

About a third of your 256 patches (dnb, keys, sunsets) use the stock synth’s wavetable slots, so swapping in new tables would change their character with no new patches needed. These clips play three of your patches through nine different tables each. Caveat: timbre studies only. The patch’s filter, macros, chorus and effects aren’t applied, so judge the oscillator colour, not the finished sound. Never on the device yet. The separate “Prototype · wavetable pads” card further down is the other wavetable demo.

Wavetable study · Aug 2026

ACOUSTIC PIANO (keys) × 9 tables

The same 4-second phrase on your keys patch “ACOUSTIC PIANO”, swapping only the wavetable. “Synthetic saw” is the plain reference.

Synthetic saw control: bright geometric reference

Tube: rounded, warm movement

Solid: firm but restrained harmonics

Hollow FM: glassy and hollow

Fold: brighter folded edge

Boys Choir: soft vocal/formant colour

Hammond L-103: organ-like harmonic body

Moog Filtered Saw: dark analogue saw colour

Prophet High Pipe: airy digital pipe colour

13 OCT 2026 · First published (rendered in August, never put online)4 s each · clean-kernel timbre study
Wavetable study · Aug 2026

SoftPad (dnb) × 9 tables

The same 4-second phrase on your dnb patch “SoftPad”, swapping only the wavetable. “Synthetic saw” is the plain reference.

Synthetic saw control: bright geometric reference

Tube: rounded, warm movement

Solid: firm but restrained harmonics

Hollow FM: glassy and hollow

Fold: brighter folded edge

Boys Choir: soft vocal/formant colour

Hammond L-103: organ-like harmonic body

Moog Filtered Saw: dark analogue saw colour

Prophet High Pipe: airy digital pipe colour

13 OCT 2026 · First published (rendered in August, never put online)4 s each · clean-kernel timbre study
Wavetable study · Aug 2026

Circuit Strings (sunsets) × 9 tables

The same 4-second phrase on your sunsets patch “Circuit Strings”, swapping only the wavetable. “Synthetic saw” is the plain reference.

Synthetic saw control: bright geometric reference

Tube: rounded, warm movement

Solid: firm but restrained harmonics

Hollow FM: glassy and hollow

Fold: brighter folded edge

Boys Choir: soft vocal/formant colour

Hammond L-103: organ-like harmonic body

Moog Filtered Saw: dark analogue saw colour

Prophet High Pipe: airy digital pipe colour

13 OCT 2026 · First published (rendered in August, never put online)4 s each · clean-kernel timbre study
A/B reference

Delay A/B · stock delay

A phrase played through the Circuit's built-in global delay — captured from the real firmware running in our emulator. The 'before' side, for comparing against our replacement. Emulator-only, no hardware was touched.

17 AUG 2026 · New — tape delay live at the firmware delay seam 2.0s · 48,047 Hz · stereo DSP FNV 0x83a7d8114f565a44 WAV SHA f720974193f20024… Timer 0x00a0e1–0x00a549
Native DSP effect

Delay A/B · tape delay (in firmware)

The same phrase, the same firmware, but the delay socket has been swapped for our own darkening, gently saturating ping-pong tape delay via a live switch (one command always restores the original). Same notes, same settings — only the delay is different. This is the second effect we've dropped into the emulated firmware's own effect chain, after the FDN reverb. Emulator-only, no hardware was written.

17 AUG 2026 · New — tape delay live at the firmware delay seam 2.0s · 48,047 Hz · stereo DSP FNV 0xe12e2e8e2661352a WAV SHA 2b16fdb10868ffe7… Timer 0x00a0ea–0x00a4e6
New engine — your verdict

Prototype · true six-operator DX engine

The real thing: a full six-operator FM engine with five DX7 algorithms and per-note envelopes, rendering actual DX7 voices (EP, bell, bass, pad, strings, glockenspiel) at full fidelity. This is what the buzzy 4-operator Finetales conversions were approximating — A/B them. Measured cost fits about 8 rich voices at once.

17 AUG 2026 · New prototype — the real DX7 engine 17.6s · 48,047 Hz · stereo DSP FNV 0x560d2a3fe56467c4 WAV SHA 9703a0cbf1619e48… 11605 P words · 5293.2 cycles/sample
New effect — your verdict

Prototype · Juno-style chorus

The warm song through a lush three-voice chorus — the classic Juno ensemble shimmer that makes thin sounds wide and expensive. Wide stereo. Compare with the dry 'A side' higher up.

17 AUG 2026 · New prototype — awaiting your verdict 10.7s · 48,047 Hz · stereo DSP FNV 0x97efb536e3bb690e/0x56f2ecf31ed0cc67 WAV SHA 8a93dd7e6bfd25b4… 738 P words · 1783.3 cycles/sample
New effect — your verdict

Prototype · lo-fi channel

The warm song run through a lo-fi channel: tape-style wow/flutter wobble, reduced sample rate and bit depth, a soft filter, and a quiet vinyl-crackle bed. Dusty and warm.

17 AUG 2026 · Re-rendered — crackle no longer loops 10.7s · 48,047 Hz · stereo DSP FNV 0x4336e41faeaac5b4 WAV SHA 147cbca074455e08… 579 P words · 1576.3 cycles/sample
New effect — your verdict

Prototype · shimmer reverb

A sustained chord into a shimmer reverb — our lush reverb with an octave-up sparkle folded back into the tail, the big angelic ambient sound. Wide stereo.

17 AUG 2026 · Re-rendered — smoother, glitch reduced 10.7s · 48,047 Hz · stereo DSP FNV 0xf7e021e47d5451fa/0x4a435a7d42ec7015 WAV SHA a13d086c1bf2a8e4… 898 P words · 1852.5 cycles/sample
New effect — your verdict

Prototype · sidechain pump

A sustained chord with a four-on-the-floor ducking pump at 120 BPM — the breathing house/melodic-techno movement, without needing a kick track to trigger it.

17 AUG 2026 · New prototype — awaiting your verdict 10.7s · 48,047 Hz · stereo DSP FNV 0x3f794632f92a9246 WAV SHA cf743c72a134c858… 425 P words · 1316.1 cycles/sample
New engine — your verdict

Prototype · drawbar organ

A Hammond-style drawbar organ: nine tuned tones stacked per note with a percussive key-click. Three patches in one clip — fat gospel chords, a hollow jazzy comp, then bright stabs. Every sample verified.

17 AUG 2026 · New prototype — awaiting your verdict 13.5s · 48,047 Hz · stereo DSP FNV 0x8167abd68c416f6b WAV SHA f1f5e6b6c40ece15… 769 P words · 1401.5 cycles/sample
New engine — your verdict

Prototype · supersaw swarm

Seven detuned saws plus a sub per note — the big trance/dnb wall of sound. Three patches: a wide lead, a tight detuned bass, and a mellow pad. Clean and dynamic, no clipping.

17 AUG 2026 · New prototype — awaiting your verdict 15.4s · 48,047 Hz · stereo DSP FNV 0x81650ba74f91f190 WAV SHA 3df6eb5de8935d36… 694 P words · 950.7 cycles/sample
New engine — your verdict

Prototype · 8-bit chip

A chiptune voice: pulse waves with switchable duty, a triangle, and true LFSR noise for percussion, with fast arpeggios. Three patches — NES-style arp lead, square bass, and a noise-drum + triangle-sub groove.

17 AUG 2026 · New prototype — awaiting your verdict 11.7s · 48,047 Hz · stereo DSP FNV 0x0ba700cf9480184c WAV SHA 7565ff3fe016bb17… 260 P words · 83.0 cycles/sample
New engine — your verdict

Prototype · plucked strings

A brand-new plucked-string engine: harp rolls, a koto-like descent and short kalimba accents over a long ringing drone, in A minor. Made by a tiny amount of code (the smallest engine yet). Every sample verified. Tell me if it earns a place.

17 AUG 2026 · New prototype — awaiting your verdict 18.3s · 48,047 Hz · stereo DSP FNV 0xd2c1bc1ea2997377 WAV SHA 30425a886e1540c5… 55 P words · 232.7 cycles/sample
New effect — your verdict

Prototype · tape delay

The warm song's opening bars through a new tape-style delay: echoes bounce left-to-right, and each repeat gets darker and gently saturated like real tape. Compare with the dry 'A side' higher up the page. (A subtle tape 'wobble' was left out for now to keep everything exactly verified.)

17 AUG 2026 · New prototype — awaiting your verdict 10.7s · 48,047 Hz · stereo DSP FNV 0xaeae4be2dab216cb/0xf088c089e23ce043 WAV SHA b0f7f56d39cc0010… 560 P words · 1008.1 cycles/sample
New engine — your verdict

Prototype · wavetable pads

A slowly-breathing ambient pad that morphs between five hand-drawn wave shapes, dark to bright and back, in wide stereo. Sixteen seconds, every sample verified. A glassy, evolving sound the stock machine can't make.

17 AUG 2026 · New prototype — awaiting your verdict 16.3s · 24,023 Hz · stereo DSP FNV 0xdc0dee528b4173ab/0x7efa6086436d53a0 WAV SHA 6286563577480095… 398 P words · 2197.2 cycles/sample
New effect — your verdict

Prototype · textures & foley

The melodic-house atmosphere layer you asked about: an airy wind bed with slowly opening and closing filters, vinyl-dust crackle, and a long riser that builds and dissolves. No musical notes — it sits under a track. This would become a global effect, varied per track rather than a synth patch.

17 AUG 2026 · New prototype — awaiting your verdict 18.0s · 48,047 Hz · stereo DSP FNV 0xd3298d7e7a2e134e/0xae8bb306545f0a1b WAV SHA ae8f43629a904e72… 498 P words · 385.0 cycles/sample
Authored DSP performance

Warm song · 19-second four-layer FM4 performance

Nineteen seconds of warm electric piano, bass, slow pads and soft bells, all played by our new FM engine in the test lab. Every audio sample was double-checked against an independent calculation. This is the sound the real in-firmware engine is being upgraded toward.

17 AUG 2026 · New — warm song (kernel demo) 18.8s · 48,047 Hz · stereo DSP FNV 0x035b0c487b7c3f40 WAV SHA 62525f9c1ef04e83… 371 P words · 2108.2 cycles/sample
Listening comparison

Reverb A/B · dry reference (A side)

The first two bars of the warm song with no effects at all. Use this as the 'before' when judging the reverb and tape-delay demos below.

17 AUG 2026 · New — dry A side (kernel demo) 10.7s · 48,047 Hz · stereo DSP FNV 0xf7e2759388be2d2b WAV SHA fcee23fc905bea9e… 371 P words · 1312.3 cycles/sample
Listening comparison

Reverb A/B · lush stereo FDN tail (B side)

The same two bars through our new reverb: four echo lines that blur into a soft, dark tail, in true stereo. Compare with the dry version.

17 AUG 2026 · New — lush reverb B side (kernel demo) 10.7s · 48,047 Hz · stereo DSP FNV 0x14f3560f2940a71f/0xb066e64c4b256e48 WAV SHA 19904694f00ecb87… 667 P words · 1685.3 cycles/sample
User bank comparison

Bank A/B · lo-fi keys shell, stock engine (before)

A four-note chord played through an electric-piano patch from a user keys pack, on the stock engine. Heads-up: offline renders substitute the factory waveforms with synthetic ones, so this approximates the stock sound rather than matching it exactly.

17 AUG 2026 · Re-rendered — headroom fix, now dynamic not squashed 4.0s · 48,047 Hz · stereo DSP FNV 0x8773708acdc5f8c9 WAV SHA 88283a80de9b87c9… Timer 0x0080b1–0x00a4e6
User bank comparison

Bank A/B · lo-fi keys shell, FM4 engine (after)

The same chord and the very same patch — envelopes, filter and effects untouched — but the tone generator underneath is our FM engine, with smooth waves and brightness that fades naturally as each note rings.

17 AUG 2026 · Re-rendered — headroom fix, now dynamic not squashed 4.0s · 48,047 Hz · stereo DSP FNV 0x2e2d844afe5ee2d4 WAV SHA 29ef37177f27dd2e… Timer 0x0080f9–0x00a0ea
User bank comparison

Bank A/B · keys pluck shell, stock engine (before)

A high three-note chord through the pluckiest patch in the same keys pack, on the stock engine (synthetic waveforms, as above).

17 AUG 2026 · Re-rendered — headroom fix, now dynamic not squashed 4.0s · 48,047 Hz · stereo DSP FNV 0x5aaadd70fa987417 WAV SHA 3e0489b281dbe8fb… Timer 0x008cbe–0x00a4e6
User bank comparison

Bank A/B · keys pluck shell, FM4 engine (after)

The same chord and patch with our FM engine underneath, using a brighter bell-like recipe that softens as it rings.

17 AUG 2026 · Re-rendered — headroom fix, now dynamic not squashed 4.0s · 48,047 Hz · stereo DSP FNV 0x8e2174484ad79f81 WAV SHA ff9db86c16d699e4… Timer 0x0090d1–0x00a0ea
User bank comparison

Bank A/B · ambient pad shell, stock engine (before)

A low, wide chord through the best pad patch in a user ambient pack, stock engine (synthetic waveforms).

17 AUG 2026 · Re-rendered — headroom fix, now dynamic not squashed 4.0s · 48,047 Hz · stereo DSP FNV 0x2c720ec6cf9b15e7 WAV SHA d990d1cf4c3e24a4… Timer 0x007497–0x00a4e6
User bank comparison

Bank A/B · ambient pad shell, FM4 engine (after)

The same chord and pad patch with our FM engine underneath — the patch's own slow fade-in does the pad work; only the tone changed.

17 AUG 2026 · Re-rendered — headroom fix, now dynamic not squashed 4.0s · 48,047 Hz · stereo DSP FNV 0xf69259ba0ac1c7c4 WAV SHA a7b65133a10b77b4… Timer 0x0078a5–0x00a0ea
User bank comparison

Bank A/B · ambient strings shell, stock engine (before)

The ambient pack's best string-like patch on the stock engine (synthetic waveforms).

17 AUG 2026 · Re-rendered — headroom fix, now dynamic not squashed 4.0s · 48,047 Hz · stereo DSP FNV 0x2c720ec6cf9b15e7 WAV SHA d990d1cf4c3e24a4… Timer 0x007497–0x00a4e6
User bank comparison

Bank A/B · ambient strings shell, FM4 engine (after)

The same notes and patch with our FM engine playing a soft string-like tone underneath.

17 AUG 2026 · Re-rendered — headroom fix, now dynamic not squashed 4.0s · 48,047 Hz · stereo DSP FNV 0xc87e21b7c25a8905 WAV SHA 67511c26fb34d967… Timer 0x0078a5–0x00a0ea
User bank comparison

Bank A/B · drum-and-bass bass shell, stock engine (before)

A single low C through the strongest bass patch in a user drum-and-bass pack, stock engine (synthetic waveforms). This patch happens to play quietly in the offline setup.

17 AUG 2026 · Re-rendered — headroom fix, now dynamic not squashed 4.0s · 48,047 Hz · stereo DSP FNV 0x2a5dbaee49a00abd WAV SHA a3766f0cc888e073… Timer 0x00a0e1–0x00a562
User bank comparison

Bank A/B · drum-and-bass bass shell, FM4 engine (after)

The same note and patch with our FM bass recipe underneath.

17 AUG 2026 · Re-rendered — headroom fix, now dynamic not squashed 4.0s · 48,047 Hz · stereo DSP FNV 0x27b052ca503ce658 WAV SHA 8af811eb5b335064… Timer 0x00a0e1–0x00a154
User bank comparison

Bank A/B · drum-and-bass pad shell, stock engine (before)

A five-note chord through the drum-and-bass pack's pad-like patch, stock engine (synthetic waveforms).

17 AUG 2026 · Re-rendered — headroom fix, now dynamic not squashed 4.0s · 48,047 Hz · stereo DSP FNV 0xbfc70c72b59037b1 WAV SHA a37810c46cc6d3c4… Timer 0x007497–0x00a4e6
User bank comparison

Bank A/B · drum-and-bass pad shell, FM4 engine (after)

The same chord and patch with our FM engine underneath.

17 AUG 2026 · Re-rendered — headroom fix, now dynamic not squashed 4.0s · 48,047 Hz · stereo DSP FNV 0x8646cbefaca2b20b WAV SHA cf2adb99cfb4a846… Timer 0x0078a5–0x00a0ea
A/B reference

Stock reverb · held chord, send 127

A held chord with the reverb send turned right up, using the Circuit's built-in reverb — captured from the real firmware running in our emulator. The 'before' side.

17 AUG 2026 · New — stock reverb side of the seam A/B 4.0s · 48,047 Hz · stereo DSP FNV 0xf9f5ac022a9a1afe WAV SHA 7fb7a2805335bbf5… Timer 0x00a0e1–0x00a562
Native DSP effect

New effect · four-line FDN reverb

The identical chord, but the firmware's reverb has been swapped for ours via a live switch (one command always restores the original). Same notes, same settings — only the reverb is different.

17 AUG 2026 · New — FDN reverb live at the real seam 4.0s · 48,047 Hz · stereo DSP FNV 0x6e1c916df3ae34ce WAV SHA 18bed6f1311d201e… Timer 0x00b8f6–0x00bd0a
Listening candidate

Preset audition · warm FM keys shell

A gentle chord from our FM engine dressed in the factory patch whose envelope and filter best suit an electric piano. Technically verified; whether it's beautiful is your call — that's what these audition clips are for.

17 AUG 2026 · Re-rendered — headroom fix, now dynamic not squashed 2.0s · 48,047 Hz · stereo DSP FNV 0xc5179efb4519ec98 WAV SHA 43cc44320105c201… Timer 0x0080fa–0x00a0ea
Listening candidate

Preset audition · metallic bell shell

A bright, bell-like chord from the FM engine in the best-matching plucky factory patch, with brightness that now fades naturally as notes ring.

17 AUG 2026 · Re-rendered — headroom fix, now dynamic not squashed 2.0s · 48,047 Hz · stereo DSP FNV 0xb4d11d006460abbf WAV SHA f6213f3895951a94… Timer 0x0090d1–0x00a0ea
Listening candidate

Preset audition · soft string shell

A soft low chord from the FM engine in the most string-like factory patch. The Circuit's own filter, chorus and reverb are all still doing their jobs downstream.

17 AUG 2026 · Re-rendered — headroom fix, now dynamic not squashed 2.0s · 48,047 Hz · stereo DSP FNV 0x9c34e9a07c440580 WAV SHA 0a52c01cf6e0fad6… Timer 0x0078a5–0x00a0ea
Listening candidate

Preset audition · slow pad shell

A slow-blooming chord: gentle FM tone inside the factory patch with the slowest fade-in.

17 AUG 2026 · Re-rendered — headroom fix, now dynamic not squashed 2.0s · 48,047 Hz · stereo DSP FNV 0x0b037ea15a4e3c0d WAV SHA 1e8c6f301856b43d… Timer 0x0078a5–0x00a0ea
Listening candidate

Preset audition · woody FM bass shell

A single low note from the FM engine in the punchiest factory bass patch.

17 AUG 2026 · Re-rendered — headroom fix, now dynamic not squashed 2.0s · 48,047 Hz · stereo DSP FNV 0x1fd8bf07963a555b WAV SHA c27d5ceb53d9ee89… Timer 0x00a0e1–0x00a154
Throughput-qualified native DSP

New code · PM replacing the stock oscillator producer

The two-part FM tone running inside the real firmware path, fully replacing the stock oscillator, with every sample verified.

17 AUG 2026 · Re-rendered — octave fix + state write-back repair 2.0s · 48,047 Hz · stereo DSP FNV 0x07e455c7fc623561 WAV SHA 42524cf3b241dada… Timer 0x00acf7–0x00b170
Throughput-qualified native DSP

New engine · classic-VA saw, pulse and sub

A classic analogue-style tone — saw, square and a sub-octave underneath — running inside the real firmware path.

17 AUG 2026 · Re-rendered — octave fix 2.0s · 48,047 Hz · stereo DSP FNV 0xebdff36e229a9685 WAV SHA bd1a0d51caa96d11… Timer 0x00a960–0x00b178
Quality + throughput-qualified DSP

New engine · four-band classic VA

The same analogue tone with smarter anti-aliasing: cleaner high notes at lower processing cost.

17 AUG 2026 · Re-rendered — octave fix 2.0s · 48,047 Hz · stereo DSP FNV 0x20c64f7715270f1b WAV SHA 5876b9b233bdb374… Timer 0x00a8e7–0x00b178
Controllable + throughput-qualified DSP

New engine · continuous PWM and wave mixer

The analogue engine with adjustable pulse width and a level mixer for its saw, pulse and sub — the controls a Juno-style sound needs.

17 AUG 2026 · Re-rendered — octave fix 2.0s · 48,047 Hz · stereo DSP FNV 0xd95ea91ba188e630 WAV SHA 243a51ee37fd1057… Timer 0x00acf2–0x00ad6e
Host-controlled native selector

Live switch · stock oscillator to new PWM engine

Live-switch proof for the analogue engine: starts on the stock sound, switches to the new engine mid-recording. One command always restores the original.

17 AUG 2026 · Re-rendered — octave fix 2.0s · 48,047 Hz · stereo DSP FNV 0x84a94cddfd387a96 WAV SHA 07900e71987b3abc… Timer 0x00a0e1–0x00ad0f
Control

Stock path · baseline

One sustained middle C through the completely untouched firmware — the reference everything else is compared against. (Factory waveforms substituted with synthetic ones, as in all offline stock renders.)

16 AUG 2026 · Unchanged — stock baseline 2.0s · 48,047 Hz · stereo DSP FNV 0x2a3aa5868c5f0648 WAV SHA a8350daada2008da… Timer 0x00a0e2–0x00a548
Project mutation

Stock path · chorus 127

The same middle C with the patch's chorus turned up to maximum — proof that changing patch settings works through the real firmware code.

16 AUG 2026 · Unchanged — stock baseline 2.0s · 48,047 Hz · stereo DSP FNV 0x02dac36866d3202b WAV SHA 12f71f37cb4bdf09… Timer 0x00a0e2–0x00a548
Project mutation

Stock path · reverb send 127

The same middle C with the reverb send at maximum — the built-in reverb heard clearly, useful for comparing against our replacement.

16 AUG 2026 · Unchanged — stock baseline 2.0s · 48,047 Hz · stereo DSP FNV 0x06c2f535bf761d47 WAV SHA 35c2b9403c198960… Timer 0x00a0e2–0x00a548
Native DSP effect

New effect · two-stage stereo diffuser

Our first proof that the firmware's reverb can be replaced at all: a deliberately simple echo-smearing effect running where the reverb normally does. An engineering milestone, not a pretty sound — the proper lush reverb came later.

16 AUG 2026 · Unchanged — first effect-seam proof 2.0s · 48,047 Hz · stereo DSP FNV 0xdd584eecd763748e WAV SHA 0a7453fbabb811f1… Timer 0x00bd76–0x00c50c
Host-controlled native effect

Live switch · stock reverb to new diffuser

Proof that effects can swap mid-note: this recording starts on the built-in reverb and switches to the replacement exactly one second in, without a glitch.

16 AUG 2026 · Unchanged — first live effect switch 2.0s · 48,047 Hz · stereo DSP FNV 0x372b0c309b991fa6 WAV SHA efc1b3cb9fd6b09e… Timer 0x00a0e1–0x00c12d
Clean-room kernel

New code · two-operator PM

The first custom sound ever run on this chip in our lab: a plain two-part FM tone. Historic rather than musical.

16 AUG 2026 · Unchanged 2.0s · 48,047 Hz · stereo DSP FNV 0x367842d53f65222e WAV SHA 9e018836f60961f1… 43 P words · 30.0 cycles/sample
Authored DSP performance

Musical target · warm four-operator keys

The original nine-second electric-piano sketch that set the whole direction — the first demo that sounded like music instead of a test tone.

16 AUG 2026 · Unchanged — original musical audition 9.2s · 48,047 Hz · stereo DSP FNV 0x5ea3f5e3bd1ba046 WAV SHA f3234b42b2596132… 284 P words · 108.2 cycles/sample
Host-side seam injection

New code · PM inside stock voice path

An early stepping-stone experiment, kept for the record. Uses an older pitch mapping and plays an octave low.

16 AUG 2026 · Unchanged — superseded stepping stone 2.0s · 48,047 Hz · stereo DSP FNV 0x987aa365c744f6e5 WAV SHA 9f7a08a6b5158656… Timer 0x00a0e1–0x00a562
Native DSP program

New code · native PM in stock voice path

Another early stepping-stone, kept for the record. Same older pitch mapping; plays an octave low.

16 AUG 2026 · Unchanged — superseded stepping stone 2.0s · 48,047 Hz · stereo DSP FNV 0x6e594075187fc9a6 WAV SHA 665a4eed2d48f98e… Timer 0x009cd3–0x00a541

Approximate 4-op reductions

Finetales DX conversions

Curated DX7 voices from Finetales' DX Collection, reduced to the two-pair FM4 engine and played through a matched stock shell.

What these are: each clip is an approximate 4-operator reduction of a 6-operator DX7 voice (OP2→OP1 and OP4→OP3 kept; OP5, OP6, feedback and the original routing dropped), rendered as CPU-emulated DSP output and credited to Finetales' DX Collection. What they are not: exact DX7 reproductions or factory-ROM captures; no source SysEx is redistributed — only our rendered audio and the derived recipe numbers.
Finetales DX conversion — approximate 4-op reduction

Finetales · EP 1 (electric piano)

A soft FM electric piano (DX7 “EP 1”) playing a major-7th chord. An approximate 4-operator reduction of the 6-operator DX7 voice from Finetales' DX Collection.

17 AUG 2026 · Re-rendered — headroom fix (was overdriven) 3.0s · 48,047 Hz · stereo DSP FNV 0x40fd2de93b2f2f85 WAV SHA 7e1304e55f61e6cd… Timer 0x0080f9–0x00a0ea
Finetales DX conversion — approximate 4-op reduction

Finetales · EP 7 (electric piano)

A brighter tine electric piano (DX7 “EP 7”) on a minor-7th chord. Approximate 4-operator reduction of a 6-operator DX7 voice, from Finetales' DX Collection.

17 AUG 2026 · Re-rendered — headroom fix (was overdriven) 3.0s · 48,047 Hz · stereo DSP FNV 0xae16293cbf08b4c7 WAV SHA c59bcfe0cd3c3751… Timer 0x0080f9–0x00a0ea
Finetales DX conversion — approximate 4-op reduction

Finetales · Dulcibell (bell)

A dulcimer-like bell (DX7 “Dulcibell”) ringing a high triad. Approximate 4-operator reduction of a 6-operator DX7 voice, courtesy Finetales' DX Collection.

17 AUG 2026 · Re-rendered — headroom fix (was overdriven) 3.0s · 48,047 Hz · stereo DSP FNV 0x49086244e110e609 WAV SHA e1149e08fc08810c… Timer 0x0090d1–0x00a0ea
Finetales DX conversion — approximate 4-op reduction

Finetales · Rode Bell (bell)

A metallic bell (DX7 “Rode Bell”) with a sharp modulator ratio, on a spread chord. Approximate 4-operator reduction of a 6-op DX7 voice from Finetales' DX Collection.

17 AUG 2026 · Re-rendered — headroom fix (was overdriven) 3.0s · 48,047 Hz · stereo DSP FNV 0x33b1e676983e6648 WAV SHA a8c7679300bfd211… Timer 0x0080f9–0x00a0ea
Finetales DX conversion — approximate 4-op reduction

Finetales · Music Box (mallet)

A plucked music-box mallet (DX7 “Music Box”) chiming an open triad. Approximate 4-operator reduction of a 6-operator DX7 voice, from Finetales' DX Collection.

17 AUG 2026 · Re-rendered — headroom fix (was overdriven) 3.0s · 48,047 Hz · stereo DSP FNV 0x7b456c1029a33dc5 WAV SHA a093af304b88ec65… Timer 0x0090d1–0x00a0ea
Finetales DX conversion — approximate 4-op reduction

Finetales · Nice Bass (bass)

A round FM bass (DX7 “Nice Bass”) playing a low root-and-fifth. Approximate 4-operator reduction of a 6-operator DX7 voice, from Finetales' DX Collection.

17 AUG 2026 · Re-rendered — headroom fix (was overdriven) 3.0s · 48,047 Hz · stereo DSP FNV 0xf359cd89c4eacda7 WAV SHA 96538e68afb934e5… Timer 0x0098d5–0x00a0ea
Finetales DX conversion — approximate 4-op reduction

Finetales · PntrBrass (brass)

A synth-brass stab (DX7 “PntrBrass”) on a mid triad. Approximate 4-operator reduction of a 6-operator DX7 voice, courtesy Finetales' DX Collection.

17 AUG 2026 · Re-rendered — headroom fix (was overdriven) 3.0s · 48,047 Hz · stereo DSP FNV 0xdea06fcd81c285b1 WAV SHA a851aa7731b9a274… Timer 0x0090d1–0x00a0ea
Finetales DX conversion — approximate 4-op reduction

Finetales · Melo Pizz (pluck)

A short pizzicato pluck (DX7 “Melo Pizz”) on a bright triad. Approximate 4-operator reduction of a 6-operator DX7 voice, from Finetales' DX Collection.

17 AUG 2026 · Re-rendered — headroom fix (was overdriven) 3.0s · 48,047 Hz · stereo DSP FNV 0x69ab40202ce34cc7 WAV SHA be1f3e5933dff292… Timer 0x0090d1–0x00a0ea
Finetales DX conversion — approximate 4-op reduction

Finetales · Low Strgs (strings)

A warm FM string section (DX7 “Low Strgs”) holding a wide voicing. Approximate 4-operator reduction of a 6-operator DX7 voice, from Finetales' DX Collection.

17 AUG 2026 · Re-rendered — headroom fix (was overdriven) 3.0s · 48,047 Hz · stereo DSP FNV 0x93c593e1f326da4d WAV SHA 4edf70192318e89b… Timer 0x0080fa–0x00a0ea
Finetales DX conversion — approximate 4-op reduction

Finetales · Ana Pad (pad)

An analog-style pad (DX7 “Ana Pad”) on a slow sustained chord. Approximate 4-operator reduction of a 6-operator DX7 voice, from Finetales' DX Collection.

17 AUG 2026 · Re-rendered — headroom fix (was overdriven) 3.0s · 48,047 Hz · stereo DSP FNV 0x7ddd58abba2e83fc WAV SHA 608de91fd757bbc8… Timer 0x0080fa–0x00a0ea
Finetales DX conversion — approximate 4-op reduction

Finetales · Warm Pad (pad)

A soft warm pad (DX7 “Warm Pad”) swelling under a low chord. Approximate 4-operator reduction of a 6-operator DX7 voice, from Finetales' DX Collection.

17 AUG 2026 · Re-rendered — headroom fix (was overdriven) 3.0s · 48,047 Hz · stereo DSP FNV 0xb9a1b4132ee16fca WAV SHA bb9a036f19819838… Timer 0x0080fa–0x00a0ea
Finetales DX conversion — approximate 4-op reduction

Finetales · Hrpsichord (keys)

A plucked harpsichord (DX7 “Hrpsichord”) on a keyboard voicing. Approximate 4-operator reduction of a 6-operator DX7 voice, from Finetales' DX Collection.

17 AUG 2026 · Re-rendered — headroom fix (was overdriven) 3.0s · 48,047 Hz · stereo DSP FNV 0xee2b04b4b9e61e73 WAV SHA fbfecd6849c023a2… Timer 0x0080f9–0x00a0ea

Evidence ledger

Known, likely, unknown

Claims stay deliberately separated from implementation hypotheses.

Boundary mapped

Allocation can cross six slots, but sustained lifetime still cannot

A new reproducible sweep asks one logical part for 7–12 held notes. The 696-byte STM32 allocator selects every requested slot, changes only that descriptor, preserves its guard and writes every DSP identity exactly. Seven notes produce seven long-running regular oscillator records. From eight through twelve requests, only the newest seven records remain long-running while older records receive brief retirement dispatches. The present hook runs after stock selection, so slot reassignment cannot undo an earlier stock lifecycle decision. Four small logical parts remain viable; twelve sustained notes on one part now has a precise next target: capture and replace the earlier selection/retirement policy. Emulator-only; no hardware was written.

Proven

Four logical parts cross the stock voice banks

The stock program hard-banks two sets of six voices, so raw part IDs 2/3 remain unsafe. Expected-byte-gated MCU hooks now select a physical slot for note-on, send engine/recipe/logical-part identity to the DSP, and filter note-off by that same slot. The native FM producer decodes recipes 10/20/30/40 with 574,336 exact samples. A 696-byte MCU-resident allocator now derives release, reuse and surplus-steal slots from slotless logical events and drives them through the complete emulated MCU/DSP path at 51.531% of the observed deadline. This is still four oscillator patches sharing two stock buses—not four independent filter/envelope/FX patches—and no hardware was written.

Proven

Four logical parts can release the same note independently

Stock note-off releases every descriptor matching stock bus plus MIDI note, so parts 0/2 or 1/3 would collide. In the control, releasing part 0 note 60 changed both slots 0 and 5. A distinct CTR4 operation at an expected-byte-gated hook filters the stock release block by exact physical slot; the same request then changes only slot 0 and leaves slot 5 intact. The full 2/3/4/3 fixture also releases slot 2 while same-bus/same-note slot 11 survives, reuses slot 2 for another part and recipe, and explicitly reassigns active slot 1. All twelve DSP records complete with zero invalid entries. Invalid or stale mailbox behavior is exactly stock across transport, audio, timing, cycles and instructions. Emulator-only; no hardware was written.

Proven

Voice sharing now chooses slots inside the MCU image

A 696-byte STM32 payload gives four logical parts a soft two-voice reserve and shares the other four voices dynamically. Its slotless mailbox accepts logical part, note, velocity, recipe and engine; the MCU itself selects and records the physical voice. Starting from 2/3/4/3, it releases slot 2, reuses it for another part, and steals slot 5 as the requesting part's oldest surplus voice. All fifteen choices match an independent model, every final DSP identity matches, the SRAM guard stays untouched, and all twelve DSP records complete at 51.531% of the observed deadline. Invalid-mailbox behavior is exactly stock. The SRAM range and payload remain offline-qualified only; a real event dispatcher, interrupt safety and independent downstream patch state are still open. No hardware was written.

Prototype

Existing Tracks patches can seed new engines

All 128 retained 340-byte patch payloads leave the documented 14-byte reserved region empty. A CTX/version/engine extension fits there while the other 326 bytes remain unchanged, preserving filter, envelopes, LFOs, inserts, EQ, modulation matrix and macros. The first conservative mapping yields 25 FM recipes over 128 distinct downstream sound shells: a theoretical 3,200 combinations. A new heuristic audition queue finds 20 electric-piano, 35 bell/pluck, 10 string, 16 pad and 49 bass shell candidates scoring at least 70/100, without publishing patch names or bytes. DX7 packed-bank parsing is implemented, but current four-operator conversion is explicitly approximate.

Proven

Retained patch shells now reach native FM audio

A bounded runtime recipe override now feeds pair-A/B modulation indices and levels into the native four-operator DSP path. Five private Projects combine authored recipes with the highest-ranked retained electric-piano, bell/pluck, string, slow-pad and bass shells. Their restrained voicings render 96,094 frames each: every native sample matches the independent model, all requested slots and DSP identities match, the five WAVs are non-silent, distinct and contain zero clipped PCM samples, and maximum load remains 50.286%–50.384% of the observed deadline. This proves the shell shortcut reaches audio, not that metrics can judge beauty. Brightness decay and interpolated sine reads landed in the recipe ABI v2 round; ratios, feedback and per-operator envelopes remain unimplemented.

Proven

Four-operator FM executes inside the stock engine

Moved two carrier/modulator pairs into the expected-word-gated producer bypass at P:0x000384 and rejoined the stock downstream path at P:0x000a7f. The independent model checks 53,632 legacy single/dense samples with zero mismatches; the recipe-aware routine uses 2,601–2,654 cycles per 32-sample block. The later coupled four-part run extends exact verification to 574,336 samples across four recipes. This proves integration and throughput, not subjective musical quality; stress audio stays private.

Candidate

The first authored four-operator sound is ready to judge

A 9.16-second Cmaj7–G/B–Am7–G–C arpeggio now replaces test-tone listening as the FM target. Two carrier/modulator pairs use separate harmonic ratios and exponential loudness/brightness decay to make a dry electric-piano/pluck voice. The DSP CPU emulator produced all 440,000 samples; every sample and all four final phase words match a separate Q1.23/Q0.24 model, with zero clipping. This proves implementation fidelity, not artistic quality—the published player is intended for subjective feedback before the engine is integrated into the stock envelope, filter and effects path.

Mapped

A frozen experimental engine can fall back to stock

The MCU already has a physical DSP reset, complete stock-program reload and an independent whole-device watchdog. A new offline policy model watches a counter produced by the DSP: normal and wrapping counters continue untouched; four frozen observations mute and request the official stock program; any failed read or reload falls back to a complete unit reset. The stock loader itself contains waits with no deadline, so bounded replacements are still required before this becomes executable firmware. No device was contacted or written.

Proven

The proposed engine RAM survives a dynamic stock CPU collision test

After normal boot and synthetic table generation, the emulator protected all host pages covering X:0x5fc0–0x5fff and every X/Y/P alias covering 0x500000–0x500e01. Forked deliberate accesses proved all four protected mappings fault by SIGSEGV. The parent then completed 1,200 runtime frames, 75 voice dispatches, 76 oscillator passes and 37 reverb/delay passes without touching a protected page. Its instruction/cycle counts, TX digest, voice state, waypoints, signal probes and STM32↔DSP events match an identical unprotected control exactly. This excludes observed stock Core 0 CPU collisions, not physical DMA, independent Core 1 activity, every Project/mode or real-hardware ownership; the image remains NOT-FOR-HARDWARE.

Proven

The authentic MCU selector chooses the expanded DSP payload

Stock build 4486 uploads only 10,846 Core 0 words, so the emulator's upper zero-filled P memory is not automatically present on hardware. A build-only experiment relocates the qualified 15,464-word selector payload and changes only its pointer-table entry inside the original image. Executing the real STM32 selector at 0x08029260 offline makes normal selection request that relocated block while the common block, Core 1 and complete alternate selection remain unchanged. The real packed sender at 0x08029200 then covers all 46,398 bytes as 91 contiguous DMA requests with an exact reconstructed hash. The final DMA/SPI primitive and DSP boot were not executed; the private artifact is explicitly NOT-FOR-HARDWARE and is not served by this site.

Proven

One DSP patch now switches effects live with exact stock fallback

A five-word CFX/version-1 mailbox in internal X memory selects stock engine 0 or diffuser engine 1. Existing host W writes change the engine and both all-pass coefficients without rewriting program memory. Selected stock, bad magic, unsupported ABI and unknown engine 7 each reproduce the untouched 7,936-word reverb-output digest exactly. A sustained session switches after 62 stock blocks and verifies the following 62 custom blocks with zero mismatches. The fixed 64-word loop and 0x7fffff coefficient mask bound this kernel; they are not a general execution-time watchdog, and hardware installation remains blocked.

Proven

The replacement effect's return-register differences are dead

Across 124 matched stock/custom blocks, 18 of 37 observed register families are already identical. The other 19 are each overwritten before their first downstream use; the gate checks the exact build-4486 instructions at those overwrite sites, including R2/R3 and modifier registers in the first downstream callee. Five extracted normal Core 0 payloads end below P:0x3c00 with a minimum 4,514-word margin. Y:0x500d00–0x500d7f does not overlap another native experiment, remains shadow-exact, and now passes the stock Core 0 CPU page-trap test. Physical DMA/Core 1/hardware ownership is still unproven, so installation remains blocked by design rather than attempted.

Proven

A clean-room effect can replace the stock reverb algorithm

The mapped call consumes and returns 64 interleaved stereo words per block. A 36-word expected-target-gated patch redirects it to a two-stage diffuser, verifies 7,936 words plus both state banks exactly in single-note and dense runs, preserves active sample drums and delay, and remains below the observed block deadline. The direct routine costs 1,305–1,358 cycles per block versus about 18,500 for stock reverb, leaving substantial room for a richer design. No device was written.

Proven

The stock audio program runs offline

The STM32 initialization, Project activation, live note routine, Core 1 shared-copy service, stock Core 0 program and ESAI output are coupled in one deterministic CPU-emulation profile.

Proven

Tracks uses the same CPU-emulator foundation as Gearmulator

Both projects pin dsp56300 commit c051afa. Gearmulator contributes device-wrapper, debugger, profiling and hash-gated patch patterns—not reusable Virus oscillator source.

Proven

Effects and voice stages have measurable seams

Voice accumulation, mix, delay, reverb send/return, master ring and ESAI staging are independently observed. Several one-word offline patches already produce changed-and-restored audio evidence.

Proven

A Juno-like composite oscillator can reuse the stock engine

The native saw, pulse and sub block now retains the stock pitch preparation, downstream gain controls, filter/envelope voice path, part mixer, delay, reverb and output. Continuous PWM and independent wave levels pass the dense integration gate, and the engine can now be selected through the existing host write transport; table interpolation and guarded hardware qualification remain follow-on work.

Proven

One DSP program switches safely between stock and a new engine

A versioned seven-word mailbox in internal X memory drives a 256-entry native dispatcher. Existing host W writes switch the same patched DSP image from stock to engine 2 and back before note rendering; a sustained-note test also commits engine 2 at an exact ESAI frame boundary. Stock selection, bad magic, unsupported version and unknown ID all produce the exact unmodified 7,936-word oscillator digest. After the mid-session commit, custom words remain model-exact and the stock-reader count freezes. No device was written.

Proven

A new two-operator PM kernel runs on the target core

The 39-word benchmark produces 256 bit-exact samples at 20.03 instructions / 30.10 modeled cycles each. A separate two-second render matches the independent Q1.23/Q0.24 model for all 96,094 samples. That standalone result did not itself prove integration; later native PM and VA producer-bypass results do.

Proven

Twelve note requests, four sample drums and global FX run together

The 64-slot descriptor and external PCM layout are reconstructed with clean samples. Twelve requested synth notes change all twelve allocator blocks, while four stock drum voices complete 448 renderer blocks with a nonzero interpolation buffer and delay/reverb remain active. The observed maximum is 42,214 / 81,920 Timer ticks (51.53%). A dispatch-pointer trace saw eleven regular sustained/partial voice pointers, so this is an exact high-activity fixture—not proof of twelve simultaneous synth voices or an exhaustive worst case.

Proven

A waveform-sensitive oscillator insertion seam is mapped

The stock synth queues table reads in one scheduler phase and consumes them in a later phase over the same control records. Both clean saw and square runs reach a common active 32-sample voice buffer before stock part accumulation, and its digest changes with the source waveform. This is the leading offline hook for the clean-room PM or classic-VA kernel.

Proven

Per-voice pitch and phase state is mapped

At the stock voice dispatch, R5 identifies a 96-word allocator record and R3 a 40-word oscillator record. Six controlled notes isolate two exact semitone fields and two phase accumulators; their 32-frame deltas follow equal temperament within 0.0022%. At all 1,134 observed post-oscillator completions, R4 resolves directly to the same voice record with zero invalid entries.

Proven

Clean-room PM passes through the stock downstream engine

At the mapped P:0x000a7f boundary, the emulator replaces each 32-sample oscillator block with per-voice two-operator PM. The seam and final ESAI digests change, then disabling the replacement restores both exactly. Host-side execution proves the integration contract but does not measure in-program DSP cycle cost.

Proven

A native DSP program trampoline runs at the oscillator seam

An expected-word-gated 14-word emulator-only mutation calls an 11-word DSP56300 buffer-inversion routine, restores the displaced stock instructions and returns into the original downstream engine. Across 248 matched entries, the stock seam segment is exactly 4 cycles and the native path 116: a directly measured 112-cycle increment. Audio changes and restores bit-exactly, and the added program words remain unchanged during execution.

Proven

A new PM oscillator now executes inside the stock DSP program

The native DSP56300 routine keeps per-voice carrier and modulator state, derives tuning from the stock phase accumulator, renders each 32-word oscillator block and returns through the original downstream engine. Six notes from C3 to G4 track equal temperament within one Q0.24 LSB; all 47,616 pitch-series words and 192,192 words in the playable render match the independent model. Direct added cost is 1,182–1,235 cycles per block.

Constraint

The first native PM port fails the dense throughput gate

With both synth parts busy, four clean sample drums, delay and reverb, all 34,176 completed native words remain bit-exact. But native PM reaches 1,070 synth seam entries and 440 drum blocks versus 1,206 and 448 for stock/restored controls in the same 3,971 frames. A nearly unchanged Timer maximum hides this backlog, so optimization is required before hardware or larger engines.

Constraint

Parallel moves halve PM cost, but additive rendering still misses the gate

An indexed Y-memory sine table, block-local modulator state and DSP parallel moves reduce the clean kernel from 30.10 to 19.13 cycles per sample and the native seam from 1,186–1,239 to 596–649 cycles per block. All 34,816 dense output words remain bit-exact, while synth-seam completion improves from 88.72% to 92.12% of stock and sample drums from 440 to 444 of 448. This is still a failed gate: the stock oscillator producer must be bypassed or replaced, not followed by another full renderer.

Proven

Replacing the stock producer passes the dense throughput gate

The expected-word-gated native PM path now redirects the original producer call, consumes the upstream per-sample pitch word and enters the stock downstream voice path directly. In the retained 3,971-frame stress fixture it makes zero stock table-reader calls, verifies all 45,696 generated words, completes 1,428 voice blocks versus stock's 1,206, and completes 452 sample-drum blocks versus 448 while delay and stereo reverb remain active. Its routine is 592–645 cycles, has no nested entries and remains emulator-only.

Proven

A new classic-VA oscillator runs inside the Tracks engine

The producer ABI now hosts a clean-room DCO-style mix of band-limited saw, 50% pulse and sub-octave square. The dense run verifies 45,696 generated words with zero mismatches, makes zero stock reader calls, completes 1,428 voice blocks and 452 sample-drum blocks, and retains active delay and stereo reverb. The routine costs 934–987 cycles per 32-word block with no genuine nested entries. It remains emulator-only; its fixed 31-harmonic table is not yet a keyboard-wide anti-aliasing solution.

Proven

Pitch-dependent VA table bands pass the full integration gate

A 256-word offset lookup selects 63-, 31-, 15- or 7-partial saw/pulse pairs once per native block without unsupported conditional opcodes. The dense run verifies all 45,696 words, completes 1,428 voice and 452 drum blocks, keeps delay/stereo reverb active, and has pending depth one with no nesting. Hoisted bases reduce direct cost to 830–883 cycles from the fixed engine's 934–987.

Possibility map

What could become musical

The order favors bounded experiments that reuse proven stock contracts.

01

Expose more stock state

Stored modulation slots 13–20, deep patch fields, effect macros and live setters can add capability without replacing synthesis code.

High value · lower DSP risk
02

New oscillator modes

A common post-oscillator 32-sample buffer is now measured. Juno-style composite DCO, two-op PM/FM, additive, wavetable and Karplus-Strong modes can target it while retaining the stock downstream voice gain, part accumulation, FX and output path.

Native PM and classic-VA engines both pass the dense producer-bypass gate
03

Alternate effects

Chorus, tape/modulated delay, diffusion, freeze, reverb variants, dynamics, width and output coloration can run at part or global block rate.

Native diffuser and guarded live selector pass the emulator gate
04

Sample and drum engines

The populated 64-slot memory model now supports measured work on interpolation, slicing, reverse, transient shaping, per-drum filters, granular playback and clean-room drum synthesis.

Stock renderer active · safe offline testbed
05

Complete engines or more parts

Four logical recipes share twelve voices at 2/3/4/3. Configurable logical-track pairing now also maps 6/2/4/0 into stock-safe 6+6 physical banks with a complete release/reuse/steal/retrigger lifecycle. A one-word DSP bypass remains an experimental option for distributions that cannot be paired below six per bus. Four full patch strips still need new envelope/filter/macro/mixer state and persistence.

2/3/4/3 and paired 6/2/4/0 lifecycles proven offline

Chronological notebook

Work log

Short entries are published when a result changes the working model or creates something audible.

  1. DX7 fidelity pass: exact tuning, one shared vibrato, DX7 pitch envelope

    Operator frequencies now come from msfa's own table (all 32,640 operator/key values identical; 35% were before), worked out on the main processor per note. One LFO per part as on a DX7, and a bug that ran sine vibrato at half depth is fixed. Across factory banks 1A and 1B, 559 of 576 test notes now match msfa (was 527) and 59 of 64 voices match on every note (was 48). Brass body error 4.3 → 1.75 dB. Tremolo follows Dexed's curve, which Dexed calls untuned. Each card in "Real DX7 vs our firmware" has a fourth player. Emulator only; dropped notes in these phrases come from the stock overload guard, not the engine.

  2. Real DX7 engine through the whole firmware, compared with msfa

    The old DX7 engine was removed; the firmware now runs only the engine that matches msfa bit for bit in the lab. Played through the whole emulated firmware, single notes match msfa for keys, bell and bass. Brass is up to 4.3 dB off on some notes, from a 0.2-cent operator tuning offset. Across factory ROM banks 1A and 1B, 503 of 576 test notes are in tolerance. A bug capped operator loudness at half the DX7 range in 310 of 384 voice/velocity cases; fixed. Dropped notes in phrases all come from the stock overload guard; skipping the hidden stock voice behind each DX7 note cuts keys drops from 15 to 2. Emulator only, uncalibrated.

  3. Foley round 3: distant wind, light rain, radio hiss, softer tuned air

    From the second listen. Tuned air no longer turns into a whistle: bands are wide and soft and notes no longer sharpen them. Wind is distant: gusts swell over 5–12 s, darker, with no steam-train puffs. Rain is a fine light patter with the low debris wash removed (check it isn't too hissy). Vinyl hiss now wanders like a detuned radio, with the crackle unchanged. Designs follow Farnell’s procedural wind and rain. Still bit-exact on both emulator backends; emulator-only.

  4. Foley round 2: organic movement, a real riser, tuned air

    After the first listen (“artificial, like a wave”; rain had a robot-bird tweet; the riser sounded like the swells): wind, tape and vinyl now move on three overlapping random drifts instead of one slow swell, and vinyl crackle comes in clusters with quiet stretches. Rain’s rising droplet chirps are gone. The riser sweeps up about four octaves and accelerates into a stop on the bar. New “tuned air” generator: noise through resonances tuned to the scale, the pitched, in-key air measured under the reference track. Still bit-exact on both emulator backends. Emulator-only; no hardware was written.

  5. Warm foley generators: wind, rain, vinyl, tape and room, swells and risers, ocean

    Six separate atmosphere generators built for the melodic-house “Hiding” brief, each designed to run as a MIDI-track engine on its own mixer strip with level, pan and reverb send. Noise is generated live (a 24-bit LCG that repeats only every ~349 s), so the August crackle loop is gone, and all state sits in small internal memory. Each generator matches its fixed-point model word for word on both emulator backends. Costs 540–2,031 instructions per 32-sample block and 99–135 program words each. Eleven MP3 demos are at the top of Listen. Emulator-only; no hardware was written.

  6. Tape delay runs live at the firmware delay seam

    The second effect now runs inside the emulated firmware's own effect chain, after the FDN reverb: a darkening, gently saturating ping-pong tape delay dropped into the stock global-delay socket via a live engine switch (custom engine ID 3). The same phrase is rendered twice — stock delay and our tape delay — as an A/B pair. The tape run is shadow-verified word-for-word against an independent model over 3,003 blocks (192,192 samples, zero mismatches); program memory is unchanged during the run, its delay return is non-silent, and invalid magic/version/ID fall back to bit-identical stock. Emulator-only; no hardware was written.

  7. Lo-fi crackle loop and shimmer glitch fixed

    Two listener-flagged issues fixed and re-rendered: the lo-fi vinyl crackle now sweeps its noise table once so it no longer audibly repeats, and the shimmer reverb's octave-up shifter got a longer crossfade window and gentler feedback to remove the grainy glitches. Both re-verified sample-exact.

  8. True six-operator DX engine runs — about 8 rich voices fit

    A full six-operator FM engine (five DX7 algorithms, per-operator envelopes, feedback) renders real DX7 voices at full fidelity, sample-exactly verified. The benchmark is now measured, not estimated: 13,284 cycles per voice, so roughly 8 full-fidelity voices fit the audio budget (12 needs a leaner mode). This is the real fix for the DX sounds and the reference the 4-op reductions are judged against.

  9. Four new effects up for a listen: chorus, lo-fi, shimmer, sidechain

    A Juno-style chorus, a lo-fi channel, a shimmer reverb and a sidechain pump — each built and sample-exactly verified in the clean-room lab with full dynamics. Candidates for the held-FX effects layer; thumbs up the keepers.

  10. Three new synth engines up for a listen: organ, supersaw, chip

    Drawbar organ, supersaw unison swarm and an 8-bit chip engine — each built and sample-exactly verified in the clean-room lab, each demoed with a few sample patches so you can hear the range. Candidates: give each a thumbs up or down and the winners get built into the firmware.

  11. All FM4 auditions de-overdriven — carrier levels were too hot

    Every coupled FM4 clip (the bank before/afters, the five presets and the twelve Finetales conversions) was re-rendered with proper headroom. The overdrive was traced to recipe carrier levels sitting far above the DSP output clamp, which flattened chords into a squared wall; the fix cuts those levels so the sounds keep their dynamics (crest factor rose from ~1.3 to 3-5). This is the set now worth listening to and scoring.

  12. Four new sound prototypes up for a listen

    Plucked strings, a tape delay, morphing wavetable pads, and a wind/crackle/riser texture layer — each built and sample-exactly verified in the clean-room lab. They are candidates: give each a listen and a thumbs up or down, and the ones you like get built into the real firmware next.

  13. Every clip now says what changed, and newest sits first

    Each audio card carries a dated what-changed label (new, re-rendered and why, or unchanged), and the cards are ordered newest-update-first to match the changelog. Labels update automatically with future re-renders.

  14. The real engine path now fades brightness per note and interpolates its waves

    The native FM4 oscillator that runs inside the stock voice path picked up the two sound-quality features previously proved only in the clean-room warm-song kernel: every sine read is linearly interpolated (removing raw table-step grit), and each voice's modulation indices now fade over the note with per-recipe time constants — fast for bells and plucks, medium for keys and bass, slow for pads and strings. Recipes grew from four to six control words (ABI v2); a decay word of zero reproduces the old behavior exactly, so existing recipes stay valid. The cost rose from about 2,654 to at most 5,006 cycles per voice per 32-sample block — the kernel-lab estimate predicted the seam within 0.3% — and the dense twelve-voice stress fixture still peaks at about 50% of the observed deadline. Every generated sample continues to verify word-for-word against the independent model, and all five preset auditions plus the six user-bank before/after pairs were re-rendered with the new engine. Emulator-only; no hardware was written.

  15. Lush four-line FDN reverb installed at the stock reverb seam, behind the live selector

    The published FDN kernel design now runs inside the coupled STM32/DSP emulator at the mapped global-reverb call: four prime-length delay lines with one-pole damping and Householder feedback consume the mono-summed reverb send and return a wet-only stereo tail, matching the seam contract the diffuser established. A seam-shaped kernel-lab build predicted the cost at 7,609 cycles per 64-word block and the integrated routine measured 7,600 (stock: 18,529). Every output word and all 16,389 persistent state words are compared against an independent model on every call across single-note, dense twelve-voice and selector fixtures, and the new 16,384-word delay-line range joins the page-trap memory-ownership audit. Engine ID 2 selects the FDN live; invalid controls still fall back bit-exactly to stock. Everything remains emulator-only; no hardware was written.

  16. PM2/VA pitch fix landed; a silent pm2-bypass state defect repaired on the way

    Completing the octave fix for the PM2 and virtual-analogue engines surfaced a pre-existing defect: the optimized pm2-bypass loop keeps its modulator phase only in an accumulator and never wrote it back to Y memory, so the phase silently reset every 32-sample block. It evaded the retained-JSON tests because they only validate retained outputs; the shadow model caught it the moment the target was re-run. The postamble now persists the modulator phase for pm2-bypass (FM4/VA write theirs in-body), and the PM2/VA preambles double the half-rate stock pitch word as FM4 already did. A C4 through pm2-bypass now measures 261 Hz; the VA carrier increment matches 261.6 Hz with the sub square one octave below, exactly as the independent model predicts. All PM2/VA clips were re-rendered and the changed-program-word counts moved to 93 (PM2 bypass), 93/109/126 (VA plain/banded/PWM) and 180 (VA selector).

  17. The native FM4 engine was an octave flat; found, fixed and re-rendered

    Listening feedback flagged the bank auditions as dirty and low. Spectral measurement against a stock control proved the native oscillator injections consume the stock per-sample pitch word directly, while the stock table reader effectively runs it at twice that rate: a requested C4 rendered as an odd-harmonic C3. The FM4 preamble now doubles the pitch word (carrier 2x, pair modulators 4x and 6x), the same C4 measures 262 Hz with a clean series, and every FM4 clip on this page was re-rendered. Sample-exact verification could not catch this class of error because the shadow model faithfully models the implemented mapping; a pitch-measurement gate against the stock control is the new lesson. The PM2 and virtual-analogue clips still carry the same octave offset and are queued for the equivalent fix (the banded VA needs matched band-table changes).

  18. User patch banks audition the FM4 engine through their own shells

    Six before/after pairs render user-supplied lo-fi keys, ambient and drum-and-bass bank shells first through the untouched stock engine (with the documented synthetic-seed limitation) and then through the native FM4 oscillator with the identical downstream envelope/filter/effects shell. The .cpb bank container is decoded as eight 340-byte patches in 512-byte slots. Only bank/slot coordinates, hashes and metrics are retained publicly; patch names and bytes stay private.

  19. A lush stereo FDN reverb passes exact kernel verification

    A clean-room four-line feedback delay network — prime-length delays inside circular buffers, one-pole damping, Householder feedback, alternating injection and decorrelated stereo taps — processes the warm song's first two bars. All 1,024,000 stereo output samples and the reverb state match an independent fixed-point model. The dry A side and wet B side are published together for direct comparison. This is a kernel-level design study for the recovered global-reverb seam, not yet a seam integration.

  20. A data-driven warm FM4 song engine renders nineteen seconds of overlapping voices

    The FM4 kernel family gains the controls the static recipes lacked: per-note operator ratios, pair detune, velocity scaling, linear attack plus exponential amplitude decay, independent per-pair brightness decay, and linear interpolation on every sine read. Notes are sixteen-word table entries that accumulate into one shared buffer, so chords overlap and tails ring under later notes. Sixty-two notes across keys, bass, pad and bell layers verify sample-exactly (903,500 samples, zero clipping) against an independent model.

  21. A JIT multiply sign-extension bug in the pinned emulator is mapped and worked around

    The pinned dsp56300 JIT computes mpy incorrectly whenever the second source register holds a negative value: the operand is treated as unsigned, adding an error of twice the first operand. Every earlier kernel passed because its second operands (indices, levels, envelope coefficients) were always positive; the new interpolation code was the first to multiply by a possibly-negative delta. The workaround keeps the possibly-negative operand first, is enforced in the generators, and is covered by a regression micro-test so any future emulator bump is re-checked.

  22. The notebook serves MP3 alongside WAV and keeps this newest-first changelog

    Every verified clip is now published both as the exact PCM WAV and as a small MP3 for mobile listening. The WAV remains the artifact whose SHA-256 is bound to the emulator report; the MP3 is a convenience transcode of that verified file.

  23. Five host firmwares resolve into three DSP transport ABIs

    Rebuilt all five STM32 images with identical checksum-gated Ghidra analysis instead of projecting the 1.2.1 helper addresses backwards. Releases 1.0 and 1.1 make 280 recovered transport calls through a Core-0-only write(value,address) ABI. Version 1.1.5 adds an explicit core argument; 1.2 adds one bulk-transfer call, and 1.2/1.2.1 have identical operation counts and fixed DSP-address sets. Eighty-nine fixed X/Y locations are common to all five releases out of a 139-location union. The 1.0-to-1.1 transition changes 24 fixed X locations in each direction, so a modern host patch cannot be made safe for old firmware merely by relocating its branch. Published output is address/call metadata and hashes only; Ghidra projects, firmware and detailed exports remain private.

  24. Configurable pairing makes 6/2/4/0 safe under the stock DSP policy

    The retirement metric is a per-bus workload-balance calculation: a twelve-voice single bus clamps to zero, while balanced six-plus-six work stays above the 0x80 threshold. Added a bank-preserving STM32 allocator mode and configurable logical-track pairing. Mapping tracks 0+3 to bus 0 and 1+2 to bus 1 turns requested polyphony 6/2/4/0 into physical 6+6. Moving allocation before both stock selectors prevents their old victim release from leaking into a custom steal. With 64 rendered frames between lifecycle events, release, released-slot reuse, surplus steal, stale note-off suppression and retrigger all reach the DSP exactly; all twelve records complete 94 blocks, no forced retirement occurs, 45,312 FM4 samples match the independent model and peak observed deadline use is 52.794%. No device was written.

  25. One DSP instruction unlocks twelve distinct voices in one bus offline

    Exact-block state attribution maps the stock per-bus retirement service. A countdown at X:0x3239+bus reloads to twelve and, while a derived X:0x0036+bus metric is below 0x80, calls a six-record minimum-score selector every thirteenth service cycle. Its wrapper writes the selected release state at P:0x001bb1. In the matched stock trace, slots 0-4 are forced into release at frames 76, 492, 908, 1324 and 1740, exactly 416 frames apart. Replacing only P:0x001bb1 with NOP leaves the host allocation caller and selector intact and keeps all twelve single-bus voices dispatched for 24,024 frames. The result repeats with twelve distinct pitches from MIDI note 48 through 67, one note command and exact identity per slot, nonzero output and 51.531% maximum observed deadline use. This proves the causal modification seam and removes the paired 6+6 oscillator budget offline. It does not yet explain the stock safeguard or prove release/retrigger, worst-case FX, long-run or hardware safety, and no device was written.

  26. A 6+6 bus split keeps all twelve voices alive

    Added non-advancing DSP snapshots and exact-block command instrumentation. All twelve forced single-bus slots receive exactly one note-on and no hidden note-off, while the scheduler still visits every descriptor; the earlier rolling-seven result is therefore a stock per-bus voice-management effect. In a matched control using the same MIDI note, engine ID, recipe and two maximum-sustain poly patches, routing six requests to bus 0 and six to bus 1 keeps all twelve oscillator records long-running for 24,024 frames. Every slot completes 750 or 751 blocks, output is nonzero and peak observed deadline use remains 51.531%. This gives a practical twelve-note mirrored-timbre mode and explains why the proven 2/3/4/3 four-patch schedule works: parts 0+2 use six voices and parts 1+3 use six. It does not create four independent downstream filter/envelope/FX strips, and no hardware was written.

  27. The corrected 7–12 note sweep moves the limit into DSP runtime

    Moved the payload allocator to 0x080217ca, before both stock slot selectors, and generated a matched test Project with poly mode 2 and amp sustain 127. In all six coupled MCU/DSP cases, slots 0–11 reach the common continuation unchanged, descriptor choices and identities are exact, guards hold and timing stays at 51.531% of the observed deadline. Yet requests above seven still retain a rolling window of the newest seven long-running oscillator records. Reducing DSP advancement per host read from four calls to one leaves the twelve-note per-slot counts exactly unchanged. This falsifies the earlier late-hook explanation and makes ordinary elapsed envelope time unlikely; the limiter is downstream in stock activation/continuation or DSP runtime. Separately, four parts at 2/3/4/3 execute all twelve records with four distinct verified FM recipes. No hardware was written.

  28. Five patch-shell auditions replace the preset thought experiment

    Added a bounded per-run FM4 recipe override and proved recipe 50 through slot selection, DSP identity routing, exact native execution and active stock-path audio. A reproducible batch then chose the strongest retained Tracks shell for electric piano, bell/pluck, strings, slow pad and bass, rendered restrained chords or one bass note, and emitted a factory-data-free report. All five two-second clips are exact, distinct, non-silent, zero-clipping and below 52.929% of the observed deadline. The audit also found that 25 abstract translated recipes collapse to 12 combinations under today's four implemented controls, so ratios and operator envelopes are the next higher-value engine work. No hardware was written.

  29. The four-part allocator moves into the STM32 payload

    Qualified a bounded 128-byte DTCM candidate by watching four application-init entries, Project activation, fourteen stock note calls, the coupled DSP path and 2,048 frames: stock made zero reads and zero writes there. A 696-byte expected-byte-gated payload now accepts slotless logical events, maintains twelve voice records and chooses unused, released, surplus or oldest victims inside the emulated MCU. Its complete 2/3/4/3 release/reuse/steal schedule matches an independent model for all fifteen routed decisions, leaves the guard untouched, preserves exact stock behavior for an invalid mailbox and reaches 51.531% of the observed DSP deadline. This is an offline candidate, not proof of hardware SRAM ownership or interrupt safety; no device was written.

  30. Automatic allocation completes the four-part lifecycle prototype

    Removed physical slot numbers from the logical test stream and connected the shared-flex allocator to the coupled emulator. Its priority is unused, released, above-reserve, requesting-part oldest, then oldest remaining. It automatically recreated the 2/3/4/3 layout, released part 1 note 48 in slot 2 without touching the duplicate note in slot 11, reused slot 2 for part 3, and stole slot 5 as part 2's oldest surplus voice. A later note-off for the stolen note is suppressed instead of killing the replacement. Every routed decision changed only one requested host descriptor; all final DSP identities match, all twelve DSP records complete with zero invalid entries, and the run reaches 51.531% of the observed deadline. At this stage embedding the allocator in the MCU was the next routing step; the newer log entry above closes that offline gate. No hardware was written.

  31. Targeted note-off closes the duplicate-note collision

    Traced the stock release helper and confirmed its key is only stock bus plus MIDI note: with logical parts 0 and 2 both playing note 60, the original scan changed slots 0 and 5 together. Added a separate 120-byte offline lifecycle variant with CTX4 for note-on and CTR4 for note-off. Its second expected-byte-gated hook skips matched descriptors until the requested physical slot, then resumes the original stock release block. The collision now changes slot 0 only. A full twelve-slot run releases one of two same-bus/same-note voices, reuses that slot for another part/recipe, explicitly reassigns one active slot, retains all final DSP identities and reaches 51.531% of the observed deadline. Invalid mailbox behavior remains exactly stock. No hardware was written.

  32. Existing patches become a ranked day-one library

    Turned the 128 retained Tracks patches into reusable downstream sound shells instead of discarding their envelopes, filters, LFOs, modulation, macros and insert effects. Twenty-five conservative FM oscillator recipes make a 3,200-combination raw search space. A deterministic classifier now builds smaller electric-piano, bell/pluck, string, pad and bass audition queues; the next gate renders each candidate at two velocities across three octaves, removes silence/clipping/long tails/near-duplicates, then asks for human listening. This is a shortcut to curated variety, not a claim that multiplying parameters automatically makes 3,200 good patches. Raw factory data remains private.

  33. Four routed tracks now select four different FM recipes

    Connected the MCU's per-slot identity to the native FM producer through a bounded DSP lookup. The first sparse-address attempt correctly failed because the stock host write truncates external addresses; a second audit also found that three old FM scratch words overlapped identity slots 9–11. The retained design uses the unique low byte of each stock oscillator record to resolve X:0x5fd4+slot and moves scratch elsewhere. In the full 2/3/4/3 fixture, recipes 10, 20, 30 and 40 each produce a distinct digest; 17,948 blocks and 574,336 samples match the independent model with zero errors. All twelve voices complete, the renderer stays at 2,601–2,654 cycles per block, and the whole run reaches 52.789% of the observed deadline. These are distinct oscillator recipes, not yet polished instruments or independent filter/envelope/FX patches. No hardware was written.

  34. Four logical synth parts reach all twelve DSP voices

    An expected-byte-gated 76-byte MCU trampoline now overrides the physical slot only after the stock allocator has made its decision, then resumes the original voice initializer. A coupled 2/3/4/3 schedule selects all twelve requested slots and writes exact engine, recipe and logical-part identities into per-slot DSP memory. The stock Core 0 dispatcher reaches all twelve oscillator and allocator records; 17,880 completion observations contain zero invalid records, active audio remains below 51.531% of the measured deadline, and an invalid mailbox makes the patched image exactly match stock across transport, audio, timing, cycles and instructions. A later experiment now consumes these identities as four FM recipes; independent downstream patch state remains open. No hardware was written.

  35. First musical FM4 audition published

    Built a 20-note, five-chord arpeggio around two decaying carrier/modulator pairs instead of exposing the harsh serial-chain benchmark. The complete 440,000-sample render and four final phase words are bit-exact against an independent fixed-point model; peak magnitude is 0x49cd03 with zero clipped samples. The nine-second dry audition is now in the player above. It is labelled a candidate pending listening feedback, not declared musically successful from metrics alone.

  36. Musical demos are now a separate acceptance gate

    Removed the intentionally overloaded twelve-note-plus-drums stress render from the listening gallery. It remains retained as private diagnostic evidence, but it is not a useful example of what a new instrument should sound like. New synthesis work now needs two proofs: exact DSP correctness/timing and an authored musical render with note shape, dynamics and effects. The first sound target is a warm four-operator electric-piano/pluck phrase; the next VA target is a slow-PWM string pad with chorus.

  37. Automatic stock recovery is feasible

    Mapped the existing DSP reset, complete stock reload and STM32 whole-device watchdog. The new offline model leaves a healthy or wrapping heartbeat alone, restores stock after four frozen checks, disables custom engines after recovery, and deliberately lets the complete unit reset if communication or reload fails. Nine exact build-4486 code sites gate the report. This is safety planning around the musical DSP experiments—not a hardware install—and no device was touched.

  38. Candidate engine RAM passes a dynamic stock CPU ownership gate

    Replaced the impractically slow instruction-interpreter scan with a non-perturbing page-trap test on the normal JIT workload. After boot, every host page covering the X control mailboxes and all X/Y/P aliases of the external oscillator/effect state is set inaccessible. One forked child per mapping deliberately faults, proving all four detector mappings are armed; the parent then completes 1,200 frames with active voice, oscillator, reverb and delay passes. An identical unprotected control matches every retained execution, audio, state and event digest. This closes observed stock Core 0 CPU collisions for the retained profile only; physical DMA, Core 1, hardware persistence and broad Project coverage remain open. No device was written.

  39. Expanded Core 0 payload passes the authentic MCU selection gate

    Corrected a crucial emulator assumption: stock firmware sends 10,846 program words and does not upload the proposed P:0x3c00 code cave. The private build-only path now emits a 15,464-word Core 0 image, relocates its packed block, hash-gates the exact 105-word delta, round-trips experimental and official-recovery containers, and executes the genuine STM32 selector for both normal and alternate modes. Normal mode selects the relocated block; all other blocks remain unchanged. The stock sender also splits the complete 46,398-byte block into 90 510-byte chunks plus one 498-byte chunk, with contiguous coverage and an exact reconstructed hash. The final DMA/SPI primitive, DSP boot acceptance, physical DMA/Core 1 memory ownership, watchdog behavior and XT8 coexistence remain blockers. No hardware was written and no firmware artifact is public.

  40. Live effect controls gain exact stock fallback and rollback

    Wrapped the mapped global-reverb call in a 105-word expected-target-gated selector. CFX magic, ABI 1 and engine 1 choose the diffuser; invalid magic, version or ID tail-jumps to untouched stock after restoring the entry registers. Across 124 matched blocks, every fallback produces the exact stock 7,936-word effect digest. Live host writes also change two masked diffusion coefficients, with both 7,936-word variants remaining shadow-exact. A mid-session test records zero custom blocks before frame 1,985 and 62 exact blocks after the engine commit. Stock rollback is one engine-0 write; the mailbox now passes the retained stock Core 0 CPU page-trap test, while an execution-time watchdog, physical ownership and a checksum-gated recovery installer remain unresolved. A two-second stock-to-custom render is published above; no hardware was written.

  41. Return ABI and memory-range audit becomes executable

    Captured 37 register families at every stock and custom reverb return. Eighteen distributions match stock exactly. The nineteen differences are all dead before use and now have disassembly-gated overwrite sites; this includes the first downstream callee rather than stopping at the immediate caller. Cross-version metadata shows all five extracted normal Core 0 payloads end between P:0x2a30 and P:0x2a5e, at least 4,514 words below the proposed P:0x3c00 cave. The 128-word effect state follows the existing experiment dispatcher without overlap, and a later protected-page workload excludes observed stock Core 0 CPU access. DMA, Core 1 and hardware behavior remain outside that proof, so readiness stays false.

  42. First alternative native effect passes the integration gate

    Mapped the global reverb call at P:0x000d1f as a 64-word stereo block contract and redirected its expected build-4486 target into a zero-filled P cave. The clean-room two-stage all-pass diffuser matches an independent full-accumulator model for 256 isolated words and both final states, then for all 7,936 words and both live state banks in matched single-note and dense workloads. The dense fixture retains 12 note requests, four sample drums, delay and final audio with no reduced service counts. Direct cost is 1,305–1,358 cycles per block versus roughly 18,500 stock cycles. The timer high-water rise is logged as scheduler/wait behavior, not a simple CPU metric. A two-second listening render is published above; no hardware was written.

  43. Live stock/new-engine selector passes fallback and sustained-switch gates

    Built a native indirect dispatcher around the stock oscillator producer and moved the seven-word control ABI to host-addressable X:0x5fe0. Pre-note host writes switch one identical program both ways; stock selection, invalid magic, unsupported version and unknown engine 7 all match the unmodified 7,936-word oscillator digest and peak. In a sustained session, the stock path reaches 124 completions and 248 reader entries before an engine-2 commit at frame 1,985; afterwards 124 custom blocks / 3,968 words verify exactly while the reader count remains frozen, with pending depth one and no nesting. A two-second audible version switches at one second and is published above. The mailbox now passes the retained stock Core 0 CPU page-trap test; physical DMA/Core 1 ownership and real hardware remain unclaimed. No hardware was written.

  44. PWM and wave mixing pass the full native engine gate

    Moved the versioned pulse-width and saw/pulse/sub mixer into the stock oscillator-producer bypass. The single-note run verifies 7,936 words; the dense notes-plus-four-sample-drums fixture verifies 45,696 with zero mismatches, completes 1,428 voice and 452 drum blocks, makes no stock reader calls, retains delay/reverb and never nests. The direct routine costs 1,502–1,555 cycles per block. A two-second 192,192-word verified listening render is now published; no hardware was written.

  45. Continuous PWM and oscillator mixing pass the clean DSP gate

    A versioned seven-word control block now drives continuous pulse width and independent saw, pulse and sub levels. The pulse is made by subtracting two phase-offset reads from the proven 63/31/15/7-partial saw banks. Four settings—saw only, 25% pulse, 50% pulse and a mixed 37.5% pulse—produce 256 exact words, exact final phases and exact final controls against an independent full-accumulator model. Cost is 54.02 cycles/sample, so block-level control hoisting and scheduling optimization come before full-engine integration; no hardware was written.

  46. Four-band VA engine passes the dense native gate

    Integrated the 63/31/15/7-partial bank through a branch-free high-byte offset lookup, preserved the R4 voice identity and added exact band-aware shadow verification. The dense fixture verifies 45,696 words with zero mismatches, reaches 1,428 voice blocks and 452 drums, makes zero stock reader calls, retains delay/reverb and has no nested entries. Direct cost improves from 934–987 to 830–883 cycles per block. A new two-second verified render is published above; no hardware was written.

  47. Four anti-aliasing bands verified on the target core

    Added a block-rate selector for 63-, 31-, 15- and 7-partial saw/pulse table pairs and drove one controlled increment through every band. All 256 output words and both phase states match the independent model. Hoisting the selected table bases out of the sample loop reduces the clean kernel from 37.08 to 30.75 cycles/sample despite the selector. This is retained pre-integration evidence; the published fixed-band VA audio is unchanged while native producer integration and dense qualification are next.

  48. First alternative VA engine passes inside the stock synth

    Built an independently verified 256-sample clean-room kernel, then moved its 31-harmonic saw, pulse and sub mixer into the native producer bypass. The 3,971-frame dense fixture verifies all 45,696 oscillator words, completes 1,428 voice blocks and 452 drum blocks versus stock's 1,206 and 448, and keeps the original downstream filter/envelope controls, delay and stereo reverb active. Direct cost is 934–987 cycles per block; the two-second listening render verifies another 192,192 words. This is fixed-band, emulator-only work and no hardware was written.

  49. Native PM replaces the stock producer and passes the gate

    Mapped X:(R0+0x09) as the upstream phase increment, redirected the expected build-4486 producer call and reconstructed the downstream control/voice pointers. The direct engine skips all 2,407 stock reader calls in the dense control, verifies 45,696 output words with zero mismatches, reaches 1,428 voice blocks and 452 drum blocks versus stock's 1,206 and 448, and keeps delay/reverb active. The two-second listening render verifies another 192,192 oscillator words. This is the first throughput-qualified replacement-engine result; it remains emulator-only and no hardware was written.

  50. Optimized PM halves cost but confirms the additive-path limit

    Reworked the bit-exact PM loop around an indexed external Y-memory table, block-local modulator state and legal DSP56300 parallel moves. The clean kernel falls from 30.10 to 19.13 cycles per sample; the native program shrinks from 346 to 94 changed P words and its incremental block cost falls by 50.22%. Dense correctness still passes for all 34,816 completed words with active sample drums, delay and reverb. Capacity improves to 1,111 seam entries and 444 drum blocks, but stock reaches 1,206 and 448. The result remains emulator-only and fails the throughput gate; redirecting before the stock oscillator producer is next.

  51. Dense PM test passes correctness but fails throughput

    The first busy run exposed an R4 lifetime assumption; explicitly preserving it fixed the ABI. Exact-loop verification then proved all 34,176 completed PM words bit-for-bit while clean sample drums, delay and reverb stayed active. The hard result is capacity: native PM completes 88.72% of stock synth-seam work and 98.21% of drum blocks before the same frame cutoff, even though the Timer maximum rises by only 24 ticks. This is a failed safety gate; parallel-move optimization and inactive-voice skipping come next.

  52. Native PM tracks the keyboard from C3 to G4

    Ran isolated C3, E3, G3, C4, E4 and G4 fixtures through the native DSP program. All 47,616 generated words match the independent fixed-point model, each note has a distinct final audio digest, and steady phase increments agree with equal temperament within one Q0.24 LSB—a maximum 0.025296-cent quantization error. The native cycle distribution is unchanged across notes and no hardware was written.

  53. Native PM oscillator rendered inside the stock voice path

    Ported the clean-room two-operator PM kernel into the expected-word-gated DSP trampoline. A pitch audit caught and corrected the stock phase interval from 32 to 16 advances before publication. In the final matched C4 run, 7,936 native output words match the independent model, 122 steady active blocks use the exact calculated C4 increment, stock/restored ESAI output is bit-identical, and measured added cost is 1,182–1,235 cycles per 32-word block. The two-second gallery clip extends verification to 192,192 words; no hardware was written.

  54. First native DSP code executes at the oscillator seam

    Installed an emulator-only, expected-word-gated call/return trampoline at the mapped seam and used it to invert each 32-sample voice block. Matched stock, native and restored runs each reach 248 completions; audio changes under the mutation and restores bit-exactly. Direct seam-to-return counters measure 4 stock cycles versus 116 native cycles on every entry, giving a deterministic 112-cycle increment. The upper program range is only qualified for this fixture, and no hardware was written.

  55. PM oscillator passes through stock voice, FX and output

    Ran matched 3,971-frame stock-observe, host-side PM2 replacement and restored-observe profiles at P:0x000a7f. All three complete 248 voice blocks; PM replaces 7,936 samples and changes both seam and ESAI digests, while the restored run is bit-exact to the first control. The published two-second clip extends that experiment to 6,006 blocks. Timer bounds remain stable, but the replacement runs outside modeled DSP cycles, so a native program patch is required for a real cost measurement.

  56. Completion seam retains voice identity

    Tested the R4 pointer at every P:0x000a7f completion in the qualified high-activity capture. All 1,134 entries are exactly oscillator-record base + 0x25; subtracting 0x25 recovers the same eleven R3 records and corresponding R5 allocator identities observed at dispatch. The clean-room kernel can therefore select per-voice state directly at the seam without an external FIFO.

  57. Per-voice pitch and phase records validated

    Separated the P:0x00037a voice diagnostic from the oscillator-seam schedule. R5 advances by 96-word allocator records; R3 advances by 40-word oscillator records. Across MIDI notes 48, 52, 55, 60, 64 and 67, only two allocator offsets encode semitone position, while two oscillator offsets accumulate phase at equal-tempered ratios. Raw internal words remain private; only aggregate metadata is published.

  58. Post-oscillator integration seam validated

    Corrected the apparent synth/reverb reader split into a two-phase producer/completion pipeline over the same control list. Matched clean saw and square profiles both fill all 32 words at the common post-oscillator convergence point, with different rolling digests. The diagnostic is explicitly separated from canonical audio/timing because its extra trace boundaries alter emulator service scheduling.

  59. Stock drum sample memory reconstructed

    Recovered the MCU WAV validator, 64-slot allocator, external Y-memory range, descriptor table and Core0 kind-7 installer. A clean resampled bank keeps four stock sample voices active for 448 renderer blocks; the matched no-sample control completes only four zero-output blocks. Both retain the same 51.53% observed Timer maximum.

  60. Twelve-note stock stress request

    Sent six note requests to each synth through the original live STM32 method under a mapped high-activity Project. All twelve Y-memory allocator blocks change, both part accumulators and global delay/reverb paths are nonzero, and the maximum block cost is 42,214 of 81,920 Timer ticks. The result is retained as an exact event fixture; changed blocks alone do not establish twelve simultaneous dispatching voices.

  61. First new synthesis code and audible render

    Built a firmware-independent DSP56300 kernel lab, then assembled a stateful two-operator phase-modulation oscillator. The 39-word benchmark and two-second render both match an independent fixed-point model exactly; the long render is now published above.

  62. Measured PM cost and footprint

    The benchmark uses a shared 256-word sine table, two persistent phase words and 39 P words. It measures 30.10 modeled DSP cycles per sample before parallel-move optimization; twelve voices would represent about 7.1% of the raw 32-frame DSP-cycle deadline if added wholesale, but replacement cost and worst-case stock load remain unknown.

  63. Public emulator audio path

    Added opt-in WAV capture at the ESAI callback. The harness measures all six transmitter lines, selects active transmitter 4, exports the two time slots as stereo PCM and records frame count plus SHA-256.

  64. Gearmulator architecture study

    Confirmed that the existing Tracks harness already uses Gearmulator's exact dsp56300 revision. Adopted its checksum-gated patch discipline and separated multi-DSP emulation lessons from unsupported single-chip capacity assumptions.

  65. FM and Juno reference selected

    AMY is the strongest clean reference found: MIT-licensed fixed-point C with six-op DX7 routing, a Juno voice, bandlimited oscillators, filters and effects. It will supply behavior and vectors, not drop-in DSP code.

  66. Initial implementation target

    Build a 32-sample kernel ABI and assemble a sine lookup plus two-operator phase-modulation routine. The kernel, convergence seam, per-voice state mapping and host-side stock-path injection are complete; the next target is a version-gated DSP program patch with true cycle measurement.

Research boundary

Reproducible, offline, recoverable.

  • Firmware SHA-256 and exact expected old words gate every derived patch.
  • All DSP execution and audio generation shown here is offline; no Circuit Tracks is written.
  • Public artifacts contain rendered PCM and high-level metadata only—no firmware, ROM, DSP program words, host tables or detailed event traces.
  • Every change needs a variant, restored control, stable framing and bounded Timer result before hardware consideration.
  • Diagnostic stress audio is not presented as a musical demo; a new engine also needs an authored, listenable phrase before it is described as musically successful.