// COLLABORATIVE NETWORK MIDI RELAY SERVER
// GETTING STARTED
-
Click ENTER on the splash screen to
unlock audio
- Enter a room name and click JOIN
-
Share the room name with collaborators — all peers sync
automatically
-
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 |