MIDISERVER

// COLLABORATIVE NETWORK MIDI RELAY SERVER WITH BASIC CHANNEL ROUTING

MIDISERVER

◈ OFFLINE RM: — PLR you — ms Δ—
// TRANSPORT //
BPM 120
// CC //
NO CC RECEIVED
// PROGRAM CHANGE //
NO PGM RECEIVED
// PITCH BEND //
NO BEND RECEIVED
// MIDI RECORDING //
// KEYBOARD //
SYNTH
ENV
LFO
// NOTE EDITOR //
PAT
↓ DROP .MID
// DRUM MACHINE //
PAT
↓ DROP .MID
// MIDI LOG
// ROOMS //
// ROOM

// AVAILABLE ROOMS //
NO ROOMS AVAILABLE

MIDISERVER

// COLLABORATIVE NETWORK MIDI RELAY SERVER

// GETTING STARTED
  1. Click ENTER on the splash screen to unlock audio
  2. Enter a room name and click JOIN
  3. Share the room name with collaborators — all peers sync automatically
  4. Draw notes on the piano roll, set BPM, and press ▶ PLAY
// TRANSPORT
▶ PLAY / ■ STOP Start and stop synchronized playback across all peers. Also responds to hardware MIDI Start (0xFA) and Stop (0xFC) — transport syncs automatically to external sequencers
♩ CLICK Toggle the metronome click track (downbeat accent on beat 1)
MST / CLK Master volume and click volume faders with mute buttons
BPM Drag the slider to change tempo (60–200) — broadcasts to all peers. Syncs automatically from incoming hardware MIDI clock
// ROOMS
JOIN Enter a room name and join — share the name with collaborators to sync. All play/stop, BPM, and MIDI data broadcasts to everyone in the room
PUBLIC / PRIVATE Toggle room visibility — public rooms appear in the rooms list for all connected users; private rooms are hidden
AVAILABLE ROOMS Lists all public rooms with player count and BPM — click to join
you Xms Your round-trip latency to the server, shown in the header
Δ Clock offset from the server (NTP-style sync keeps all peers aligned)
// PIANO ROLL
ENABLE Enable piano roll playback (routes to synth and/or MIDI output)
Left-click empty Add a note, snapped to 1/16th beat
Left-click + drag Draw a note and set its duration by dragging right
Left-click note Delete the note (click without dragging)
Drag note Move note (pitch and/or beat position)
Right-click note Delete the note
Scroll wheel Scroll pitch range — full MIDI range 0–127 (C-1 to G9)
Shift + scroll Scroll time (horizontal)
Ctrl/Cmd + scroll Zoom horizontal
+ / − / FIT Zoom in, zoom out, or fit the full pattern to the view
BARS Pattern length in bars (1–32)
CH MIDI output channel for all notes — changes take effect immediately during playback
VEL Velocity for new notes (1–127)
↓ DROP .MID Drag a .mid file onto the zone to import — auto-sets bars and BPM from the file
↓ EXPORT .MID Download the current roll as a Standard MIDI file
// PATTERN BANK + CHAIN

Both the piano roll and drum machine share the same pattern and chain system.

PAT 1–16 16 pattern slots — click to switch. Each pattern stores its own notes/steps and bar/step length
INSTANT / QUEUE INSTANT switches patterns immediately; QUEUE waits until the current pattern loops, then switches — useful during live playback
CHAIN Enable chain sequencer mode — set up a sequence of patterns using the 16 chain slots (dropdowns). Patterns advance automatically at each loop boundary. Empty slots (--) are skipped
// DRUM MACHINE
ENABLE Enable drum machine playback
GRID Click cells to toggle steps on/off — rows are drum sounds (kick, snare, hi-hats, toms, clap, cymbal, rim, ride), columns are steps
SAMPLE Per-row dropdown to select a sample from the 909 or 808 kit — any sample can be assigned to any row
NOTE Per-row MIDI note number (0–127) — used for MIDI output and input triggering. Defaults to GM drum map (kick=36, snare=38, etc.)
VOL Per-row volume fader with mute button
STEPS Number of steps per pattern (1–64, default 16)
CH MIDI channel for drum output and input triggering (default ch 10)
VEL Velocity for MIDI note output (1–127)
↓ DROP .MID Drag a drum .mid file onto the zone to import — maps notes to rows by MIDI note number, auto-detects step count
↓ EXPORT .MID Download the current drum pattern as a Standard MIDI file
MIDI INPUT Incoming MIDI notes on the drum channel trigger the matching drum voice by note number — play drums from a MIDI controller or external sequencer
CLEAR Clear all steps in the current pattern
// SYNTH + KEYBOARD
KEYBOARD Virtual 52-key keyboard (A0–C8) — click or touch to play. Notes route to the built-in synth, MIDI output, and broadcast to room peers
SYNTH TYPE SINE, TRIANGLE, SAWTOOTH, SQUARE (basic waveforms) or FM (frequency modulation with MOD index and HARM harmonicity controls)
ENV A/D/S/R Amplitude envelope — Attack, Decay, Sustain, Release
LFO Low-frequency oscillator — toggle on/off, select waveform (SIN/TRI/SQR/SAW), set rate in Hz, pitch modulation in cents, and FM modulation depth (FM synth only)
PAD Pad synth volume fader with mute button
CH MIDI channel for keyboard output
VEL Velocity for keyboard output (1–127)
// VOLUME
FADERS Inline volume faders with mute buttons — MST (master) and CLK (click) in transport, PAD (synth) in keyboard section, VOL per drum voice in each grid row
// MIDI I/O
INPUT / OUTPUT Select hardware MIDI devices (requires Chrome/Edge with MIDI permission — HTTPS required)
THRU Route all MIDI input (notes, CC, clock, etc.) to the output device locally — useful for passing a keyboard or controller through to a synth
CLK ↑ Relay incoming hardware clock (0xF8) to all peers over the network, so their MIDI outputs also receive the raw clock signal
CLK GEN Generate MIDI clock to your output device from the server BPM. Sends Start (0xFA) and Stop (0xFC) on transport — use this to sync external hardware to the room
CLK SYNC Slave the room BPM to an incoming hardware clock. Auto-enabled when a hardware Start message is received — the room locks to the external sequencer's tempo. Pair with CLK ↑ to also distribute clock pulses to peers
PANIC Send all-notes-off to the output device
FILTER CH Only pass through MIDI on a specific channel (or all)
REMAP → Remap incoming MIDI to a different output channel
// MONITOR
CC Bar graph per controller number, labeled with CC name and value
PROGRAM CHANGE Last program received per channel with GM patch name
PITCH BEND Center-anchored bar per channel showing bend amount
// MIDI RECORDING
● REC Start recording all incoming MIDI events
■ STOP Stop recording
↓ EXPORT .MID Download the recording as a Standard MIDI file