Live Patch · free editor playground — edits stay here, no slot is written
Direct patch LFO; matrix LFO rows are stored for later engine routing
Patch output only. Delay, reverb, distortion, and master FX live under Effects.
Vertical mixer for tracker channels plus Master. Pan, HP/LP and Low/Mid/High write mix state; per-channel DSP audio follows the next bus slice.
Tracker channels, 9ZERO9 matrix bus, synth preview bus (PATCH), and Master write song/mixer state; Master FX Wet affects the output bus.
ITU-R BS.1770-4 K-weighted meter on the master bus. Pick an industry target; toggle Auto-Trim to ramp the master to that LUFS.
0.0 dB
LUFS meter loading…
Mixer handles levels and lanes. Matrix moves values. It is not an audio cable between Synth and Effects.
Target: selected instrument slot.
Patchbay: solid lines are audio cables. Macros/matrix use dashed control cables.
Mix lanes ready.
Macros are named remote controls. One macro can move several synth or FX values at once.
Example: `Live POC` routes M1 to filter, M2 to FX space/feedback, M3 to drive, and M4 to pan. Result: a pad can get brighter, wider, dirtier, and broader without juggling four panels at once.
Macro routes are live. LFO/Velocity/Note/Random rows are stored for later engine routing.
No active routes.
Truth ledger & analysis coverage — show details
Use the panels in number order. Press Hold/Note in the top bar first, then move XY.
Target: instrument FX on selected slot.
The status line shows LIVE vs BYPASS (source of truth). In Tracking, the sequencer uses the saved instrument slot patch — open Effects and use Note/Hold here to hear the rack. Pick target, FX On, starter or Arm preview, move XY.
One edit target for the rack; Hear + Arm per bus (Master, I01–I08, Synth lab, CH1–4, 9ZERO9). Click a slot row to select it in the rack.
Editing: instrument slot
Hearing: —
One glance: what is stored, previewed, or LIVE per target (read-only).
Arming matrix idle.
Patchbay: insert, send, and output lanes show where audio actually runs.
FX signal ready.
Choose the slot/program, then drag. X and Y are the sound controls.
Choose an effect and move the XY pad.
FX Rack paramSchema-driven · Stage 1 sliders · active
paramSchema-driven FX rack. Each pedal renders the controls its DSP module declares. Audio flows through the FX router; toggle FX Router Active off for A/B comparison against the legacy fan-out below.
Legacy FX UI — kept for reference and A/B comparison. Audio now runs through the new FX Rack above. Toggling FX Router Active off in the new rack hands the audible path back to this legacy chain. Scheduled for removal in B.U.6.
Rack mix / engine / slots
Hall engine notes: docs/effects-live-reverb-dsp.md. Copy FX JSON copies the effect slice + reverb graph descriptor for bug reports.
No active effects.
Legacy routing overview. Lane choice now lives per-pedal in the new FX Rack above (Insert / Send / Master pills). Scheduled for removal in B.U.6.
No active effect route.
Legacy slot parameter editor. Per-knob editing now lives inside each pedal in the new FX Rack above. Scheduled for removal in B.U.6.
No editable effect parameters.
Step-Sequencer für den aktuellen Synth-Patch. Folgt dem Tracker; eigener Play übersteuert. Klick = Step on/off, Mausrad = Note ±1 Halbton. ?-Button rechts oben für die volle Anleitung.
Tracker
Pattern Editor
Song export stores composition, order, instruments, and patches.
Record captures browser audio to a WebM file.
Slot 01 ready. Slot click plays preview; Capture writes Editor -> Slot.
Load a small pattern into the current pattern to hear effects in context.
Cell
Row two-digit display (00–End); row range follows the active pattern length
Note C3, D#4, OFF or ---
OFF stops the running channel voice
Inst 01-16, copied song slot
Vol 00-64; empty/.. = no volume command
Fx command + hex byte, e.g. 047
M/S channel mute/solo in the header
Len per-channel row cycle (1/2/4/… buttons + field): shorter loop while the global playhead runs the full pattern. Neon JSON only — not in .mod/.xm.
Shf per-channel timing shuffle (0–100, like 9ZERO9 matrix): swing on offbeat rows + tiny timing nudge + light velocity humanize. Playback only; Neon JSON only — not in .mod/.xm.
Keys
A W S E... type a note into the focused note column
Y / X or NumPad / * keyboard octave down/up for the next note
1-9/0 pick instrument 01-10 in the note field
Inst type instrument cells with two digits, e.g. 02 instead of holding a key
O sets OFF; . clears the rest of the cell and advances
EDIT focuses the current tracker cell for keyboard editing
Space tracker start/stop
Arrows/Tab move the cursor
Inst/Vol/Fx per-character overwrite, caret, auto-step after 2/2/3 chars
Invalid invalid characters are rejected and briefly flagged in the status
Backspace/Delete delete note and advance step; clear block selection
Shift+Arrows select a block
Shift+PgUp/PgDn grow/shrink block by 16 rows
Step 1/2/4/8/16 entry spacing for drums, arps, pulses; grid and next target row highlight
Step Fill copies the focused cell along the step grid; with a block, only inside it
Step Thin clears off-step rows in the channel or block
Enter advance by the current step
[ / ] smaller / larger edit step
Escape cancel block selection
Ctrl+C/V block copy/paste when a region is marked (Shift+arrows); otherwise whole channel column
Ctrl+F step fill; Ctrl+Shift+F step thin
Ctrl+Shift+C/V pattern copy/paste (separate clipboard from channel/cells)
Ctrl+Enter/Delete row insert/delete
Ctrl+Up/Down pattern or block transpose ±1 semitone
Ctrl+Shift+Up/Down pattern or block transpose ±12 semitones
Transpose while playing keeps the current playhead row (no jump to row 00) for in-place edits.
Classic Fx
Loading command help...
Performance
Live Surface
Target: selected instrument slot.
Arm Macros turns macro routes on plus FX On. Arm Dub FX builds a wet dub FX rack.
Macros are live controls for prepared routes. Routes On plus LIVE routes make them audible.
Shows browser-safe audio/process state. GPU load is not exposed by browsers; frame time and voice counts are the useful POC signals.
Presets: Tracker nicht nötig (künstliche Kurzlast). „Long tasks“ zählt Hauptthread mit, solange es an ist — kein automatischer Komplett-Test des Trackers.
Ersetzt den aktuellen Song durch ein reproduzierbares Last-Pattern (Synth-Kanäle, Kanal-FX, 9ZERO9, Drum-Slot-FX). Sechs Stufen (1–6); optional Sweep 1→6 speichert sechs volle Reports in eine JSON-Datei zum Vergleich. Standard: stumm (Hear). Stop/Restore holt deinen Song zurück. Fixture-Metadaten bleiben im JSON bis Reset session. Im JSON-Feld benchmarkGuidance steht eine kurze Auswertung inkl. Ampel-Heuristik — für Pegel/Stimmen beim Hören bitte während Apply + Hear exportieren, nicht erst nach Restore.
Tier-Sweep · Kurve
Muss ich den Tracker benutzen? Nein. Du kannst nur in diesem Performance-Bereich bleiben: Presets laufen ohne Pattern, ohne Song-Änderung. Der Tracker wird von den Pack-v1-Presets nicht automatisch durchgetestet — das sind künstliche Kurzlasten (Sortieren, JSON, DOM in einem versteckten Sandbox-Container), kein „kompletter NeonTracker-Check“.
Was erwarte ich als Nutzer? Typisch: „Long tasks“ optional einschalten → Preset wählen → Run → in der Statuszeile die Zeit / Long-task-Δ lesen → bei Bedarf Copy report (JSON für Gerät oder Build). Ohne Run zählt „Long tasks“ nur, was ohhin auf der Seite auf dem Hauptthread passiert — also auch, wenn du woanders in der App klickst oder den Tracker spielst; das ist kein festes Testskript, sondern ein mitlaufender Zähler.
Dazu gehört alles in dieser Box: „Long tasks“ (Zähler für Blocker ab ca. 50 ms), „Pack v1“ / Scenario / Run, und „Copy report“ — eigenes JSON, nicht der Debug-Log. AudioWorklet/DSP werden hier nicht gemessen.
User load (Stufen 1–6): Wähle ein Last-Level und Apply + play (muted) — der aktuelle Song wird durch ein reproduzierbares Fixture ersetzt und der gemeinsame Transport startet (Tracker + 9ZERO9). Ausgang bleibt stumm, bis du Hear hochdrehst (zum Prüfen auf Knacksen / sauberen Klang). Sweep 1→6 lädt nacheinander alle sechs Stufen (stumm), erzeugt sechs Reports in einer JSON-Datei und eine Kurz-Vorschau (sweepPreview) zum schnellen Vergleich; nach dem Download erscheint eine eingebettete Kurve (Metrik wählbar, kein Dauer-Monitoring). Full session führt zuvor alle Pack-v1-Presets aus und hängt den Tier-Sweep in eine Datei (neon-benchmark-full-session-v1) — Long-Tasks werden für die Preset-Phase bei Bedarf automatisch eingeschaltet und danach wieder aus, wenn sie vorher aus waren. In der Statuszeile: kleine Ampel (heuristisch aus benchmarkGuidance.display). Restore song stoppt und stellt deinen vorherigen Song und die Master-Lautstärke wieder her — danach wieder „normal“ arbeiten. Unter der Zeile: Report kopieren (gleiches JSON wie die Leiste oben, inkl. audioStressSnapshot).
Speichern / Mail: Copy report oder Download JSON — der Browser kann nicht still in einen Projektordner schreiben; du legst einen lokalen Ordner an und sortierst die Dateien selbst. Mail summary öffnet nur den Mail-Client mit Kurztext (Längenlimit) — vollständiges JSON vorher kopieren oder anhängen. Optional: nach dem Hörtest Klang / Hardware / Notizen ausfüllen; das landet im JSON unter userStressSubjective (Vergleich mit dir selbst über Builds).
Repo: Heruntergeladenes JSON im geklonten Projekt mit npm run benchmark:ingest -- pfad/zum/report.json nach benchmarks/runs/ übernehmen (Manifest wird mitgeführt). Ablauf, Commit und Webroot-Sync: benchmarks/README.md.
Run / kein Countdown: Kurzlast; der Balken zeigt die Flush-Phase. Beim CPU-Sort-Preset kann die UI kurz einfrieren — normal, weil der Hauptthread beschäftigt ist.
EN: You do not need to use the tracker. Pack v1 presets are synthetic main-thread bursts (sort/JSON/DOM in a hidden sandbox); they do not auto-exercise all tracker features or produce a “full NeonTracker health report”. “Long tasks” counts stalls on the main thread while it is on — including anything else you do in the app (optional). Copy report exports a separate JSON, not the debug log; this is not DSP timing. User load: pick load step 1–6, then Apply + play (muted) swaps in a reproducible fixture and starts shared transport; output stays silent until you raise Hear to audition for crackle/clean audio. Sweep 1→6 runs all six steps (muted) and downloads one JSON bundle with six full reports plus a compact sweepPreview for quick deltas; after download an inline chart appears (metric dropdown, no continuous monitoring). Full session runs all Pack-v1 presets first, then the tier sweep, into one file (neon-benchmark-full-session-v1) — long-task observer is auto-enabled for the preset phase if it was off, then restored afterward. The status line shows a small traffic-light hint from benchmarkGuidance.display. Restore song stops and brings your previous song and master level back. Fixture metadata stays in JSON until Reset session. Toolbar Copy report / Report kopieren below — same JSON, includes audioStressSnapshot.
Save / mail: use Copy report or Download JSON — browsers cannot silently write into a repo folder; keep a local folder yourself. Mail summary opens your mail client with a short body (length limits); paste or attach full JSON from Copy/Download. Optional subjective fields go into userStressSubjective for self-comparison across builds.
Repo: In your clone, ingest a downloaded report with npm run benchmark:ingest -- path/to/report.json (writes under benchmarks/runs/ and updates the manifest). See benchmarks/README.md for commit + webroot sync.
Drum synth
9ZERO9 - DRUMSYNTH
9ZERO9-Matrix (eigener Drum-Pattern-Loop + optional Tracker-Playhead) und Tracker sind nicht dieselbe Spur — doppelte Drum-Hits nur, wenn du beides fütterst. Shift+Klick = Accent, Alt+Klick = Flam, Zeilenkopf S Solo / M Mute / Pegel. Unten Slot-Parameter (Tone, Tune, …) → drums.slots; Matrix → drums.nineZero9. Siehe ROADMAP.md (M-DRUMS).
Matrix
9ZERO9 · Step-Matrix
Klicks: Steps an/aus (nur Spalten bis Letzter Step; rechts davon gedimmt, kein Loop). M stumm. ▶ Matrix = playDrum + Kit. Ohne ▶ folgt die Spalte dem Tracker. Mausrad auf Zelle = Velocity (Alt feiner). Pfeiltasten + Leertaste mit Fokus in der Matrix (Tab auf den Block). ● REC speichert Pad-/Tasten-Hits in die Matrix solange der Matrix-Transport läuft (Quantize/Overdub siehe Toolbar). Matrix → Pattern schreibt die sichtbaren Steps in Tracker-Zellen (Kanal/Zeile wählbar).
Kit / Drum-Patch + Dice — sechs Slots (Kick … Perc); gespeichert unter drums.slots + Matrix unter drums.nineZero9. Unter den Slot-Tabs: zuerst Mode (Manual = Engine wählen, Smart = Zuordnung pro Slot-Typ), dann Engine bzw. Resolved, danach Tone & Regler.
Sample Channel
Trigger pads
Insert
Slot-FX (6×)
Gemeinsamer algorithmischer Hall → drumBus (vor drumGain). Pro Slot: erste Zeile = Kernregler; Feintuning in der zweiten Zeile (immer sichtbar). drums.sharedReverb = Raum-Charakter, drums.slots[].fx.reverbSend = Pegel pro Slot. Ein/Aus oben = drums.fxMasterEnabled (global dry, kein Insert/Hall-Send).
Erste Zeile: HP, Kompressionspegel, Hall-Send, Transient-Attack, Parallel-Anteil. Zweite Zeile: Resonanz, Saturation, Sustain der Transienten, Kompressor-Schwelle.
Master
Drum Bus
Master-Modulation auf der 9ZERO9-Summe (zwischen drumBus und drumGain). Live-spielbar: Cutoff (LP↔HP), Resonance, Drive, Glue (1-Knob-Comp), Tone (Tilt-EQ), Level.
Home row … K L then E F (QWERTY: ; ') (QWERTZ: ö ä). QWERTY highs: I P ]. QWERTZ highs: # Ü +. Letters QWERTY/QWERTZ · N/M octave.