
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
v0.5.66 — September 7, 2026
- A bundled disk catalogue of 400+ disks. Mount a disk from the definitive archive and it is identified by name, OS, and what is actually on each half. Recognition is by content hash, not filename, so a disk still identifies correctly if it has been renamed, has no extension at all, or arrived as a Gotek-style numbered file.
.edmcontainer images load natively, and a file that genuinely is not a Mirage disk is reported as invalid instead of being loaded as garbage. - Disk metadata is editable. Wavesamples, key ranges and program names can all be edited against the full schema, and curation done locally can be harvested back into the shipped catalogue rather than living only on your machine.
- Disks in HFE and EDM containers boot in HLEv2 mode on both products, and a disk load now reaches sounds 2 and 3 instead of being hard-wired to lower/upper 1. The sample loop window is armed from the P63:P64 pair rather than the sample-end page, which is what the hardware does.
- The on-screen keyboard no longer misses note releases. Pointer capture was reworked; a key you slide off no longer sticks on.
- The keyboard is half its old height on both products, and the waveform panels are about 30% smaller, so more of the window is the thing you came for.
- You can save a disk back out to a file. Until now a mounted image was strictly read-only from your side: the firmware could write to it, but there was no way to keep the result. There is now a save gesture that writes the mounted image out to a real file, so a disk you have sampled to, renamed or re-parametered survives the session.
- It backs up before it overwrites, and it will not delete anything it did not create. Overwriting an existing image writes a backup alongside it first, and the backups are reachable rather than hidden somewhere you have to go looking. A destructive firmware write asks first.
- Write protection is honoured for real. The WD1772 controller reports the write-protect state and the firmware refuses the write itself, the way the hardware does — rather than the UI pretending the disk is locked while the emulation happily writes anyway.
- A floppy disk browser. Browse the catalogue, see what is on a disk before mounting it, and rename as you go — the rename flow advances by itself, and an "Unnamed" facet collects the disks still needing a name. The detail panel fits inside the plugin window rather than overflowing it.
- Your disk names are promoted into the shipped catalogue, so naming work done locally becomes part of the bundled data rather than being lost on reinstall.
- Parameters know which OS you booted. OS 3.2, MASOS and SP each have their own parameter definitions, and the parameter drawer reacts to whichever one is running — with live reads alongside the disk's own baseline, and cards that bold the values which differ from what the disk shipped with.
- RESET is a real power cycle — it reboots the mounted disk rather than half-resetting into an inconsistent state, and it waits for the drive to go genuinely quiet before swapping rather than trusting a fixed delay. A reboot glyph on the disk pill replaces the old header RESET button.
- A KEYS tab documenting the numpad-to-Mirage front-panel mapping, generated from the live binding map so it cannot drift from what the keys actually do. The numpad operators (
/ * + -) drive PARAM / VALUE / ON / OFF. - iPad layout. The UI scales to fit, the keyboard is sized for touch, and the parameters open in a drawer instead of a modal that ran off the bottom of the screen.
- The HLEv2 front panel's LOAD LOWER / LOAD UPPER plus a digit loads sounds 2 and 3 correctly.
- Front-panel polish: the CONTROL / SELECT / SEQ / LOAD / SAMPLE groups line up at matching heights, the keyboard and mod wheel no longer overlap, and the canvas is pinned to a true 4:3.
v0.4.6 – v0.4.12 — August 2026
- Disk browser rebuilt around how a real Mirage actually works: browse a scanned catalog, mount a disk (mounting just inserts it — nothing loads automatically), then use the classic front-panel LOAD LOWER / LOAD UPPER + digit + ENTER gesture to actually load a sound, with on-screen labels reconstructed honestly from the key sequence you type
- New in-app sound-disk browser with authentic per-slot LOAD, alongside the panel-driven workflow
- Settings → Appearance grew an OLED-blue display style option, a restyled onscreen keyboard, and a metal-grain chassis texture
- Accessibility pass — keyboard operability, visible focus states, and tab order fixed across the interface
- Loop-seam playback fixes: the Direct render path was dropping the host sample at the wavetable's marker tick, and one of three loop-mode code paths still ignored the sample's end-of-wavetable marker — both fixed. A DAW automation sweep during playback was also found to overwrite live sample data with zeros — fixed.
- Render Quality selector in Settings now actually changes engine behavior — it was previously cosmetic
- App icon rebuilt from the real logo, with a proper Windows/macOS/iOS icon pipeline
- macOS, Linux, and iOS build support brought up to parity with Windows; version numbering switched to a single tracked version file with an enforced bump-on-push check
Early August 2026 — front panel + hardware-accuracy fixes
- Traditional (non-Modern) front panel rebuilt to match an authentic Mirage hardware reference photo — bracket-grouped CONTROL / SELECT / SEQ / LOAD / SAMPLE clusters, with the waveform displays relocated below the panel
- Fixed a field-reported bug where sound-chip oscillators could be routed to the wrong output channel — now routed by the chip's own channel-assignment register field
- Fixed held notes cutting out unexpectedly at a sample's loop point (an oscillator "swap-partner" retrigger bug)
- Fixed a noise burst at the end of one-shot samples — a marker byte at the end of the wavetable should silence the oscillator, not play through as audio data
- Filter cutoff and resonance controls were wired backwards internally — now correct
- The emulated filter is now driven entirely by the running OS, removing a leftover override that could fight with the front-panel knobs
- Live disk swap — loading a new sound no longer reboots the emulated Mirage operating system
- Investigated a "LOAD button doesn't work" report — it turned out to be a test artifact, but the dig fixed real front-panel display glitches along the way (status flicker, waveform box sizing, markers, labels)
Late July 2026 — OS 3.2 conformance certification
- Ran the emulated OS 3.2 firmware through a full line-by-line pass against the original Musician's Manual — every documented front-panel, parameter, sequencer, and timing behavior verified against the real thing, closing every known gap
- Corrected the emulated hardware clock from a wrong rate to the authentic 2 MHz, fixing envelope and note timing across the board — some rates were previously several percent off the manual's own figures
- Removed the old native (non-WebView) editor entirely — the WebView-based interface is now the only UI
- Front panel keypad and LED display are now driven entirely by the emulated OS itself rather than a UI-side overlay — what's on the panel is what the real hardware would show
- Fixed MIDI notes played on the on-screen piano not reliably reaching whichever engine mode was active
June 2026 — full hardware emulation reaches audio
- Milestone: the cycle-accurate full hardware-emulation path now runs a complete boot → play a note → audio pipeline, tracking the fast-path emulation within ±20 cents
- Corrected the sound chip's internal register map and sample-address calculation against the datasheet and reference emulator sources, fixing a mis-decoded size field and a related timing bug
- Fixed sample playback to loop using each sample's actual loop points instead of always playing straight through once
- Fixed factory disk sample data being read incorrectly on the interleaved disk format — roughly 91% of sample bytes were wrong before this fix
- Fixed four separate hardware-emulation bugs that were preventing front-panel keypad presses from reaching the emulated OS
May 2026 — Modern panel mode
- New optional "Modern" panel view — a section-based redesign (Synthesis, Envelopes, Voice/Keyboard, Wavesample, MIDI/Mod) you can toggle to alongside the classic front panel
- Bank copy — copy a single parameter, a whole section, or an entire bank between banks A and B, with proper undo/redo
- Right-click context menu on Modern-panel controls
- Per-program data model — each bank now holds its 4 independent programs internally, with a program selector in the Modern view
- Wavesample section with hex-value sliders and draggable waveform markers for the per-wavesample parameters
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
