PiDI native screen reference

SDL / KMSDRM + GLES2 kiosk for the Raspberry Pi TFT70 (800×480). These captures are the live pidi-native renderer (dummy display), not the archived Python / Tk UI. Top chrome is always PiDI · HOME · POWER. Jam tabs SYN · SEQ · PAD · KAO · CHD stay while you are in those modes. Everything else is a HOME tile, or SETTINGS → LOG / PORTS.

Global chrome

Always on the top bar of every primary mode.

PiDIBrand. Not a button.
< BACKPrevious mode when there is history.
HOME5×3 launcher for every performance mode (twelve tiles, no scroll).
POWERShutdown / reboot / SCREEN OFF / blanking timeout. Kiosk-safe — no desktop power UI.
SYN SEQ PAD KAO CHDJam shortcuts. Visible while you are in those five modes.

Audio lives in jambox-engine. This UI is a thin client over a Unix socket (or TCP on a host). Recapture after UI changes: ./scripts/capture-pidi-docs.sh.

HOME

Launcher. New screens get a tile here instead of another persistent tab.

HOME 3x3 launcher tiles
00 — HOME (5×3). LOG and MAP live under SETTINGS.
00 — HOME. MAP is a launcher tile; LOG and PORTS live under SETTINGS.
SYNTH / DRUMS / SEQ / PADS / KAOSS / CHORDSPerformance cluster. SYN SEQ PAD KAO CHD also stay as jam tabs.
SONGSPlay Standard MIDI Files locally and/or USB→DIN.
PRESETSEight named slots for a session snapshot, plus FACTORY.
FXInserts plus keys vs kit trims, and EP-style punch-in pads.
MIXLIVE / KIT / SEQ buses and per-pad clip faders.
MAPMIDI channel remap: tap an input channel, then pick one or more outputs.
SETTINGSWIFI, UPDATE, FONT, plus tiles through to LOG and PORTS.

SYNTH

Morphing wavetable voice, CRT scope, on-screen keys.

SYNTH screen with morph scope and keyboard
01 — SYNTH (scope shows the current A/B blend)
A / BMorph endpoints. Tap either to open the MORPH picker for that side.
SWAPFlip A↔B and invert the blend so the sound stays put.
VIBOpens the vibrato overlay (depth, rate, wheel vs always-on).
SAVEBake the current morph + drive/tone + delay/reverb/flanger sidecar into user-wavetables/. No name pad — it writes an auto name.
OCT − / +Transpose the on-screen keyboard.
MORPH TONE LEVEL ATK REL FLANGE RATEVertical sliders. Morph is A→B; tone is the Chamberlin LPF. FLANGE is voice flanger mix; RATE is the flanger LFO speed.
ScopeLive picture of the morph cycle.
KeysOne octave. Hidden when a USB keybed is connected (MPK, Keystep, …); sliders and the scope grow into that strip. Stay visible for DIN interfaces (U2MIDI). Notes record into SEQ / pad REC while those are armed.

MORPH picker

Opened from SYNTH → A or B. One grid assigns both endpoints (A, then B).

MORPH pair wavetable picker
08 — MORPH PAIR (A highlighted pink, B teal)
Voice tilesTap to assign the armed side. Drag the grid to scroll the bank (builtins + AKWF + user).
SAVE ASBake the current blend to a new user wavetable + .fx.json sidecar (includes flanger mix).
DONEKeep the pair and return to SYNTH.

VIBRATO

Opened from SYNTH → VIB.

Vibrato overlay
19 — VIBRATO
WHEEL / ON – ALWAYSFollow CC1 (joystick) or run at the set depth with no wheel.
DEPTH − / +0–2 semitones.
RATE − / +1–9 Hz.
DONEBack to SYNTH.

DRUMS

Its own HOME tile (not a SYNTH overlay). 16 analog-style voices, per-drum note repeat, and WAVE edit.

DRUM KIT pad grid
09 — DRUMS
Note repeat picker
09b — NOTE REPEAT
Pad gridTap to play / select. Pads with note repeat show a teal tint plus 1/4 · 1/8 · TRIP.
NOTE REPEATPer selected drum (or ALL DRUMS). OFF is one-shot. HOLD a pad (screen or MPK) to repeat at 1/4, 1/8, 1/8T, 1/16, or TRIPLE — hits stay on that beat grid.
LOCK / HOLDHOLD (default): repeat while the pad is down. LOCK: tap a pad to start, tap again to stop. Locked repeats keep the same grid after you let go. PANIC / NOTES OFF clears latched lanes.
WAVEOpens the one-shot scope + TONE SNAP PITCH DECAY sliders.
ALL DRUMSPoint macros / note repeat / insert FX at the shared kit bus.

Drum hits record into SEQ / pad REC while those are armed.

SEQ

Free-timing overdub looper. First take is the backbone; later REC stacks layers.

SEQ sequencer
02 — SEQ
REC BACKBONE / OVERDUBFirst press records the backbone. Press again to lock loop length and play. Later REC is an overdub take. Armed REC also captures SYNTH keys, drums, CHORDS, and incoming MIDI — you can leave SEQ while it records.
PLAYStart playback (needs a backbone).
KEEP / DROP / UNDOCommit, discard, or peel the last layer.
LEN ×2 / LEN ÷2Double or half the loop.
WRAP / EXTENDWRAP stays inside the length; EXTEND can grow the cycle while overdubbing.
BEEPOptional clave click at the start of each loop so a four-on-the-floor (or any even groove) still tells you where 1 is. Playback only — SAVE SEQ and >PAD do not bake it in.
>PADArm, then tap a PADS slot to copy the loop onto a phrase.
− BPM / + BPMTempo. Chrome also shows BPM.
QNTBAR / BEAT / OFF launch/stop grid (shared with PADS). Default BAR so layered takes lock to the clock.

PADS — PLAY

Launch clips. Empty pads only select; they do not arm record.

PADS PLAY view
04 — PADS · PLAY
Grid A1–B8Tap a filled pad to launch / toggle. Green = sounding, blue/teal = clip ready, gray = empty. LOOP vs ONE is the subtitle.
QNTBAR / BEAT / OFF. Two pads hit in the same bar (or beat) start together on the engine clock. Same control on SEQ.
STOPStop every playing phrase.
OUTLOCAL / USB / BOTH (on the edit footer; PLAY keeps routing).

PADS — EDIT

Record into empty pads and trim per-clip voice / channel / gain.

PADS EDIT view
03 — PADS · EDIT
PLAY / EDITToggle views.
REC / STOPArm record on the selected empty pad, or finish a take. CHORDS and SYNTH notes land here while REC is on.
CLEARArm, then tap a pad to erase it.
MODEArm, then tap a pad to toggle LOOP ↔ ONE-SHOT.
FLW / LOCKFollow the live morph, or lock a voice snapshot.
SYN / MIDILocal soft-synth vs MIDI-only for that pad.
CH*Force an out channel or keep the recorded one.
V− / V+Per-pad gain.

KAOSS

XY pad in the Kaossilator / Kaoss Pad tradition. Scale notes on the onboard synth and/or factory CCs to a hardware synth.

KAOSS XY pad with GLOW viz
12 — KAOSS (GLOW viz, finger on A3; X = pitch, Y = tone on LEAD)
XY padPress / slide / lift. X along the bottom, Y up the left. Default viz is CELLS (12×7 LED field); GLOW is the soft bloom in this capture. Set that in ⚙.
PROG / SCALE / KEY / OCT / GATEEach opens a tap-to-pick grid. GATE arps note programs only.
HOLDFreeze the last XY after lift (Kaossilator-style). On an FX program it also keeps the wet mix.
BPM −1 / +1 / −5 / +5Gate arp tempo.
FULLHide the control strip so the pad fills the body. Hold still on the bottom edge (~0.7s) to leave.
SETKAOSS settings (pad FX destination, viz, color, OUT, channel). The button shows the current pad-FX target (SET VOX / SET DRM / SET BOTH).

Factory MIDI matches the original Kaoss Pad: CC#12 = X, CC#13 = Y, CC#92 = pad touch. Playing while SEQ is recording captures the pad notes.

KAOSS programs

PROG is two families. NOTE (teal) programs play the scale on X. FX (orange) programs do not start a note — they sculpt the synth voice (not the drum kit). The PROG button and each picker tile are color-coded and tagged NOTE / FX.

KAOSS program picker
20 — PROG picker (SHOW ALL). Curated set is LEAD / MORPH / VIB / FILTER / ECHO / DRIVE / FLANGE / BEND / WAH / FL RATE / VIB FX / BEND FX / WAH FX.

Note programs — X = scale pitch

LEADY = TONE (sticky LPF).
MORPHY = MORPH (A→B, sticky).
VIBY = vibrato depth. Lift restores the previous depth.
WAHY = tone oscillation rate (auto-wah LFO on the filter). Bottom = slow sweep, top = fast wobble. Lift restores the sticky tone.
BENDY = pitch bend about the pad midline (center = unison, ±12 st). Curated.
FLANGEY = flanger mix. Curated. X plays the scale; no rate wobble on this pad.
LEVEL / DECAY / ATTACK / GRIT / DELAYY = volume / release / attack / drive / delay mix. Behind SHOW ALL.

FX programs — no pitch from the pad

FILTERX = TONE, Y = MORPH (momentary unless HOLD).
ECHOX = delay time, Y = delay mix. Lands on the SET pad-FX target (voice / drums / both).
DRIVEX = drive, Y = reverb. Same pad-FX target as ECHO.
WAH FX / VIB FX / BEND FXSame Y maps as the NOTE twins, but no pad tone — use over a GATE arp, HOLD drone, or SEQ. Curated.
FL RATEX = flanger rate, Y = flanger mix. Curated FX twin of FLANGE.
LVL FX / DEC FX / ATK FXSHOW ALL FX twins of LEVEL / DECAY / ATTACK.
SPACE / RESO / WASH / CRUSH / DUB / SWELLSHOW ALL extras — delay/reverb/drive pairs. Lift restores unless HOLD is on.

Every NOTE effect has an FX path. FILTER / ECHO / WAH FX and the other orange tiles do not play notes. If you open them on an empty pad you hear silence. Latch a sound first (or run a GATE arp / HOLD), then sculpt. Pad FX follows SET → VOICE / DRUMS / BOTH. For different reverb on keys vs kit, use FX MODE sliders (TARGET: VOICE vs TARGET: DRUMS) — those inserts are independent.

KAOSS scales

Opened from KAOSS → SCALE. Tap a full name instead of cycling three-letter codes.

KAOSS scale picker
13 — SCALE picker (SHOW ALL)
Scale tilesCurrent scale is highlighted. Drag to scroll.
CURATED / ALL SCALESToggle from KAOSS ⚙ (SHOW ALL).

KAOSS full pad

Opened from KAOSS → FULL. The pad takes the body of the 800×480 panel; top chrome stays.

KAOSS full pad
14 — FULL PAD (hold the bottom edge ~0.7s to leave)
PadSame XY play, just larger. HOLD / gate / viz still apply.
Bottom edgePark a finger on the bottom of the screen and stay still about 0.7s to exit.

KAOSS settings

Opened from KAOSS → SET. Scroll for OUT and MIDI channel.

KAOSS settings
15 — KAOSS settings
VOICE / DRUMS / BOTHWhere pad FX (echo, reverb, drive, flange) lands. Default VOICE — kit stays dry. DRUMS writes the shared kit bus. BOTH writes the same XY to both inserts. Different amounts still come from FX MODE sliders.
WIPE FXZero voice + kit + leftover bus wet and restore tone/morph defaults.
CURATED / ALL SCALESShort vs factory PROG and SCALE lists.
AXES / GRIDX/Y labels and grid lines on the pad.
PAD VIZCELLS (LED matrix) or GLOW (soft bloom).
COLOROpens the shared color picker (CELLS and GLOW).
GRID LINES − / +Stroke width 1–5 px.
OUT / CHLOCAL / USB / BOTH and MIDI channel 1–16 (scroll down).

KAOSS pad color

Opened from KAOSS ⚙ → COLOR. Applies to CELLS and GLOW.

KAOSS pad color picker
21 — PAD COLOR
RAINBOWHue follows X.
Named swatchesFixed hue/sat for the field and bloom.
DONEBack to KAOSS settings.

CHORDS

Omnichord-style circle-of-fifths buttons, wide harp strumplate with vertical pluck lines, harmonic palette. Jam tab CHD.

CHORDS mode with palette
16 — CHORDS (Pop I–V–vi–IV loaded in C: C G Am F)
12×3 gridColumns F C G D A E B F# Db Ab Eb Bb. Rows MAJ / min / 7. Same-root and neighbour combos give M7, m7, dim, aug, sus4, add9. Lifting a combo together keeps it on the strum pad — fingers do not have to come up in the same instant.
STRUMWide plate under the fifths grid. Slide to harp (low→high); buttons/palette play a block voicing (piano-style).
PALETTE2×4 grid to the right of the fifths buttons. Empty tap or ARM stores the current chord. Filled press plays that chord as a block (MOM while held, HOLD latches).
HOLD / MOMHOLD keeps the last block chord ringing (memory). MOM only sounds while your finger is down.
OUTLOCAL / USB / BOTH through the current synth voice (or MIDI out).
KEY / PROGS / ARMPick the key, load a named progression into the palette, or arm the next empty slot.

While SEQ REC or pad REC is armed, chrome shows REC {chord} or PAD {chord}. Block chords and strums record the same way synth keys do. Switch to CHD without stopping the take — the sequencer lives on the kiosk, not the page.

CHORDS — PROGRESSIONS

Named progressions in the chosen KEY, loaded into the palette.

PROGRESSIONS picker
17 — PROGRESSIONS
Pop / 50s / Folk / JazzI–V–vi–IV, I–vi–IV–V, I–IV–V, ii–V–I.
Rhythm / Sensitive / Mixo / BluesI–vi–ii–V, vi–IV–I–V, I–bVII–IV, I7–IV7–V7.
Andalusian / Canoni–bVII–bVI–V, Pachelbel.
CLOSEBack without changing the palette.

CHORDS — KEY

Sets the tonic PROGS uses when filling the palette.

CHORDS key picker
22 — KEY

SONGS

Browse songs/ MIDI files, set tempo, play locally and/or USB MIDI out. Open the visualizer to watch notes fall onto a keyboard that lights as they sound.

SONGS screen
05 — SONGS
ListTap a .mid row; flick to scroll the full-height list.
PLAY / STOPStart or stop song playback.
VIZFullscreen falling notes of the selected SMF. Keys and drum pads light as notes sound. The top strip is the whole file; a sliding frame marks the span currently on the roll.
SAVE SEQExport the current sequencer arrangement into songs/.
OUTLOCAL / USB / BOTH.
LOOPRepeat the file when it ends.

PRESETS

Eight touch slots for a named session snapshot.

PRESETS screen
06 — PRESETS
Slots 1–8Tap to select. LOAD / SAVE / DELETE the slot. FACTORY resets synth defaults.

Autosave also keeps settings.json so a reboot returns where you left off.

FX

Left side is the insert rack (BUS / VOICE / DRUMS). Right side is eight EP-style punch-in pads on the master bus. LEVEL, DRUMS, and MIC are the keys / kit / capture trims.

FX screen with insert sliders and punch-in pads
25 — FX (inserts left, punch pads right)

Inserts

TARGET: BUS / VOICE / DRUMSWhich insert the sliders edit. Bus is the master wet after keys + drums are summed.
DRIVE DELAY REVERB FLANGEInsert mix. Voice flange mirrors SYNTH FLANGE; bus flange is independent global wet.
LEVELMelody / keys bus. Same fader as SYNTH LEVEL. Does not duck the kit.
DRUMSShared kit bus trim. Balance drums against melodies here without opening DRUM MODE.
MICUSB mic / line capture onto the master bus (before punch-in). Starts at 0 so a headset cannot feedback until you open it. Same fader as MIX MIC.

Punch-in pads

Punch-in sits after keys + drums + clips + the bus insert, and before the output limiter. Songs, SEQ, live keys, and the kit all hear it. Armed pads stay on when you leave FX.

Each pad stores an amount and an on/off. Slide vertically to set the amount whether the pad is armed or not — top of the pad is full. Tap to arm or disarm at that stored value. CLEAR and panic only turn pads off; they do not reset the sliders. Fresh pads start at 0% so they match parked MPK knobs.

LOCK grabs the last ~4 seconds of the master bus (keys + drums + mic) into a freeze loop and ignores live input until you tap LOCK again or CLEAR. While locked, the punch pads (TAPE drag, RPT / SLICE skip, LPF, CRUSH, …) process the frozen loop — grab a chorus, lock it, then drag and chop.

PRIO cycles who wins among the three buffer pads when several are armed: T>R>D (default bounce — TAPE owns the ring, release it and RPT takes over), R>T>D (stutter interrupts drag), D>T>R (DROP first), and R×T (repeat-on-tape — RPT loop advanced at the TAPE motor rate). Persists in the session.

RPTBeat repeat. Catches a slice of the master and loops it. Amount picks the grid from the current engine BPM: 1/4, then 1/8, 1/16, 1/32 as you raise it. Tick marks on the pad sit at those steps. Changing amount while armed retimes the loop.
TAPETape-style drag. The motor slews toward a slower playback rate; higher amount drags more (down to about 0.28×). It never parks or goes silent. While TAPE is on, RPT and DROP are silent.
LPFMaster low-pass. Higher amount cuts more highs.
HPFMaster high-pass. Higher amount cuts more lows / bass.
SENDOpens the current bus insert — delay, reverb, and flange — toward full wet. Amount is how far those mixes open. The stored insert sliders come back when SEND is off.
SLICEHard amplitude gate (about 45% open) on the whole mix. Same 1/4 → 1/32 BPM grid as RPT, with the same tick marks on the pad. Chops rather than loops.
DROPVarispeed pitch-down of the master. Full amount is about an octave and a half down. Only runs when TAPE and RPT are off.
CRUSHBit depth and sample-rate reduction. Higher amount is dirtier.
CLEARTurns every punch pad off. Stored amounts stay put.

Layering

TAPE, RPT, and DROP share one buffer. Which one speaks when several are armed is set by PRIO (default T>R>D: TAPE wins, then RPT, then DROP). LPF, HPF, CRUSH, and SLICE run after that and stack — for example TAPE + LPF + CRUSH, or RPT + SLICE. SEND is not a buffer effect; it boosts the bus insert while that insert is processing, then punch-in hears the wetter mix.

MPK mini

On the FX page only, factory MPC (Prog Select → Pad 1) maps knobs 1–8 and Bank A pads onto punch-in. Knobs write amounts directly (0–127). Pads start at zero so a parked knob is not fighting a stored value. The mix stays dry if that pad is off. Pads toggle on/off at the stored amount. Keys still play. Leave FX to get the synth / drum knob map back.

Knob 1 / Bank A top-leftRPT (CC 70, note 40)
Knob 2 / top 2TAPE (CC 71, note 41)
Knob 3 / top 3LPF (CC 72, note 42)
Knob 4 / top 4HPF (CC 73, note 43)
Knob 5 / Bank A bottom-leftSEND (CC 74, note 36)
Knob 6 / bottom 2SLICE (CC 75, note 37)
Knob 7 / bottom 3DROP (CC 76, note 38)
Knob 8 / bottom 4CRUSH (CC 77, note 39)

Inspired by Teenage Engineering EP-line punch-in, not a clone. This pass skips scramble / sample remap, granular, pitch-random, and EP-style hold-to-latch / aftertouch. RPT and SLICE follow the engine BPM (SEQ / song tempo included).

MIX

Live keys, live kit, SEQ family buses, USB mic, and each phrase pad. Clip faders do not rewrite MIDI velocity.

MIX screen with LIVE KIT SEQ MIC buses and 16 pad faders
26 — MIX (LIVE / KIT / SEQ / MIC + pads)
LIVELive keys (KAOSS, SYNTH, CHORDS). Same trim as FX LEVEL / SYNTH LEVEL.
KITLive drums. Same trim as FX DRUMS.
DRM / KEY / KSSSEQ / song family trims (drums, keys, Kaoss) on engine slots 16–18.
MICUSB mic / line capture onto the master bus. Starts muted. Same fader as FX MIC.
A1–B8Per-pad clip gain (0.1–2.0). Empty pads are inert. V− / V+ on PADS EDIT writes the same gain.

SETTINGS

Appliance hub: panic, audio reopen, Wi‑Fi, font, software update, and doors into LOG / MAP.

FX, Wi‑Fi, font, software update, and doors into LOG / PORTS.

SETTINGS screen
11 — SETTINGS
PANIC / NOTES OFFSilence everything, or all-notes-off.
AUDIOAll-notes-off then reopen the sound device (headphone jack swap).
FULL VELForce every incoming MPK note-on (keys and drum pads) to velocity 127 so uneven hits stay loud. On by default; saved in the session. Also applies to MAP THRU.
LOG / MAPEngine log, MIDI thru.
FX: BUS / VOICE / DRUMSWhich insert the four sliders edit.
DRIVE DELAY REVERB FLANGEVertical mix sliders. Flanger is also a KAOSS program (X = pitch, Y = mix).
LOG / PORTSEngine log, USB MIDI IN/OUT picker and THRU.
PROBEToggle a cheap local health log (probe.log): callback µs, xruns, reconnects, load, throttle. Safe to leave on while playing.
PWRShow the LOW PWR / THROTTLE badge when the Pi reports under-voltage. Off by default — the badge is sticky after any sag this boot.
WIFIJoin the saved NetworkManager profile or .wifi-credentials.
FONTRETRO bitmap vs SMOOTH TTF.
UPDATECHECK GitHub master, then overlay the repo and copy committed dist/armv7 onto bin/ (midi-engine, jambox-engine, pidi-native). Does not cargo-build on the Pi.

LOG

Engine counters plus a short action stream. Opened from SETTINGS → LOG.

LOG screen
07 — LOG
CountersCallback frames/µs, xruns, command drops, emergency releases, active repeats. SET→PROBE also writes these to probe.log.
CLEAR / ALL OFFWipe the on-screen log, or panic.

MAP

Home-screen MIDI utility. Remap any incoming channel onto one or more outgoing channels (1 → 6, or 1 → 6+7, …).

MAP channel grid
18 — MAP input channels. Remapped cells show destinations under the number.
MAP output channel picker
18b — tap an input to choose its output channels
1–16Input MIDI channels. Tap one to set where it is sent.
SubtitleSmaller numbers under a cell are the output channels that input maps to.
Output gridMulti-select. Empty / CLEAR = pass through the same channel.

Applies to incoming USB MIDI (local synth) and to THRU once you start it from PORTS.

PORTS

Opened from SETTINGS. Class-compliant USB MIDI is plug-and-play; this screen shows what is open and lets you pin a port or start thru.

PORTS MIDI port picker
25 — PORTS
IN / OUTIN ALL listens to every class-compliant USB MIDI keyboard/interface. Tap a row only to pin one device. OUT AUTO = first hardware port.
Port rowsTap a listed input or output to select it. Green = currently open.
TEST OUTSend a C4 on the selected USB/DIN output.
THRU ON / OFFStart or stop midi-engine remap using the MAP channel table (keyboard → hardware synth).
REFRESHRe-list USB MIDI devices.

On a Windows host these actions explain that they belong on the Pi.

POWER

Kiosk-safe power and burn-in controls.

POWER menu
10 — POWER
BLANK timeoutHeader control cycles auto-blank (touch-only idle — MIDI does not postpone it).
SCREEN OFFBlank the TFT now. Tap the panel to wake.
SHUT DOWN / REBOOTPower off cleanly, or restart into the kiosk.

MPK knobs (default mapping)

Factory MPC program (Prog Select → Pad 1) while DRUM MODE / FX targets are off:

Knob 1Morph A→B
Knob 2Tone / brightness (low-pass)
Knob 3Attack
Knob 4Release
Knob 5Vibrato depth
Knob 6Vibrato rate
Knob 8Synth bus level

On the FX page those eight knobs write punch amounts (RPT → CRUSH). Pads start at zero to match the knobs at rest. Bank A pads toggle the matching punch pads — see Punch-in pads. FX page LEVEL / DRUMS sliders stay the keys vs kit mix. Pitch bend and the mod wheel still affect the voice. Joystick Y is CC1 = vibrato.