Skip to content

Browser cockpit

A browser-based instrument and vocal studio that lives in the repo at apps/cockpit. No plugins, no DAW — just a web page with a piano roll you can click into, play into, and edit like a real composition tool: beat-accurate transport with a time-ruler and loop regions, record-arm capture with count-in, full undo/redo, multi-select and clipboard, touch support.

▶ Launch the cockpit — it runs entirely in your browser; nothing is installed and nothing leaves your machine. The default piano is the real thing: recorded Salamander Grand Piano samples by Alexander Holm (CC-BY 3.0), with a synth fallback while they load. Your work autosaves locally (localStorage) between visits — but autosave needs persistent storage: in a private/incognito window, or when storage is full, the cockpit will tell you saving is blocked, and your work lasts only until the tab closes (use Export JSON to keep it).

Prefer to hack on it? Run it from a clone:

Terminal window
git clone https://github.com/mcp-tool-shop-org/ai-jam-sessions.git
cd ai-jam-sessions/apps/cockpit
npm install && npm run dev # Vite dev server, opens in your browser

Switch between two visualization modes:

  • Instrument mode — chromatic pitch-class colors (every C is red, every F-sharp is cyan)
  • Vocal mode — notes colored by vowel shape (/a/ /e/ /i/ /o/ /u/)

Two octaves from C4, mapped to your QWERTY keyboard. Click or type to play notes.

20 voice presets:

  • 15 Kokoro-mapped voices: Aoede, Heart, Jessica, Sky, Eric, Fenrir, Liam, Onyx, Alice, Emma, Isabella, George, Lewis, plus choir and synth-vox
  • 4 tract-mapped voices (soprano, alto, tenor, bass)
  • 1 synthetic choir section

10 instrument presets:

  • 6 server-side piano voices (Concert Grand, Upright, Electric Piano, Honky-Tonk, Music Box, Bright Grand)
  • Plus synth-pad, organ, bell, and strings

Click any note in the piano roll to edit its velocity, vowel shape, and breathiness in real time.

Serialize the entire score as JSON and load it back. Use this to save compositions, share them, or feed them to another tool.

SystemDescription
Equal temperamentStandard 12-tone equal temperament
Just intonation (major)Pure intervals tuned to the overtone series, major mode
Just intonation (minor)Pure intervals tuned to the overtone series, minor mode
PythagoreanTuning based on pure perfect fifths
Quarter-comma meantoneHistorical temperament favoring pure major thirds
Werckmeister IIIWell temperament allowing all keys with varying color
CustomUser-defined cent offsets for each pitch class

The A4 reference pitch is adjustable from 392 Hz to 494 Hz.

  • Frequency table — see the exact frequency of every note in the current tuning
  • Interval tester — play two notes and see beat-frequency analysis
  • Export/import — save and load tuning configurations as JSON

The cockpit exposes window.__cockpit for programmatic control by an LLM:

MethodDescription
exportScore()Serialize current score as JSON
importScore()Load a score from JSON
addNote()Add a note to the score
play()Start playback
stop()Stop playback
panic()All notes off (emergency stop)
setMode()Switch between instrument and vocal mode
getScore()Get current score without serializing

After every session, the server captures what happened — which song, what speed, how many measures, how long. The AI adds its own reflections: what it noticed, what patterns it recognized, what to try next.

Journal entries are stored as one markdown file per day in ~/.ai-jam-sessions/journal/. They are human-readable and append-only.

  • save_practice_note — write a journal entry with auto-captured session data (song, speed, measures, duration)
  • read_practice_journal — load recent entries so the AI can pick up where it left off

At the start of each session, the AI reads its recent journal entries. This gives it context about what it has been practicing, what patterns it noticed, and what it planned to work on next. Learning compounds across sessions rather than starting from scratch each time.