OPERATOR'S FIELD MANUAL

LUNAR-24 total-eclipse mark

LUNAR-24

A microtonal ambient drone machine — eight voices, one gesture per limb. All audio synthesized in code.

DROP 005 · BUILD V005 · ZRGRT · MMXXVI

↓ EDITION NOTICE
LUNAR-24 — ambient machine, by ZRGRT OPERATOR'S FIELD MANUAL · DROP 005 · BUILD V005
contents · drop page · source

EDITION NOTICE

This manual documents LUNAR-24 DROP 004 · build V004, an independent software instrument for LÖVE 11.5. LUNAR-24 is not affiliated with, endorsed by, or a reproduction of any hardware manufacturer; it is an original work inspired by classic semi-modular ambient hardware. No hardware firmware or manual text is reproduced. All audio is synthesized in code, and all artwork and diagrams are original.

The instrument is released under the MIT License, © 2026 the ZRGRT. This manual is part of that release. Facts and ranges follow the shipped build; where the software deliberately departs from the hardware rule that inspired it, the divergence is named in Appendix B.

PLATE 1THE PANEL AT A GLANCE

The LUNAR-24 front panel — eight voice blocks around the effector, mixer, filters, performance modules and the twelve-plate keyboard 1 2 3 4 5 6 7 8 10 11 12 13 14 15 16 17

PLATE 1 — The panel. Everything lives on one 1600×1034 surface: six drone voices around the effector, the two v/oct voices, the ten-channel mixer, the dual filter and the twelve-plate keyboard.

#MODULEWHAT IT DOES
1DUAL EFFECTOR (top centre)Two cartridge slots — X / Y / Z, BLEND, MASTER; click the card for the WALLET.
2DRONE 1 · 2 (top left)Classic five-oscillator swarm voices with MOD orbs and env outs.
3DRONE 4 · 5 (top right)The same classic pair.
4DRONE 3 (mid left)Papa Srapa Schmitt pair: a square modulator drives FM/AM and S&H noise.
5VCO A (mid left-centre)Morphing AS3340-style voice; sync master.
6VOICE MIXER (centre)Ten channels with PAN + VOL; the channel label is its mute.
7VCO B (mid right-centre)Mirror of VCO A; A's output is normalled into its FM input.
8DRONE 6 (mid right)Second Papa Srapa voice; boots latched in FM+AM at ~3 Hz.
9FILTER L / FILTER RCentre, behind the EFFECTOR tab: dual 12 dB Polivoks-style LP/BP with drive and distortion.
10LFO A (bottom far left)Square↔triangle morph, unipolar 0…+10 V.
11JOYSTICK (bottom left)Position-locking X / Y with offset windows and four quadrant LEDs.
125 STEP SEQ. VOLTAGE (bottom centre)Buchla-style 0…+5 V voltage source; shared pulser + PULSER 2/3 + S&H strip.
13PREAMP + ENVELOPE FOLLOWER (bottom right-centre)Mic / line input; ENV CV + gate output.
14LFO B (bottom far right)Second morphing LFO.
15SENSOR KEYBOARD (bottom centre)Twelve touch plates in two arcs; performance strip above the left arc.
16DRONE VOICES keypad (bottom right)2×3 momentary gates — same as computer keys 1–6.
17Utility bar (top right)S save · L browser · SCOPE · SKIN · ? help · P patch bay.

The machine's nouns

NOUNMEANING
plateOne of the twelve touch keys of the sensor keyboard.
arcHalf of the keyboard: six plates left or right of the eclipse.
voiceA sound generator — six DRONE voices plus two melodic VCO voices (A/B).
swarmThe five sawtooth generators inside a classic drone voice (1, 2, 4, 5).
orbThe moon-disc photo-detector beside each drone block; shade it to bend pitch.
cartridgeAn effect card — 15 of them, three programs each — loaded into the effector.
walletThe cartridge browser; click the loaded card to open it.
combThe effector-combiner: the dual cartridge chassis with BLEND and MASTER.
stripThe keyboard control strip above the left arc.
bayThe patch bay (P) — every source and destination in one view.

Reading the panel — knob colour grammar

Both skins (lunar, solar) obey the hardware grammar.

COLOURFAMILYWHERE YOU MEET IT
blue #2979ffmodulation sourcesLFO, pulser and S&H clocks, joystick, arp RATE/INT
green #2bc7abS&H / "sound machine"Sample & hold and the noise voice
orange-red #d1541cdestinationsFilter cutoff/resonance, sequencer stage knobs, preamp and envelope controls
cream #e9e0d2master / blendBLEND, MASTER, output levels
silver + blackper-voice detailTUNE / LEVEL / MUTE columns, per-voice filter trims

CONTENTS

BEFORE YOU BEGIN

The instrument boots already droning. Voices 1, 2 and 6 are latched, the boot preset is loaded, and the factory patch is in place: LFO_A → MIX_CUT_R, JOY_Y → MIX_CUT_L, JOY_X → DRONE_PITCH.

  1. Listen. Do not touch anything yet. The machine is playing itself.
  2. Take the joystick. It is position-locking: throw it and it stays. The filter opens on Y and the swarm bends on X.
  3. Touch a plate. Press to sound; hold to swell the pressure; drag vertically for direct control. Shift+click (or right-click) latches a note at 75% pressure.
  4. Gate the drones. Keys 1–6, or the DRONE VOICES keypad, open the six drone voices while held (they latch in HOLD mode).
  5. Shade an orb. Move the cursor over a moon-disc beside a drone block; pitch drifts like a hand over a photocell.
  6. Open the patch bay (P) when you want to see the wiring; SPACE dims the layer. H opens the in-app manual overlay, TAB the scope.

Housekeeping

GESTUREWHAT IT DOES
S / F5save a timestamped preset; L opens the browser.
F9start/stop a master-bus recording (48 kHz / 16-bit stereo WAV, ~11.5 MB/min, capped at 30 min / 2 GB per take).
ESC (hold ~0.5 s)quit — a ring fills at the bottom bar; a bare tap is safe.
CAUTION — LUNAR-24 is a live-performance instrument. Presets are your safety net: save often (S), and let the machine keep droning while you patch.
NOTE — If you hear nothing, the device may have refused the native real-time bridge; the app then runs silently and the HUD shows NO AUDIO - SEE LOG. Recovery and power-user knobs are in Appendix D.3.

1THE MACHINE

An instrument begins as a landscape. This one begins as a night sky already sounding.

LUNAR-24 is an experimental microtonal ambient drone machine. Eight voices — six drone swarms and two melodic VCO voices — run as separate blocks into a mixer with pan, a double filter, a distortion stage and a double effector. CV sources are routed through a patch bay. The intent: build full-blown drone and ambient tracks without multitracking — one gesture per limb keeps eight voices evolving.

BLOCKWHAT YOU GET
6 DRONE voices5 sawtooth oscillators each; voices 3 and 6 are Schmitt-pair Papa Srapa voices (square modulator → FM/AM + S&H noise).
2 V/OCT voicesVCO A/B: morphing waveforms, PWM, linear FM, sync, sub oscillator, ADSR + M loop, per-voice filter.
FiltersDual 12 dB Polivoks-style (LP/BP, EXP/LIN, drive, distortion).
EffectorDual cartridge combiner — 15 cartridges × 3 programs = 45 programs (13 derived from the reference card set + 2 app-original: MOONDOG, ECLIPSE).
Mixer10 channels with pan; EXT.AUDIO and mic PREAMP channels.
CV2 LFOs, 3 pulsers, 2 S&H, 5-step voltage sequencer, locking joystick, envelope follower.
Keyboard12-plate microtonal sensor keyboard: 25 scale banks, quantiser + per-note mask, arpeggiator, keyboard sequencer, pressure, vibrato.
Patch bay40+ sources × 28+ destinations on a live blueprint: module schematic cards, tap source → tap dest, flow register with amount meters, undo — the wire is a graph, not a drawing.
ExtrasScope (waveform + spectrum), two skins, preset save/load, Scala .scl import.
Transport48 kHz stereo, pure-code DSP; the native real-time audio bridge is the only engine (256-frame ring blocks), starting at boot with default pacing vsync off + cap 120 — the low-jitter studio posture. If the bridge or device refuses, the app runs silently and the HUD shows NO AUDIO - SEE LOG (power-user envs: Appendix D.3).
Original block diagram of the LUNAR-24 signal flow — voices, filters, effector and mixer/master across the audio plane; LFOs, pulsers, sample-and-holds, sequencer, joystick and preamp in the CV plane below, routed through the patch bay.
FIG. 1.1 — The machine on one page: audio crosses left to right in cream; voltage rises from the CV plane through the patch bay in gold. Callouts — 1 voices · 2 filters · 3 effector · 4 mixer/master · 5 CV sources · 6 patch bay.

Boot state. Everything lives on one 1600×1034 panel. It boots already droning: voices 1, 2 and 6 are latched, a boot preset is loaded, and the factory patch LFO_A → MIX_CUT_R, JOY_Y → MIX_CUT_L, JOY_X → DRONE_PITCH is in place.

2SIGNAL FLOW

Sound travels in one direction. Voltage travels wherever you patch it.

AUDIO DRONE 1–6 VCO A/B VOICE MIXER 10 ch · PAN FILTER L/R 12 dB · LP/BP DRIVE · DIST DUAL EFFECTOR cart L/R WET OUT EXT.AUDIO MIC → PREAMP DRY — VCO A/B, pre-filter EXT.AUDIO / PREAMP feed mixer channels 4 and 7 CV / PATCH LFO A/B · PULSER 1–3 · S&H A/B 5-STEP SEQ · JOYSTICK ENV FOLLOWER · ENV 1–6 · ORB 1/2/4/5 sources publish hardware-spec ranges PATCH BAY 40+ sources × 28+ dests VCO A/B · DRONE 1–6 · ORB FILTER L/R · DUAL EFFECTOR KEYBOARD CLOCK · RESET · GATES gold CV · red gate · amber clock · cream audio
FIG. 2.1 — Signal flow: audio chain above, CV routing below. Links in the patch bay follow the same colour grammar.
STAGEMODULEPATCH / PRESET NAMES
VoicesDRONE 1–6, VCO A/BENV_1…6, ORB_1/2/4/5, EG_4/5
MixVOICE MIXER — 10 ch, PAN + VOL—
FilterFILTER L/R — 12 dB Polivoks, LP/BPMIX_CUT_L/R, MIX_RES_L/R
DistortionDRIVE + DIST per filter side—
EffectorDUAL EFFECTOR — two cartridge slotsCART_X/Y/Z, CART_CV1/2/3, BLEND
OutputWET OUT; DRY sends and EXT.AUDIO / PREAMP feed the mixerdrySends.v4/v5

Each VCO voice also has a dry output (VCO A/B pre-filter, max 1 V); EXT IN with a preamp and the mic feed the mixer directly.

3THE CLASSIC SWARM — DRONE VOICES 1 · 2 · 4 · 5

Five sawtooths, one register ladder, no pitch input: tune it the way you tune a room.

Five sawtooth generators per voice in a register ladder — oscillators 1–2 low, 3 medium, 4–5 high (≈B0–D7). No V/oct: tune by ear, mute to build chords, and let the orb bend pitch with the light.

CONTROLRANGEWHAT IT DOES
TUNE ×5±1 octave (fine cents)Per-generator tuning. Hardware has no V/oct input, only knobs.
LEVEL ×50–1Per-generator level into the voice.
MUTE ×5on/offKills that generator; the 1–5 LED strip at the block edge lights for a muted oscillator.
MOD ×5on/offOn: the generator follows the orb, DRIFT and DRONE_PITCH CV. Off: "generators run stably, without deviations".
register ladder0 / +1 / +2 / +3.5 / +5 oct above BASEThe five generators' fixed octave offsets (continuous in software; discrete fixed ranges on hardware).
SUB tapsquare, osc-1 ÷ 2, −12 dBFixed low-end anchor under the ladder.
detune chorus±12.8 cents, stereo-spreadRides on top of the ladder; mutes build chords across the registers.
VOLT−1…+1Negative half transposes the voice down (to −2 oct); positive half is the cross-FM depth between the five generators (neighbour taps 0.5/0.4/0.3/0.2), scaled by the voice's AR envelope. Bipolar is a kept divergence (hardware transposes down, then cross-FMs past half-stroke).
HOLD / GATEon/offHOLD latches the voice on; GATE sounds only while pressed (keypad or keys 1–6).
ATT1 ms–4 sAttack of the AR VCA envelope.
RLS10 ms–8 sRelease.
env LED + env out0…+1 (≙ 0…+10 V)Envelope indicator; patch source ENV_1…ENV_6.
DRIFT0–50 centsOrnstein–Uhlenbeck random walk, block-size-invariant (driftTau 0.01–60 s via preset); sign alternates per oscillator, chorus width breathes over 20–40 s, per-osc AM wobble 0.15–0.5 rad/s.
orbup to +8 centsPhoto-detector at the block's right: shade with the cursor; patchable as ORB_1/2/4/5.
FIELD NOTE — the 1–5 LED strip lights for a muted oscillator. On LUNAR-24 the light shows what is off, so a dark strip and a lit strip are both correct — read the labels, not the glow.

→ SEE ALSO — §8 for SAH_A/SAH_B; §16 for orbs in the patch bay.

4PAPA SRAPA — DRONE VOICES 3 & 6

Two Schmitt triggers arguing at audio rate — the machine's most organic voice.

Two Schmitt-trigger oscillators: a low-frequency square modulator and an audio tone. Switch combinations give drone, FM, AM or noise — sirens, surf, monsters, volleys.

CONTROLRANGEWHAT IT DOES
RATE + ×1/×101–20 Hz (log)The square modulator's clock.
DIVIDER÷1–8Subdivides the modulator; the FM/AM pattern repeats at RATE ÷ DIVIDER. Also divides the internal S&H clock.
FM / AM switcheson/offoff/off = continuous drone · FM only = pitch wobble · AM only = amplitude wobble · both = FM+AM. (papaMode 1–4 in presets; 5 = clean noise.)
MOD0–2Depth: FM bends pitch by 2^(MOD/2) — ±6 st at 1, ±1 oct at 2; AM swings amplitude full → 1 − MOD/2 (silence at 2).
DRONE3/6_PITCH · DRONE3/6_FM±1 oct (pitch)Patch destinations for external pitch and depth control.
PITCH20–400 HzAudio square fundamental; hardware C0–E7 approx.
OCT · LO/HI−2…+2 (integer) · one octaveRange switch and octave toggle.
NOISE0–1White noise into the voice (LED tracks it) — also the S&H source.
S&H0–1Depth of the random steps on tone pitch (±4 st at full).
clock inPAPA3_CLOCK / PAPA6_CLOCKAny clock or LFO samples on each rising edge; unpatched, internal clock = RATE × range ÷ DIVIDER.
HOLD / GATE · ATT · RLS · env outas classic voices1 ms–4 s attack, 10 ms–8 s release; ENV_3 / ENV_6.
PAPA_3_MOD / PAPA_6_MOD0…+1.2 (≙ 0…+12 V)The modulator square as a source, unipolar.
clean noiseengine papaMode 5 / "noise"Dial PITCH to minimum, NOISE up, MOD and DIVIDER high (FM/AM off).

At boot voice 6 is latched on in FM+AM at ~3 Hz — a brief, musical wobble.

→ SEE ALSO — papa mode codes, Appendix D.4; the sample-and-hold strip, §8.

5THE MELODIC VOICES — VCO A & B

Two triangle cores, six shapes between them, and a sync that bites.

AS3340-style triangle-core oscillators, six waveforms, cross-normalled A↔B; VCO A carries the sync that resets VCO B.

CONTROLRANGEWHAT IT DOES
MORPH0–5SINE → TRI → SAW → INVSAW → SQR → PULSE; one continuous axis, readout shows the nearest shape.
TUNE±0.5 oct (1 oct of travel)Hardware is a one-octave knob 0…+1; software is bipolar.
VIB0–1Vibrato depth (rate from the strip VIB R / RATE B).
SUB knob + button0–1 (0.35 default)Square sub at half frequency.
PANL–RConstant-power pan into the mixer.
PWM0–1Pulse width for the pulse frames; CV dests VCO4_PWM / VCO5_PWM.
FMunipolar: 0 → +0.68 oct @ 25% → +3 oct @ fullLinear FM depth; cross-normalled A↔B. Dests VCO4_LINFM / VCO5_LINFM.
OCT+3 / LOW · −1switchesOctave range and sub-octave.
SYNC (VCO A)button / VCO4_SYNC > 0.5A's phase wrap resets B (B is slave); hard reset carries phase jitter + a 2 ms noise pip — the classic 3340 growl. A rising edge on the VCO4_SYNC CV additionally hard-resets A's own phase (and holds the pair linked while the CV stays high).
1v/oct12 st per voltTrue 1 V/oct: the keyboard's +8 V is 8 octaves. Dests VCO4_PITCH / VCO5_PITCH.
cv / pwm / sync jacks—VCO4/5_LINFM, VCO4/5_PWM, VCO4_SYNC.
per-voice filter20 Hz–20 kHzLP/BP, EXP/LIN (20 Hz·2^(10x)), CUTOFF / RES / DRIVE / DIST — a LUNAR-24 addition (hardware has only the master filters).
ADSR A / D / S / R1 ms–4 s / 1 ms–4 s / 0–100% / 10 ms–8 sEnvelope.
GATE · HOLD · MbuttonsGATE fires; HOLD keeps the VCA open; M loops the attack→release cycle continuously (D/S bypassed) at any A/R — self-running modulation, no gate needed.
EG_4 / EG_50…+8 VEnvelope as a patch source.
DRY0–1Raw morph output, pre-envelope and pre-filter, onto the main bus (drySends.v4/v5).
FIELD NOTE — self-running drone: press M. The envelope loops, and the voice drones itself — no gate, no keyboard, no hands. Slow or fast is A and R.

→ SEE ALSO — §10 for the keyboard's V/oct normals; §16 for EG_4/EG_5 in the bay.

6THE LOW-FREQUENCY OSCILLATORS — LFO A & B

The tides: two unipolar clocks that feed the orbs and the filter.

CONTROLRANGEWHAT IT DOES
WAVEsquare ↔ centre mix ↔ triangleContinuous morph; boots at centre (50/50). Kept exactly from hardware. Sine/saw/ramp remain reachable as patch sources only (VCOA_SINE, VCOA_SAW, …).
RATE + ×1/×6/×100.02–20 Hz (log)Rate; the switch multiplies. Both LFOs run the same range — hardware doesn't specify per-LFO.
out + LED0…+1 (≙ 0…+10 V)Unipolar by design (feeds the orbs and other CV dests); sources LFO_A / LFO_B; LED lights above mid-swing.

7THE JOYSTICK

Throw it, leave it. The joystick remembers where the performance was.

Position-locking: throw it and it stays. Click to jump, drag to position; arrow keys nudge.

CONTROLRANGEWHAT IT DOES
padX, Y ±1 (≙ ±10 V)The physical gesture; out = 0.5·axis + offset, clamped.
X / Y knobs±1Mirror the pad position.
OX / OY±0.5Offset windows: left −10…0 V, centre −5…+5 V, right 0…+10 V (the knob shifts the window by ±5 V).
quadrant LEDs · JOY_X / JOY_Y—Active-quadrant indication and patch sources.
FIELD NOTE — the joystick is two patch sources and two knobs at once. Let the offset windows do the transposing: OX at centre gives a ±5 V bend, OX left gives a one-way dive to −10 V.

→ SEE ALSO — the factory patch, §16; arrow-key nudging, Appendix D.1.

8THE FIVE-STEP SEQUENCER & PULSER

Not notes: voltages. Five stages, one shared clock.

A Buchla-inspired source of voltage, not a note sequencer: five stages, each a continuous 0…+5 V.

CONTROLRANGEWHAT IT DOES
PULSER0.25–20 HzThe one shared clock: source PULSER_1, sequencer internal clock, S&H A's external clock, keyboard external beat.
CLK (SEQ_CLOCK)—Free-running pulse output — emits whether or not the sequencer runs.
STAGES3 / 4 / 5Cycles the number of active steps; step LEDs show the running stage.
S1–S50.00–1.00 (≙ 0…+5 V)Step voltages, source SEQ_CV — hardware spec kept.
gate ×5on/offGate off kills that step's pulse, not its CV (SEQ_GATE).
GATELN20 ms–1 sGate pulse length.
INT/EXT + P1/KEY—INT runs from the PULSER; EXT from Pulser 1 or the keyboard beat. Patch SEQ_EXT_CLOCK advances on rising edges.
PULSER 2/3RATE + WIDTHFree-running patch clocks (PULSER_2, PULSER_3).
S&H A/BRATE + INT/EXTA clocks from Pulser 1, B from the sequencer gate (P1 / SEQ); sources SAH_A, SAH_B.

The keyboard has its own clock and sequencer: KEY_CLOCK, SEQ_KBD_CV / SEQ_KBD_GATE (see §11).

→ SEE ALSO — the keyboard clock, §11.5; SEQ_CV among the voltage specs, Appendix A.

9THE PREAMP & ENVELOPE FOLLOWER

The hardware senses tapping through a piezo under its keyboard; the software takes the system input instead.

The preamp takes the system recording device — an external microphone or line source — captured at 8 kHz mono, feeding the follower and the EXT.AUDIO mixer strip.

CONTROLRANGEWHAT IT DOES
GAIN1–100 (0…+40 dB)Audio-path gain; the bottom mutes (hardware "set GAIN to minimum" rule).
EXT in (EXT_SRC)line / instrumentIn LUNAR-24, EXT.AUDIO is its own mixer channel and extAudio has no live source yet (the jack is silent for now; the mic path is live).
ENABLEon/offRoutes the channel into mixer strip 4 (EXT.AUDIO).
MICarm / idleArms the system input device for the preamp and follower (Bluetooth and monitor devices are skipped). Master-bus WAV recording is separate: F9 starts/stops it, and it never auto-starts (unless LUNAR_REC=1 is set — see §16).
clip LED> 0.98 FSTrue post-gain clip indicator, holds 1.5 s.
FOLLOWER ATTACK / RELEASE1–100 ms / 50 ms–1 sEnvelope follower slopes; vertical CV meter.
GATE LEDon > 15%, off < 10%Hysteresis gate activity.
ENV_CV / ENV_GATE0…+1 / 0…+0.8 (≙ 0…+10 V / +8 V)Patch sources; without a mic the strip reads NO MIC and the follower sits at zero.

10THE SENSOR KEYBOARD — PLATES & JACKS

Twelve plates, two arcs, an eclipse between them.

Twelve capacitively sensitive plates in two arcs of six. Pressure follows finger surface area, not force.

PLATE 2 — Sensor keyboard: twelve plates in two arcs, centre clock and transpose cluster. The centre button carries its state as a glyph — triangle = stopped, bars = running.

Original diagram — side view of one touch plate with pressure rings and a press arrow beside one arc of six plates carrying just-intonation ratio tick marks.
FIG. 10.1 — One plate, side view: pressure follows finger area — hold to swell, tip to stab. One arc of six, with the 5-limit just-intonation tick marks the quantiser can snap to.
CONTROL / JACKRANGEWHAT IT DOES
plates12, two arcsPress/drag a note; hold to swell pressure (≈1.5 s ramp) or drag vertically for direct control.
latchShift+click / right-clickLatches a plate as a drone note at 75% pressure; click again to release.
EDIT (gold)on/offRetune plates: click cycles pitch offsets 0 / +1200 / −1200 / +700 / −700 cents. Shift+click (or right-click) toggles the plate's scale degree — the per-note mask.
tuning griddeg = round(col·n/11)Plates snap to the current scale grid; tuning banks and .scl import set the grid.
red button + LED—Starts/stops the keyboard clock; the blue LED pulses on the beat.
◁ / ▷±24 semitonesTranspose, readout between them.
CLOCK IN (KEY_CLOCK_IN)pulseExternal pulse auto-switches the keyboard clock to external; editing BPM reverts to internal.
KEY_CLOCK0…+1Patch source pulsing on every keyboard-clock beat, internal or external.
V/OCT · gates8 oct (0…+8 V) / 0…+10 VHard-normalled to VCO A/B internally; dests VCO4/5_PITCH stay free.
PRESSURE0…+0.8 (≙ 0…+8 V)Source PRESSURE / PRESSURE_OUT; mode-dependent (§11).
RESET / KEY_RESETrising edgeResets arpeggiator/sequencer; a preset-settable clock reset flag.
DRONE VOICES keypad2×3 pads 1–6Momentary gates for the six drone voices — same as keys 1–6.
FIELD NOTE — pressure follows surface area, not force. To swell a note, flatten the finger and hold; to stab, touch with the tip. The same physics runs the PRESSURE source into the VCO filters.

→ SEE ALSO — the strip that reads all of this, §11; pressure modes, §11.5.

11THE KEYBOARD STRIP

The performance brain lives above the left arc.

The strip is a second, self-contained instrument: scale and quantiser, split modes, arpeggiator, sequencer, glide, vibrato and pressure — all read from the plates below.

11.1  Scale & quantiser

CONTROLRANGEWHAT IT DOES
SCALE < >25 banks12 / 19 / 24 / 31 / 41-TET, JI 5-limit major, and all 19 named hardware scales (Semitones, Ionian, Dorian, Phrygian, Lydian, Mixolydian, Aeolian, Locrian, Blues major/minor, Pentatonic major/minor, Folk, Japanese, Gamelan, Gypsy, Arabian, Flamenco, Whole tone). Readout shows name + BANK n/N.
.scl importdrag onto windowAppends a Scala scale (cents and ratio lines accepted); saved inside presets.
QUANTon/offOff: continuous microtonal keyboard (drag vertically to sweep between neighbours). On: snaps to scale; per-bank mask applies.
ROOT55–440 Hz (log)Quantiser root.

11.2  TWIN / SPLIT

CONTROLRANGEWHAT IT DOES
TWIN6+6Left six plates drive VCO A, right six VCO B, each side tracking its own loudest plate; every parameter shared.
SPLIT6+6Same split, plus independent per-side arp and seq controls (ARP R / SEQ R).

11.3  Arpeggiator

CONTROLRANGEWHAT IT DOES
ARPon/offWalks the pressed plates in plate order (left→right, per-plate edits included, duplicates deduped).
RATE0.5–16 HzFree-run rate when CLK is OFF.
INT1–12Semitone transposition per VARIATION pass.
CLKOFF / ¼ / ½ / ×1 / ×2 / ×4Multiplies/divides the keyboard clock; OFF = free-run.
HOLDon/offSnapshots the held chord; the snapshot survives release, later presses extend it.
directionUP / DN / PP / RNDUp / down / ping-pong / random.
VARIATIONOFF / ×1 / ×2 / ×3Repeats the progression transposed by INT, cycling at any pattern length.
RHY8-step row, length 1–8Gold-dot rhythm gate (drag to paint); notes gate at 75% of each step.

11.4  Keyboard sequencer

CONTROLRANGEWHAT IT DOES
SEQon/offAdvances only while a plate is held (keyboard run mode).
LEN2–16Sequence length.
DIV¼ / ½ / ×1 / ×2 / ×4Division of the keyboard clock.
SEQ EeditorDrag each step's pitch bar (0.00–0.50 V readout), click the dot row for gates (drag paints), paint the 8-step RHY rhythm row.
step pitch0…+600 centsAdded to the last held plate pitch (quantised when QUANT is on); gates default on.
DIRFWD / BACK / PP / RNDDirection.
CVCONT / GATEDContinuous, or only while the step's gate is on; sources SEQ_KBD_CV / SEQ_KBD_GATE.

11.5  Glide, vibrato, pressure, clock, presets

CONTROLRANGEWHAT IT DOES
GLIDE0–0.3 sPortamento on both VCOs. LEGATO: glide suppressed for single-plate play, applies with ≥2 plates; no effect while the arp runs (glide always applies).
VIB D / VIB Rdepth 0–1 / rate 2–8 HzVibrato for VCO A. VCO B has its own VIB depth and RATE B in the VIBRATO block.
VIBRATO DELAY0–10 s (0.3 default)Ramp-in after each new gate; after the delay the engine ramps vibrato in linearly to full strength over ≈0.3 s.
PCTLon/offPressure scales each voice's vibrato depth from 30% to 100% (vibPressureCtl, preset round-trips).
PRESSURE modePRESS / ASR / AD / LOOP / RNDPRESS follows plate pressure; ASR rises/falls with playing; AD one attack–decay per press; LOOP repeats while held; RND latches a new random level on each plate press and glides at the RISE/FALL slopes (RATE does not re-roll while a plate is held). Exposed as PRESSURE; hard-patched +20% into both VCO filter cutoffs.
RISE / FALL / RATE1 ms–10 s / 1 ms–10 s / 0.01–50 HzPressure slopes; RATE is the free-run rate of the pressure machine (no per-hold re-roll in RND).
clock10–300 BPM (120 default)Red button run/stop; BPM stepper (− / readout / +) edits tempo; round-trips as keys.clock.bpm. External KEY_CLOCK_IN pulse auto-switches to external; editing BPM reverts to internal.
PRESETS A–D4 slotsHold ~0.6 s to save the whole keyboard state (scale/quantiser, root, mode, legato, transpose, arp, sequencer, per-plate edits, glide, vibrato, pressure) to data/presets/kbd_A…D.json; click to load live. Tempo is deliberately excluded.

12THE VOICE MIXER

Ten channels, one order, pan and silence.

Ten channels, same order as the hardware panel:

DRONE 1 · DRONE 2 · DRONE 3 · EXT.AUDIO · VCO A · VCO B · PREAMP · DRONE 4 · DRONE 5 · DRONE 6

CONTROLRANGEWHAT IT DOES
PANL–RConstant-power pan per channel.
VOL0–1Channel level.
labelclickMute toggle (red = muted).
FIELD NOTE — the channel label is the mute. Click a name to silence a voice without losing its level — the fastest way to thin a drone.

13THE DUAL FILTER

The Polivoks stance: resonance that keeps its low end.

A double 12 dB Polivoks-style filter — stable, no tuning, and “you will not lose low frequencies when increasing resonance”. FILTER L / R live under the EFFECTOR tab.

CONTROLRANGEWHAT IT DOES
FREQ20 Hz–20 kHzCutoff; exponential law default (20 Hz·2^(10x)); CV dests MIX_CUT_L/R.
RES0–1Resonance; keeps the low end while it climbs. Dests MIX_RES_L/R.
DRIVE0.5–8Distortion amount (hardware GAIN). Above 2 a post-filter VCA aggression stage engages on the mix filters — the drive stops being input warmth and gains post-loop crunch that rises with RES.
DIST0–100%Distorted-signal balance, with 70/30 crossfeed between channels.
LP/BP · EXP/LINbuttonsMode and CV law per side.
MOD L / MOD R0–1 (default 1)CV amounts for MIX_CUT_L/R; CV L is normalled to CV R when nothing is patched there — the hardware rule.
LINKoff by defaultCV-only, the hardware rule: the left cutoff CV drives both filters; the right FREQ and RES knobs stay fully independent while linked.
boot mismatchper-start seedsThe two channels are deliberately not bit-identical — the "live stereo" stand-in.

MASTER (wet volume) lives on the effector, right of BLEND.

14THE DUAL EFFECTOR

Two cartridge slots; the filtered mix goes through the cards.

A dual cartridge combiner fed by the filtered mix. CV X / Y / Z (±10 V) control the loaded programs; BLEND is the effect level, MASTER the wet volume.

Original line-art diagram of one cartridge slot — inserted card with three program buttons, X Y Z knobs with CV jacks, blend knob, callouts one to five.
FIG. 14.1 — One slot, line art: 1 card · 2 programs 1-2-3 · 3 X/Y/Z knobs + CV · 4 blend · 5 slot. The other slot is its mirror; each channel remembers its own X / Y / Z.
CONTROLRANGEWHAT IT DOES
L / RselectActive channel; each channel remembers its own X / Y / Z (CART_X/Y/Z, CART_CV1/2/3, BLEND sum with the knobs).
X / Y / Z0–1 + CVProgram parameters of the active slot.
1 / 2 / 3programsSelect the active slot's program from the loaded card; RST resets to program 1.
BYP L / BYP Ron/offPer-channel bypass.
cartridge cardclickShows the loaded card + its three programs; opens the WALLET (click a card to load, ESC or click outside to close).
BLEND0–100%Wet crossfade.
MASTER0–1Output volume.
routing modesnormal / swap / cascade / loop / M-SEngine-state software extra.

15THE CARTRIDGES

Fifteen cards, three programs each — the color of the machine.

Fifteen cards, three programs each. X / Y / Z per program:

CARTRIDGEPROGRAMXYZ
CATHEDRAL — various reverbsShimmerOctave upOctave downDecay
Oct up delayFeedbackDelayReverb
Space reverbFeedbackDelayReverb
MAGIC — pitched delaysPitch delayFeedbackDelayPitch
Reverse Pitch delayFeedbackDelayPitch
Bell pitchdelayFeedbackDelayPitch
TIME — classic mod delaysDelay reverbFeedbackDelayReverb
Delay chorusFeedbackDelayMod depth
Delay VibratoFeedbackDelay/vibrato rateMod depth
VIBROTREM — modulationTremoloDepthRateReverb
VibratoDepthRateReverb
ChorusDepthRateReverb
FILTER — filter and wahAuto WahFilter amountEnvelopeReverb
HP/LP filterHP cutoffLP cutoffResonance
Notch filterCut 1Cut 2Resonance
VIBE — rotary phase modsPhaserDepthRateReverb
FlangerDepthRateReverb
Resonance flangerResonanceRateMod depth
PITCH SHIFTER — octave and pitchSynthTaverOctave downOctave upDirect
OctaverOctave downOctave upDirect
Pitch HarmonizerPitch 1Pitch 2Voice mix
INFINITY — big ambientResonance ReverbPre delayPre delay modDecay
O.D.D oscillating dirty delayFeedbackDelayPitch
Resonance DelayFeedbackDelayPitch
STRING RINGER — audio-rate modSynthetic RingFrequencyResonanceSub
Ring ModFrequencyRateReverb
S&H Ring ModPitch SpeedS&H RateFreq Ring Mod
SYNTEX-1 — bass synthVibe SynthVibrato RateResonanceSub
Pulse SynthTremolo RateResonanceSub
Acid SynthToneColorSub
DIGITAL — sample-rate crusherFilter DACSample rateCutoffInput gain
LFO DACSample rateLFO speedLFO amount
Envelope crusherSample rateEnvelope amountInput gain
GENERATOR — noise mini synthFM tonePitch 1Pitch 2FM 2-1
RampLFO ratePitchPitch mod +/-
VoiceCutoffPitchLP/HP
ORCHE — reverse delayOne-shot LongDelay timeFeedbackTrigger threshold
One-shot ShortDelay timeFeedbackTrigger threshold
Free-run LoopDelay timeFeedbackDelay mod LFO/RND
MOONDOG — street canon delayTwo-Voice RoundCanon spacingVoice decayAttack crisp
Street MarchCanon spacingVoice decayAttack crisp
Percussion CanonCanon spacingVoice decayAttack crisp
ECLIPSE — umbra corona swellerTotalityUmbra depthCorona levelEclipse rate
Ring of FireUmbra depthRing focusEclipse rate
Corona ChoraleUmbra depthOctave/FifthEclipse rate

The reference table's thirteenth card is a reverse-delay card; LUNAR-24 ships ORCHE in that slot. Two cards are app-original: MOONDOG and ECLIPSE. Cartridges swap mid-drone — programs crossfade, nothing glitches.

FIELD NOTE — Shimmer climbs an octave as it decays; ECLIPSE dims to umbra and returns as corona. Both are written to play the machine by themselves — load one and leave the room.

16THE PATCH BAY & SOFTWARE EXTRAS

Everything the machine can say, it can say to everything else.

PLATE 3 — The patch layer (P): module schematic cards with blueprint glyphs, tap a source node then a destination node — the wire is a graph, not a drawing. Colour grammar: gold = CV, red = gate, amber = clock, cream = audio.

FEATUREWHAT IT DOES
Patch bay (P, or click any panel jack)The FLOW blueprint: modules are schematic cards, ports are nodes; tap out-node then in-node to connect, tap a connected node twice to clear its links, the register rows take the wheel for amount and ✕ to clear, hover lights the whole route, node LEDs pulse with the live signal. The wire is a graph, not a drawing — links live as lit nodes and register rows, never as drawn cords. 40+ sources → 28+ destinations: both VCOs (CUT, PITCH, MORPH, SUB, PWM, LINFM), VCO4_SYNC, MIX_CUT_L/R / MIX_RES_L/R, DRONE_PITCH, DRONE3/6 PITCH/FM, PAPA3/6_CLOCK, KEY_CLOCK_IN, KEY_RESET, SEQ_EXT_CLOCK, SAHA/B_IN, SAHA/B_CLK, CART_X/Y/Z, CART_CV1/2/3, BLEND, MIX_BUS. Sources include all LFOs/pulsers/S&H, seq CV/gate/clock, keyboard clock/gates/V/oct, joystick, ENV follower, EXT_SRC, PRESSURE, EG 4/5, PAPA 3/6 MOD, ENV 1–6, ORB 1/2/4/5, the six VCO waveform outs per voice (VCOA/B SINE…PULSE, audio-rate, ±5 V), and VCO4/5 DRY (audio-rate, max 1 V).
Audio-rate jacksThe VCO waveform and DRY outs stream per-frame audio — a real audio connection class, shown cream in the colour grammar. Patch any of them to MIX_BUS to inject the raw oscillator — pre-envelope, pre-filter — straight into the mix bus, or to MIX_CUT_L/R for audio-rate cutoff FM of the Polivoks mix filters. The DRY outs are clamped to the hardware's 1 V spec; a patch at amount 0 is bit-exact silent, and CV sources into the same jacks still work at control rate.
Blueprint glyphsEvery card carries its module's glyph — the schematic shorthand for what lives inside: five dots = drone swarm; square wave = Papa-Srapa pair; sine = LFO; crosshair circle = joystick; sine-to-square = morphing VCO; step bars = sequencer/pulsers; response curve = filters/effector/mix; staircase with dots = sample & hold; ADSR line = preamp follower; slanted plates = keyboard; hub = drone core; dashed box = other; twin peaks = CATCH-22; pulse on a wire = PULPO-23.
Link coloursThe grammar the nodes and register rows obey: gold = CV, red = gate, amber = clock, cream = audio. SPACE dims the layer to 15%; Ctrl+Z undoes.
Factory patchLFO_A → MIX_CUT_R, JOY_Y → MIX_CUT_L, JOY_X → DRONE_PITCH.
NYDUS — the family linkThe three ZRGRT instruments (LUNAR-24 · PULPO-23 · CATCH-22) find each other automatically, same machine and LAN, zero configuration. A status LED in the title strip is an honest meter: amber 1 Hz searching, green a local sibling, blue a LAN peer, red lockdown. Pair with CATCH-22 and its twin filters appear as an FX destination — you send a bus, it comes back filtered (jitter-targeted, 128-frame chunks). The drummer law: when PULPO-23 is in the room it keeps the pulse — lunar follows its wire clock (the badge reads PULPO KEEPS TIME), and a fresh transport start always takes its tempo. Turn the BPM knob to grab the pulse back; when the last PULPO-23 leaves, lunar keeps the pulse on its own clock again. Software can join the room too: an agent peer (role "agent") may play the panel over the link — plates via PARAM, notes via raw MIDI, transport via CLOCK — the instrument reacts exactly as if a hand pressed it, and announces it with a toast. NYDUS=0 disables the link, NYDUS_FX=0 only the audio hop; the instrument runs exactly as before without it.
TransportThe native RT bridge is the only engine and starts at boot. Default pacing is vsync off + cap 120 (low jitter against the shallow RT queue); if the bridge or device refuses, the app runs silently with NO AUDIO - SEE LOG. Tuning knobs in Appendix D.3.
Scope (TAB)Triggered waveform + 32-band spectrum (40 Hz–16 kHz) with FREEZE.
Skins (SKIN)lunar (moonlight) / solar (daylight cream).
PresetsS / F5 save a timestamped slot; L browser (click to load live). boot is written on first run and loaded after.
RecordingF9 records the wet master bus to 48 kHz / 16-bit stereo WAV (~11.5 MB/min) in the save dir, timestamps in the name; a take stops at 30 minutes or 2 GB. LUNAR_REC=1 auto-starts a take at boot.
Telemetry & envLUNAR_AUDIT writes a per-block CSV (LUNAR_AUDIT_PATH, default /tmp/lunar-audit.csv). Headless knobs: LUNAR_SMOKE, LUNAR_SHOT, LUNAR_BLOCK, LUNAR_SKIN=lunar|solar, LUNAR_VSYNC, LUNAR_CAP. The native RT transport is the only engine; LUNAR_RT_QT, LUNAR_RT_PERIOD, LUNAR_RT_BACKEND, LUNAR_RT_DAEMON, LUNAR_RT_WAKE_MS, LUNAR_RT_HB_MS tune it (see Appendix D.3).
KnobsDrag vertically; Shift = fine; wheel ticks; double-click resets; right-click randomises.
FIELD NOTE — the RT engine is always on. Default pacing is vsync off + cap 120 (low jitter against the shallow RT queue); LUNAR_VSYNC=1 restores vsync at the cost of added jitter.

→ SEE ALSO — patch semantics and printed ranges, Appendix A.

Original divider artwork — the totality mark as an astronomical chart: black disc, even corona rings, fine azimuth ticks and degree cross-ticks. No crescent.
FIG. A — Divider: the totality mark, charted. A black disc, an even corona, azimuth ticks — the same geometry the appendices are about to measure.

AVOLTAGE REFERENCE

These are the printed panel ranges, not calibration targets.

Software normalises to ±1.0 ≙ ±10 V and 0…1 ≙ 0…+10 V.

SOURCE / PORTLUNAR-24 PUBLISHESHARDWARE SPECNOTE
EG (VCO A/B)0…+0.80…+8 Vhardware spec kept
ENV (drone voices)0…+1−10…+10 Vkept divergence: gate-chaining sees an envelope
LFO0…+10…+10 Vunipolar by design
VCO—10 V peak-to-peak (−5…+5 V)1 V/oct pitch input
PULSER±1−10…+10 Vbipolar clock pulse
JOYSTICK X/Y±1±10 V, 0 V centreoffset windows −10…0 / −5…+5 / 0…+10 V
S&H±0.5±5 V
VOICE 3/6 MODULATOR0…+1.20…+12 VPAPA_3/6_MOD, unipolar
SEQ CV0…+0.50…+5 Vhardware spec kept
SEQ GATE / keyboard gates0…+10…+10 V
ENV FOLLOWER CV / GATE0…+1 / 0…+0.80…+10 V / +8 V
Keyboard V/OCT0…+0.80…+8 V8 octaves
PRESSURE0…+0.80…+8 Vhardware spec kept
DRY OUT (VCO A/B)—max 1 Vpre-filter raw voice
WET OUT—max 2 Vmain output
EXT AUDIO / PREAMP—line / instrument; 1 MΩ, up to 40 dBmedium difference (1:1): hardware senses keyboard taps via a piezo under the keys; software takes external system input through the same preamp + follower (kept divergence, not a missing feature)
Power—12 V DChardware only
NOTE — These are the printed panel ranges, not calibration targets. Patch semantics follow them exactly: the sequencer never leaves 0…+5 V, the joystick never leaves ±10 V.

BKEPT DIVERGENCES — THE NUANCES

Where software deliberately differs, the divergence is kept, named, and listed here.

HARDWARE RULELUNAR-24
ENV outs are bipolar −10…+10 VENV_1…6 publish 0…+1 (0…+10 V).
VOLT transposes down, then cross-FMs past half-strokeBipolar: negative half = transpose, positive half = AR-scaled cross-FM.
Effector X/Y/Z knobs shared L/REach channel remembers its own X/Y/Z.
Envelope self-generates only near min A/RM loops the envelope at any A/R (D/S bypassed).
Pressure random re-rolls at RATELatches per plate press; RATE does not re-roll while held.
Keyboard sequencer steps are plate-derivedStep pitch = 0…+600 cents offset from the last held plate.
2 LFOs on the panel2 LFOs + 3 pulsers (PULSER 2/3 with RATE + WIDTH).
Master filters onlyVCO A/B add per-voice filters.
13 reference cartridges15: ORCHE + app-original MOONDOG and ECLIPSE.

CPANEL CONTROLS AT A GLANCE

AREACONTROLS
DRONE 1/2/4/5TUNE ×5 (±1 oct) · LEVEL ×5 · MUTE ×5 · MOD ×5 · BASE · VOLT · HOLD/GATE · ATT · RLS · DRIFT · orb · env out
DRONE 3/6RATE + ×1/×10 · DIVIDER ÷1–8 · MOD (FM/AM depth) · OCT · PITCH · LO/HI · FM + AM switches · NOISE · S&H depth · clock in · HOLD/GATE · ATT · RLS · env out
VCO A/BMORPH · TUNE · VIB · SUB · PAN · PWM · FM · OCT+3/LOW · −1 · SYNC · LP/BP · EXP/LIN · CUTOFF · RES · DRIVE · DIST · A/D/S/R · HOLD · GATE · M · jacks
LFO A/BWAVE (square↔triangle morph) · RATE · ×1/×6/×10 · out
JOYSTICKpad (lock) · X · Y · OX · OY · zone LEDs · out ×2
SEQPULSER · CLK in · STAGES 3/4/5 · S1–S5 · gate ×5 · GATELN · INT/EXT · CV out · GATE out
PULSER 2/3 + S&H A/BRATE + WIDTH ×2; RATE + INT/EXT clock ×2 (strip under the seq block)
PREAMP / FOLLOWERGAIN · EXT in · ENABLE · MIC / ATTACK · RELEASE · CV meter · GATE LED · ENV out · GATE out
KEYBOARD12 plates · centre run button · BPM stepper · ◁ ▷ transpose · scale bank < > · QUANT · EDIT (plate offsets + per-note on/off) · TWIN/SPLIT · ARP (HOLD, direction, VARIATION, RHY editor) · SEQ (SEQ E step/gate/rhythm editor, LEN, DIV, DIR, CV) · P1/KEY · EXT. · RST · RATE · INT · VIB D · VIB R · GLIDE · LEGATO · ROOT · PRESSURE (mode, RISE, FALL, RATE) · DRONE VOICES keypad
MIXER10 × (PAN, VOL, mute-by-label)
FILTERSFREQ · RES · DRIVE/GAIN · DIST · LP/BP · EXP/LIN · CV L/R · MOD L/R · LINK
EFFECTORL/R · X · Y · Z · CV X/Y/Z · 1-2-3 · RST · BYP L/R · BLEND · MASTER · wallet
Utility barS · L · SCOPE · SKIN · ? · P

DKEYBOARD, MOUSE & ENVIRONMENT

D.1  Keyboard shortcuts

KEYACTION
1–6gate drone voices 1–6 (hold; latches in HOLD mode)
Ptoggle patch bay
SPACEdim the flow layer
Ctrl+Zundo patch (in the bay)
TABscope on/off
S / F5save preset
Lpreset browser
F9start/stop master-bus WAV recording (30 min / 2 GB cap)
Hfield manual overlay
← → ↑ ↓nudge the joystick
F3developer telemetry
F11fullscreen
ESC (hold ~0.5 s)quit — a ring fills at the bottom bar; a bare tap is safe

D.2  Mouse

GESTUREACTION
drag plate / holdnote with swelling pressure
Shift+click / right-click platelatch or unlatch a drone note (EDIT mode: toggle scale degree)
drag knob / Shift+drag / wheeladjust / fine / tick; double-click reset; right-click random
click panel jackopen patch bay on that port
drag .scl onto windowload a Scala scale
click cartridge cardopen the wallet

D.3  Power-user RT environment variables

VARIABLEEFFECT
LUNAR_RT_QTTarget ring queue in blocks (default 4, clamped 1–8). Lower = lower latency, less jitter headroom.
LUNAR_RT_PERIODRequested device period in frames for the in-proc bridge (default = block; sanitised to pow2 ≥16, ≤ block). Daemon mode ignores it.
LUNAR_RT_BACKENDPin the miniaudio backend: null, alsa, pulseaudio, jack, wasapi. An unknown name or refused init → NO AUDIO - SEE LOG.
LUNAR_RT_DAEMON1 runs the device in the standalone rtserver daemon and attaches the app as a client.
LUNAR_RT_WAKE_MS / LUNAR_RT_HB_MSDaemon wake-timeout bound and client heartbeat timeout (diagnostics).
LUNAR_BLOCKRing block size in frames (default 256; the engine buffer is sized 512).
LUNAR_VSYNC / LUNAR_CAPOverride the default pacing. Set only deliberately: vsync-locked 60 Hz adds jitter against the shallow RT queue.
LUNAR_AUDIT / LUNAR_AUDIT_PATHPer-block telemetry CSV for soak/parity runs.

D.4  Papa mode codes

Papa presets and tests carry the engine's papaMode 1–5 (1 DRN · 2 FM · 3 AM · 4 FM+AM · 5 clean noise); the panel derives 1–4 from the FM/AM switches.

COLOPHON

Written under the eclipse, in the year MMXXVI, by the ZRGRT.

ZRGRT builds small machines for long listening.