Introduction
BeatBax is a live coding language and creative toolchain for making chiptune music in the style of classic 8-bit and 16-bit computers and game consoles. Instead of using a Tracker or DAW, you write songs in a simple but powerful text grammar — instruments, melodies, basslines, and beats — and BeatBax plays them back with hardware-faithful chip sound.
One goal of BeatBax is homebrew-friendly export: where possible, songs can be written out to tracker or driver formats games can consume (for example hUGETracker .uge for Game Boy, FamiTracker text for NES, VGM for PSG targets). Common formats such as WAV and MIDI are available across chips; chip-specific formats are listed on the ROADMAP.
Creating chiptunes is rewarding but can be hard and time-consuming. BeatBax Desktop also includes BeatBax Copilot* — an AI assistant (with BYOK model) to help you write and edit songs. It is not a replacement for creativity, but it can help with construction, editing, and typical chiptune techniques in the BeatBax grammar.
Features
- Simple text-based grammar — author instruments, patterns, sequences, and channel arrangements in
.baxfiles - Multi-chip playback — Game Boy, NES, SMS/Game Gear, and Spectrum/CPC AY backends with chip-accurate voices, envelopes, and software macros
- Instrument macros — pitch, volume, duty/timbre, and arp envelopes (plus chip-specific extras such as Game Boy subpat for hUGETracker)
- Built-in effects — vibrato, arpeggio, portamento, pitch bend, volume slide, tremolo, pan, note cut, retrigger, echo, and chip-specific effects (e.g. pulse sweep)
- Reusable instrument libraries — share instruments via .ins files; import locally or from GitHub or the web
- Export formats — WAV and MIDI for supported chips; chip-specific exports (UGE, FamiTracker, VGM, …) via plugins
- BeatBax Desktop — full Electron IDE with native file I/O, export, BeatBax Copilot, Channel Mixer, Song Visualizer, Pattern Grid, and Monaco editor
- BeatBax web-lite client — try-in-browser editor and playback for demos and light edits at app.beatbax.com
- BeatBax Copilot — AI assistant in BeatBax Desktop (BYOK / local Ollama)
- BeatBax CLI —
play,verify,export,inspect, andconvertfor scripted workflows - Extensible architecture — additional chip backends and exporters as plugins without changing the core song grammar
*BeatBax Copilot (available in BeatBax Desktop only) uses your preferred OpenAI-compatible provider for cloud models (BYOK) or local model via Ollama or LM Studio. Cloud API keys are stored in the OS secure credential store on your machine only. Local providers need no API Key.
Example song
Press Play to hear a short, driving Game Boy track in a minor key — lead, bass, sustained wave pad, and a punchy drum kit, with vibrato and portamento woven in:
Interactive playback loads in the browser.
song name "Neon Run"
chip gameboybpm 162
inst lead type=pulse1 duty=25 env=gb:13,down,1 gm=81inst bass type=pulse2 duty=50 env=gb:12,down,2 gm=38inst pad type=wave volume=100 wave=[0,4,8,11,13,14,15,15,15,14,13,11,8,4,0,0] gm=89inst kick type=noise gb:width=7 uge_note=C-6 length=16 pitch_env=[0,-2,-4,-6] vol_env=[15,12,8,4]inst snare type=noise gb:width=7 env=gb:13,down,1 length=16 uge_note=C-7 note=C6 pitch_env=[0,7,0] vol_env=[13,10,6,2]inst hat type=noise gb:width=15 env=gb:5,down,1 uge_note=C-8 note=C6
effect wobble = vib:7,5effect slide = port:14
pat lead_am = A5 . E5 A5 . G5 E5 . A5 . C6 . B5 . A5 .pat lead_f = A5 . F5 A5 . C6 A5 . F5 . A5 . G5 . F5 .pat lead_g = B5 . G5 B5 . D6 B5 . G5 . B5 . A5 . G5 .pat lead_am2 = A5 . E5 A5<wobble>:2 G5 E5 . D5 . E5 . C5 . A4 .
pat bass_am = A2 . A3 A2 . A3 A2 . A2 . A3 A2 . E2 . E3pat bass_f = F2 . F3 F2 . F3 F2 . F2 . F3 F2 . C3 . C3pat bass_g = G2 . G3 G2 . G3 G2 . G2 . G3 G2 . D3<slide> . D3pat bass_am2 = A2 . A3 A2 . A3 A2 . E2 . E3 E2 . A2 . A2
pat pad_am = A3:4 C4:4 E4:4 A4:4pat pad_f = F3:4 A3:4 C4:4 F4:4pat pad_g = G3:4 B3:4 D4:4 G4:4pat pad_am2 = A3:4 E4:4 C4:4 A3:4
pat drums_a = kick . hat . snare . hat . kick . hat kick snare . hat .pat drums_b = kick . hat kick snare . hat . kick . hat . snare . snare hat
seq lead_seq = lead_am lead_f lead_g lead_am2 lead_am:oct(-1) lead_f:rot(2) lead_g:oct(+1) lead_am2:revseq bass_seq = bass_am bass_f bass_g bass_am2 bass_am:rot(2) bass_f:rot(2) bass_g:rot(2) bass_am2:revseq pad_seq = pad_am pad_f pad_g pad_am2 pad_am:rev pad_f:rev pad_g:rev pad_am2:revseq drums_seq = drums_a drums_b drums_a drums_b drums_a:rot(2) drums_b:rev drums_a:rot(4) drums_b:rev:rot(2)
channel 1 => inst lead seq lead_seqchannel 2 => inst bass seq bass_seqchannel 3 => inst pad seq pad_seqchannel 4 => inst snare seq drums_seq
playNext steps
Continue with Getting Started:
- Installation — set up BeatBax Desktop, the BeatBax web-lite client, or the BeatBax CLI
- Quick start — play a built-in example song in a few minutes
Then work through the Tutorial to build Tutorial Groove step by step for the Game Boy sound chip.