
You love the Ensoniq Mirage. You love its gritty 8-bit samples, its crusty filter, its absolute refusal to sound polished. What you don't love is tracking down a 40-year-old floppy drive that still works.
Enter DSKlusion.
We didn't model the Mirage. We didn't vibe-check the Mirage. We literally ran the original firmware through a cycle-accurate emulation of every chip that made the hardware tick — the 6809 CPU, the 32-oscillator ES5503 DOC, the CEM3328 4-pole filter, the 6522, the 6850, the WD1772 floppy controller — the whole beautifully overcomplicated mess of it.
Load your original sample disks. Play your original sounds. Get the exact same audio you would have gotten in 1984, minus the hum, the dust, and the nervous breakdown when the drive head goes out of alignment.
And yes — we kept the UI. All of it. The cryptic two-digit display. The parameter pages that require a cheat sheet to navigate. The workflow that punishes curiosity. We didn't fix any of it (or did we?), because fixing it would mean it isn't a Mirage anymore. You wanted authentic? Congratulations.
Some plugins give you "that vintage feel."
DSKlusion gives you the vintage.
Changelog
May 2026 — pitch investigation + standards
- Structural HLE pitch fix — 22-round investigation into DOC SizeRes computation; frequency pipeline fully decoded and ported from ROM
- Real-time pitch-bend and HLE2 mod-wheel routing — wheels now modulate pitch and vibrato depth live in both HLE and HLE2 engine modes
- Shared RotaryKnob component — extracted from per-plugin knob implementations; uniform pointer capture, fine mode, and double-click reset across all plugins
- MIDI receive-channel filter wired
- Settings modal owns all audio and MIDI config; JUCE standalone options button hidden
- UI scale persisted in DAW project state
- 15 DAW-automatable parameter relays via useJuceParam hook
- WebUI CSS reset + CSS custom property tokens; KnoS plugin architecture and UI standards adopted
- Catch2 v3 test infrastructure; JS→C++ event dispatch table refactored
v0.3.98 — April 2026
- LLE MIDI fully working — complete MIDI-to-audio path: ACIA → FIRQ → OS dispatcher → DOC register programming → audio output
- HLE pitch fix — correct pitch across the full keyboard range (FreqTest passing)
- ROM-accurate LFO — triangle waveform, linear rate, exponential depth, P38 tracking fix
- FIFO voice stealing — voices stolen in order, matching hardware behaviour
- 3-DAC filter accuracy improvements
- Disk browser — browse and load from a built-in factory disk catalog without leaving the plugin
- macOS, iPadOS, CLAP build support added
- HLE2 clean-room OS — Modern GUI, sampling pipeline (Phases 1–4 complete)
- Sprint 5 ROM accuracy audit — 4 hardware-verified bugs fixed
v0.3 — March 25, 2026
- Product renamed from MirageV to DSKlusion — standalone is now DSKlusion.exe, app data moved to Documents/KnivesOnStrings/DSKlusion/
- Company renamed from FauxCoding to Knives on Strings (manufacturer code KnoS)
- WebView UI migration — new React/Vite/Tailwind editor with HeaderBar (undo/redo, settings, about, piano, CPU monitor, VU, volume), about and settings modals
- LLE MIDI pipeline — complete 5-step Low-Level Emulation path from MIDI input through ACIA → FIRQ → OS dispatcher → DOC register programming → audio capture
- LLE firmware boot — CPU now runs with 500x fast-forward until OS entry at $893C, all HLE defaults switched to LLE
- LLE audio diagnostics — voice lifecycle now producing 0.8s sound with decay
- Segment converter fix — all 16 ROM LED patterns now render correctly
- VIA fixes — CA1 edge polarity, keypad Port A read, base address corrected (ViaTest now 5/5)
- DOC control register reverted to Mirage bit layout (HALT=bit 7, IE=bit 4)
- Peripheral double-stepping removed, ACIA TX edge-trigger regression reverted
March 16, 2026 — LLE Boot Milestones
- ACIA TX interrupt edge-triggered — eliminates continuous FIRQ loop
- Cross-OS boot verification: OS 3.2, MASOS 2.0, Sound Process
- Identity segconv mapping + shared segment accumulation — display shows "21"
- Separate system RAM from sample RAM, restore 4-bank PB0+PB1 select
- DCF filter level/reso handlers, ACIA 6850 shift register fix
March 15, 2026 — LLE Reconciliation
- OS boots to $893C — LLE boot fully functional
- Major reverse-engineering update — architecture, reference docs, cross-OS analysis
- DOC register page mapping corrected
- VIA display latch filters, edge polarity fixes
- CEM3328 filter audit — register map swap (critical fix)
- FDC Write Sector implementation, correct step rate table
March 1–2, 2026 — Code Quality
- Anti-aliasing filter, DoubleBuffer concurrency tests, multi-rate DSP
- 4 critical audio thread safety issues resolved
- 8 important issues fixed from code review
February 2026 — Foundation
- DOC range, ACIA baud, DRQ routing (LLE prep)
- Lock-free DoubleBuffer, SpinLock replaced with AbstractFifo
- ZDF/TPT CEM3387 filter implementation
- Test suite consolidated: 24 files merged into 8
- HFE MFM decoding with LSB-to-MSB bit reversal
