UnholyUnion quick start
For the private a3e780b build • October 11, 2026
This guide describes the staged firmware’s implementation. Flash/boot success has not been confirmed, and physical controls, audio output and drone timing on Sparky’s unit remain untested. Use these steps once the instrument boots into UnholyUnion; this is not an instruction to flash again.
Make your first sound
- Start with the instrument’s master volume and your headphones/monitor level low. Listen through the FM-1’s speaker or its analog audio output, or select the FM-1 as an audio input in a computer/DAW and enable monitoring. USB MIDI by itself is not audio. The staged default build includes computer recording over USB (16-bit stereo, 44.1 kHz or host-selected 48 kHz); this is FM-1 → computer, not a computer-audio playback input. USB monitoring has not been tested here.
- Tap HOME until the HOME screen appears. Turn the printed ALGORITHM knob to select track 1. It selects tracks 1–4, not synthesis algorithms.
- Hold EDIT; turn Knob 1 to ANALOG; turn Knob 2 to SOFT PAD; release EDIT. The engine and sound load as you turn. Use the screen labels rather than preset numbers.
- Tap ARP until the title is ARP. Set Knob 1 MODE = OFF. Tap ARP until DRONE appears. Set Knob 1 HOLD = OFF, Knob 2 EVOL = 0%, Knob 3 TENS = 0%, Knob 4 RAMP = OFF.
- Play one panel key, then a chord. Raise the listening level gradually. SOFT PAD has a slow attack: give it time. PLAY is not needed for manually played notes or a steady held drone.
- On DRONE, set HOLD = ON, play a chord together, then release it. Set EVOL around 20% and listen for a minute. Keep TENS = 0% for now. A new chord, after releasing the previous keys, replaces the old latch.
Find your way around
Knobs 1–4 edit the four columns shown on the current page, left to right. A quick tap/release opens a page; repeated taps cycle that button’s family. Returning from a different family usually restores its last page, so tap until the wanted title appears. Leave a pause between taps: a rapid double tap can lock a shortcut layer instead of advancing normally.
| Physical control | What it does |
|---|---|
| ALGORITHM | Selects T1–T4 on ordinary pages; check the track in the header. Layers may intercept it. |
| PRESETS | Browses sounds across engines on HOME and most sound pages. It can change the engine. On sequence/list/action pages it has other roles; use HOME when exploring. |
| Hold EDIT + K1 / K2 / K3 | Engine / preset within engine / favorite. Release EDIT when done. The keyboard becomes engine shortcuts while this layer is open. |
| EDIT taps | Engine-specific EDIT 1/EDIT 2, applicable filter/operator/lane pages, then VOICE pages. Read the title and labels; irrelevant pages are skipped. |
| ENV taps | ENV (ADSR) → ENV DEST. A decaying sound with SUS at zero does not sustain forever merely because HOLD is on. |
| LFO taps | LFO → LFO 2 → LFO DEST → MOD → MACRO → repeat. |
| ARP taps | ARP → ARP 2 → DRONE → repeat. HOLD on ARP 2 and DRONE is the same setting. |
| FX taps | Track FX sends → SLICER → INSERT → INSERT 2 → global DLY → REVERB → CHORUS. |
| SCL taps | SCL (root, scale, quantization, transpose) → CHORD. |
| HOME taps | From a sound page: HOME. From HOME: MIXER → CLOCK → HOME. |
| SELECT | Global tempo, not a page selector. If BPM LOCK is on, hold GLO while turning it. |
| OCT− / OCT+ | Keyboard octave normally; back/cancel and confirm/do in dialogs, according to the footer. |
| PLAY / REC | Start/stop the transport / arm recording. An empty pattern will not make sound simply by pressing PLAY. |
| Hold HOME | Opens the settings menu (about 0.7 seconds). HELP under SYSTEM enables brief page hints. |
A shortcut layer opens after a hold (default 0.4 seconds, configurable) or immediately when you turn a knob with its button held. In EDIT/GLO/SCL/SEQ/REC set layers, OCT− undoes that layer’s changes. A locked layer can be closed by tapping its own button or HOME. Holding SAVE undoes the most recent supported sound/pattern/motion edit, not every arbitrary knob move.
Choose an engine by the sound you want
There are 13 selectable engines in this default build. Their browsing order is ANALOG, FM6, PHASE, LOFI, SAMPLE, VOICE, TRIO, WHEEL, GRAIN, PHYS, NOISE, SLICE, DRUM. DIGITAL’s old four-operator engine ID is reserved; its old sounds convert to FM6 rather than appearing as a separate engine.
| Family | Engines | A useful first direction |
|---|---|---|
| Warm pads and familiar synthesis | ANALOG; PHASE (phase distortion) | Start with ANALOG SOFT PAD or STRINGS. Shape waves/filter on EDIT and the amplitude on ENV. |
| Metallic and harmonic | FM6 (six-operator FM); WHEEL (tonewheel organ) | FM6 for bells and glassy pads; WHEEL for continuous organ beds. FM6 adds dedicated operator pages. |
| Character and voice | LOFI (chip/quantized waves); TRIO (three oscillators, ring/sync); VOICE (formants) | LOFI/TRIO for rough textures; VOICE for vowel-like drones. |
| Material and texture | SAMPLE; GRAIN; SLICE | SAMPLE plays stored material; GRAIN makes overlapping grains; SLICE chops sources. Empty/missing source slots can fall back to a sine and show NO SAMPLE. These are not live microphone-recording controls. |
| Physical and atmospheric | PHYS (physical models); NOISE | PHYS for plucks, resonances and sustained models; NOISE for wind and colored texture. A pluck may decay despite HOLD. |
| Rhythm | DRUM (eight-lane kit) | Use the sequencer/grid; the steady chord latch and drone processing exclude DRUM. |
Each track has its own sound, drone settings and four-slot modulation matrix. Global FX settings and the four MAC values are shared. Load sounds before setting up drone movement: factory sound loading resets EVOL/TENS/RAMP and the matrix, but retains track settings such as ARP/HOLD, level, pan, mute, scale/chord and sequence data. It also leaves shared macros alone.
What the four DRONE knobs actually mean
| Knob | Label and default | What changes |
|---|---|---|
| K1 | HOLD • OFF | With ARP MODE OFF, latches a steady note/chord after key release; the next fresh chord replaces it. HOLD OFF releases latched notes after you release physical keys. With an arp enabled it latches the arp’s chord instead. It creates no note by itself and does not override a decaying envelope. |
| K2 | EVOL • 0% | Smooth random motion of tone/shape and appropriate continuous engine parameters, with small voice detuning and breathing. Listen over tens of seconds/minutes. It is movement depth, not a tempo-synced step sequencer. |
| K3 | TENS • 0% | A target for a more open/intense sound: filter/brightness/resonance, pitch spread and deeper/faster movement, depending on engine. It can change the sound even with EVOL at zero. It boosts DIST only when the track’s distortion is already nonzero. |
| K4 | RAMP • OFF | Smooths movement toward TENS. Choices OFF, 1, 2, 4, 8, 16, 32 bars at the global BPM. OFF responds promptly with smoothing. With a numbered ramp, a drone starting from silence begins at zero tension. |
EVOL/TENS have internal ranges 0–127 displayed as 0–100%. RAMP’s bar choice sets the rate for a full 0→100% tension sweep: an 8-bar ramp toward 50% takes roughly four bars, not eight. Lowering TENS ramps downward too. The drone needs active voices; its walks stop when the track falls silent. It is temporarily bypassed during engine crossfade. SLICE keeps its source/slice/mode selectors fixed; DRUM has no drone processing.
Three drone recipes
Breathing chord. Load ANALOG SOFT PAD first. Set ARP MODE OFF. On DRONE set HOLD ON, EVOL 20%, TENS 0%, RAMP OFF. Play and release three keys together. Listen for a minute before adding more. EVOL 35–45% gives a stronger excursion; reduce it if the sound gets too restless. These percentages are suggested starting points, not measured target-hardware sweet spots.
A slow build. Start from that held chord. Set RAMP 8, then TENS 40–50%. At 120 BPM, eight full-scale bars are about 16 seconds; a 50% target takes about eight seconds from zero. Increase RAMP to 32 for a longer rise. Lower TENS to ease back down; select RAMP OFF when you want a prompt return. Choose lower output levels before raising tension or resonance.
One deliberate random destination. Start with EVOL 0%, TENS 0%. Tap LFO until MOD. K1 selects one of four slots, K2 selects DRIFT, K3 selects PAN, K4 sets a small positive AMT (about +10–15% on screen). Listen in stereo. DRIFT is a smooth bipolar random source and works even when EVOL is zero, provided its slot has a non-OFF destination and nonzero amount. It uses the drone’s first walk; it is not another “drift amount” knob. Choose CUT instead for tone motion, with engine-dependent results. Avoid PITCH initially: large amounts cover semitones, not just gentle tuning. Set the slot’s source OFF to remove this route.
Macros: assign a destination first
On a track’s MOD page choose a slot: K1 slot → K2 MAC1 → K3 REV → K4 a modest positive amount. Then tap LFO until MACRO. K1–K4 set MAC1–MAC4 (0–100% on the device, internally 0–127). MAC1 now increases that track’s reverb send above its base setting. Assign MAC1 to another track’s CUT/PAN/etc. if you want one gesture to move several tracks. Amounts add to base values and clamp at the destination’s limits; an already-maxed destination has little room to move.
The macros start at zero and do nothing without matrix assignments. They are shared song-level values, saved in projects; they are not four preassigned “ambient” effects. Return them to zero to remove their positive-source offsets. An AMP destination can silence a track with a zero macro, so avoid AMP for the first experiment.
Two different macro systems: holding FX exposes temporary performance controls FILTER, CRUSH, THROW, DEPTH. These are not MAC1–MAC4. Normally they snap back on release; with FX LATCH enabled they can stay active. FX + OCT− clears those latched performance effects/macros. Holding LFO while turning ordinary sound/FX knobs is a separate momentary-edit gesture: release LFO to restore, or press OCT+ while still holding it to keep the changes.
Stop, reset and hear a known sound again
Release the keys, set HOLD OFF, and stop PLAY if the transport is running. On DRONE set RAMP OFF, TENS 0%, EVOL 0%. Set any DRIFT matrix source OFF; EVOL zero alone does not disable it. Set MAC1–MAC4 to zero, or remove their routes if they control AMP. Close locked layers; clear latched FX with FX + OCT− if necessary.
Load ANALOG SOFT PAD again. Set ARP MODE OFF and HOLD OFF explicitly: these survive a sound load. Tap HOME to MIXER; on the selected track K4 MUTE should be OFF and K1 LEVEL above its minimum. Check the master/listening volume, audio cable or DAW monitoring. Play and hold one key long enough for the pad’s attack. Reloading a preset does not clear existing steps, shared effects, macros or all automation: if a running pattern changes your settings, stop the transport first. This restores a practical audible starting point without erasing a project or user data.
Device versus browser
Everything above can be performed on the instrument. The local editor offers broader visual editing and storage operations; the separate performance macro desk sends live MAC1–MAC4 SysEx values, raw 0–127, after you connect and the firmware replies. It does not assign matrix destinations for you. It is not a firmware installer.
Read this guide on iPad, but live editor/macro/installer MIDI use requires supported desktop Chrome/Edge on localhost or HTTPS with SysEx permission. iPad/Safari live MIDI control is not supported by these tools. On an iPad, 127.0.0.1 refers to the iPad itself; this Mac’s localhost URL is not a network publication. No external hosting was created.
Verification notes
Verified against a3e780b source and the staged package receipt: firmware tree has no changes relative to that compiled commit. Evidence: panel.c (printed labels/default mapping, configurable calibration); ui_input.c/ui_layer.c/ui.c (gestures/page memory/track selection/preset retention); params.c (page order, defaults/ranges/display conversion); engines.c/eng_*.c (selectable engines and presets); seq.c (steady latch/release); drone.c/mod.c (walks, exclusions, ramp-rate semantics, sources/destinations); felucca.c/usb.c/audio.c (default USB audio and analog path); editor.c and web/unholy-macros.js (macro protocol and raw browser range). Physical panel mapping is calibratable and is not independently verified on this unit. If a printed control behaves differently, stop and report its observed action rather than guessing further gestures.
Implementation verification and prior host tests are not confirmation of flash/boot, target audio quality, exact hardware timing or recovery. No firmware changes, device actions or external publication were performed to create this guide.