| # | Mute | Solo | Ch | Name | Instrument | Vol | Pan |
|---|
Your 1-hour trial has ended. Thank you for trying ABC Music Maker!
Purchase the full version to keep making music.
— or enter a license key —
| # | Mute | Solo | Ch | Name | Instrument | Vol | Pan |
|---|
ABC Music Maker is a multi-track DAW built around ABC notation — a plain-text music format. Every song is stored as a human-readable .abc text file. The interface has three main areas:
Typical workflow: Open or create an .abc file → edit notes in the piano roll or editor → pick instruments in the Tracks panel → adjust mix → export audio.
Quick-start: Click New to create a blank song, or Open to load an existing .abc file. Make sure the Integrated Synth is loaded (toolbar button) before playing — it loads the GM soundfont on first use and may take a few seconds.
| Space | Play / Pause toggle |
| Escape | Stop playback and return playhead to start; also deselects notes and closes overlays |
| Ctrl Z | Undo (piano-roll edits, track changes, mixer, transport) |
| Ctrl Y / Ctrl ⇧Z | Redo |
| Ctrl S | Save current file (overwrites; updates Q:/K:/M: headers) |
| Ctrl O | Open file picker |
| Ctrl N | New blank song |
| Ctrl E | Toggle ABC Editor panel visibility |
| Ctrl Enter | Apply ABC editor changes (same as Apply button) |
| F8 | Toggle Recorder panel |
| F9 | Toggle Mixer panel |
| F10 | Toggle 3D Visualizer |
| ? | Open this help panel (when no text field focused) |
| [ | Set loop start at current playhead position |
| ] | Set loop end at current playhead position |
The piano roll shows all tracks as coloured note blocks on a time/pitch grid. The active track (selected in the Tracks panel) is brighter; other tracks are dimmed but still visible. Switch editing modes via the toolbar mode buttons or keyboard shortcuts:
| D | Draw mode — left-click to place a note; click and hold to set its start then release to commit. Right-drag an existing note's right edge to resize its duration. Right-click a note to delete it. |
| E | Erase mode — left-click or drag over notes to delete them. |
| V | Select mode — click a note to select it; drag on empty space to rubber-band-select multiple notes. Drag selected notes to move them (time and pitch). Right-drag the right edge of a selected group to resize all at once. |
| H | Pan mode — left-drag anywhere to scroll the viewport freely. |
Navigation:
| Scroll wheel | Zoom in / out horizontally (time axis) |
| Shift + Scroll | Pan left / right (time axis) |
| Ctrl + Scroll | Pan up / down (pitch axis) |
| Click bar-ruler | Jump playhead to that position |
| Shift + click bar-ruler | Set loop start |
| Ctrl + click bar-ruler | Set loop end |
| Click key labels (left) | Preview that pitch through the active synth |
Grid snap: Notes snap to the current quantisation value shown in the toolbar snap selector. Common values: 1/4, 1/8, 1/16, 1/32, and Triplet variants. Set to Free to place notes without snapping.
| Ctrl A | Select all notes on the active track |
| Ctrl C | Copy selected notes to clipboard |
| Ctrl X | Cut selected notes |
| Ctrl V | Paste at playhead position on active track |
| Del / Backspace | Delete selected notes |
| Escape | Deselect all |
| Drag (Select mode) | Move selected notes — both time position and pitch |
| ↑ / ↓ | Nudge selected notes up / down one semitone |
| ← / → | Nudge selected notes left / right by one grid unit |
| Shift ↑/↓ | Nudge one octave up / down |
Copy / paste works across tracks — paste adds notes to whichever track is currently active. Copy then switch tracks before pasting to duplicate a phrase onto another instrument.
The transport bar (top of piano roll area) contains the play controls and song-wide settings:
| BPM | Beats per minute. Changing the value rescales all note timestamps so the rhythm sounds identical at the new tempo. The ABC Q: header is updated on save. |
| Key | Key signature. When changed, all non-drum notes are transposed by the shortest interval to reach the new key (max ±6 semitones). The K: header updates. |
| Meter | Time signature (e.g. 4/4, 3/4, 6/8). Changing this updates bar-line positions in the piano roll and the M: header. |
| Loop ⟳ | Toggle loop playback. The shaded region between the loop markers loops continuously. Loop markers can be dragged or set with [ / ]. |
| Follow ↓ | Auto-scroll the piano roll to follow the playhead during playback. |
| ⬇ Audio | Export the entire song to a WebM/Opus audio file — see Audio Export section below. |
Each row represents one ABC voice (V: header). Click a row to make that track active in the piano roll.
| Name | Click to rename. Used as the ABC V: name and label in the piano roll. |
| Ch | MIDI channel 1–16. Channel 10 is always the GM drum channel — note pitches map to drum sounds regardless of instrument. |
| Instrument | Click to open the instrument browser. For the GM synth this shows all 128 GM programs grouped by family. For the DX7 synth it opens the DX7 preset picker. |
| Vol / Pan | Coarse track volume (0–127) and stereo pan (L–R). Stored as %%MIDI control 7 and %%MIDI control 10. |
| ⊕ Add track | Adds a new empty voice with a default instrument. |
| ⠿ Drag handle | Drag rows to reorder tracks. Order affects ABC voice numbering and piano-roll colour assignment. |
| ⧉ Duplicate | Clones the selected track including all its notes and settings. |
| 🗑 Delete | Removes the track and all its notes (undoable). |
ABC notation represents music as plain text. A minimal single-track file looks like this:
X:1 T:My Song M:4/4 L:1/8 Q:120 K:C V:1 name="Piano" %%MIDI program 0 C D E F | G A B c |
Header fields (before the first note line):
X: | Index number — must be first; any integer works. |
T: | Title — shown in the app title bar and used as the export filename. |
M: | Meter / time signature, e.g. 4/4, 3/4, 6/8. |
L: | Default note length, e.g. 1/8 means an undecorated letter = an eighth note. |
Q: | Tempo in BPM, e.g. 120 or 1/4=140. |
K: | Key signature, e.g. K:G, K:Dm, K:none. |
V: | Voice/track name, e.g. V:1 name="Guitar". Each voice becomes one track. |
Note syntax: C D E F G A B = middle octave; c d e f g a b = octave above. Add ' to go up an octave, , to go down. Use ^ for sharp, _ for flat, = for natural. Duration multipliers: C2 = double length, C/ = half. Use | for bar lines, z for rests, x for invisible rests.
Chords: Wrap simultaneous notes in square brackets: [CEG].
Tuplets: (3ABC = triplet of A B C.
The editor is a code editor with ABC-aware syntax highlighting and error checking. Changes you make are reflected in the piano roll when you press Apply (Ctrl Enter). Conversely, every piano-roll edit, track rename, mixer change, or transport adjustment immediately regenerates the ABC text in the editor.
Editor shortcuts:
| Ctrl Enter | Apply — parse and reload the piano roll |
| Ctrl F | Open find bar |
| Ctrl H | Toggle find-and-replace row |
| Enter (find open) | Find next match |
| Shift Enter (find open) | Find previous match |
| Ctrl . | Apply first available Quick Fix on the current line (e.g. fix unknown note, balance brackets) |
| Ctrl / | Toggle % comment on selected lines — mutes those notes without deleting them |
| Shift Alt ↓ | Duplicate current line or selected block downward |
Auto-Apply toggle (toolbar): When on, the piano roll updates automatically after every keystroke with a short debounce delay. Useful for short compositions; turn off for large files to avoid lag.
Hints mode (toolbar toggle): Enables contextual tooltips that explain ABC tokens as you hover or type — useful for learning the format.
%%MIDI extensions supported in the editor:
%%MIDI program N | Set GM program (0–127) for the current voice |
%%MIDI channel N | Override MIDI channel for the voice |
%%MIDI control 7 N | Volume (0–127) |
%%MIDI control 10 N | Pan (0=left, 64=center, 127=right) |
%%MIDI control 91 N | Reverb send level (0–127) |
%%MIDI control 93 N | Chorus send level (0–127) |
%%MIDI automation T CC V | Automation point: time T (beats), CC number, value V. Creates a time-varying control curve during playback. |
The primary audio engine is SpessaSynth, a high-quality General MIDI synthesizer that uses the included Integrated_Synth.SF2 soundfont. It supports all 128 GM programs across 16 MIDI channels simultaneously.
%%MIDI control 91/93 are handled internally by SpessaSynth's built-in effects.A second synth engine based on the Yamaha DX7 FM synthesis model. Runs as a Web Audio Worklet alongside the GM synth. Assign it to a track by selecting a DX7 preset as the track instrument.
Preset Browser: Click any track's instrument button while the DX7 synth engine is loaded to open the DX7 Preset Picker overlay. It provides:
.syx DX7 sysex bank files found in webdx7-master/dist/dx7/presets/.Adding custom banks: Drop any Yamaha DX7 .syx sysex file (32-voice format, 4104 bytes) into webdx7-master/dist/dx7/presets/ and reload the app. The bank appears automatically.
The DX7 synth is polyphonic and supports velocity sensitivity. It outputs to the same master audio bus as the GM synth, so Mixer and FX chain settings apply to its output.
Open with Mixer button or F9. Shows one channel strip per track plus a master strip on the right.
| Volume fader | Track output level (0–127). Writes %%MIDI control 7 to the ABC on change. |
| Pan knob | Stereo position (full left to full right). Writes %%MIDI control 10. |
| Reverb | Send level to the built-in reverb effect (0–127). Writes %%MIDI control 91. |
| Chorus | Send level to the built-in chorus effect (0–127). Writes %%MIDI control 93. |
| M (Mute) | Silences the track without removing it. Muted tracks are greyed in the piano roll. |
| S (Solo) | Mutes all other tracks. Multiple tracks can be soloed simultaneously. |
| Master fader | Overall output gain. Does not affect the exported audio level. |
Automation: Draw automation curves into the ABC with %%MIDI automation lines. During playback the automation values smoothly override the static fader/knob positions. Automation is written per-beat and interpolated.
Open with the FX toolbar button. A master effects rack that processes the combined output of all tracks. Built on the Tuna.js audio effect library. Effects run in the listed order (signal chain top-to-bottom).
| Enable toggle | Enable/disable the entire FX chain with one click. When disabled, the chain is bypassed and uses zero CPU. |
| Reverb | Convolution or algorithmic reverb. Controls: Room Size, Damping, Wet/Dry. |
| Chorus | Rate, Depth, Delay, and Feedback controls for thickening pads and leads. |
| EQ | Three-band parametric EQ: Low shelf, Mid peak, High shelf. Frequency, gain, and Q for each band. |
| Compressor | Dynamics compressor: Threshold, Ratio, Attack, Release, Knee. |
| Delay | Sync-able tape delay: Time (ms or beat division), Feedback, Wet level. |
Each effect has its own enable toggle. Disabled effects pass signal through unchanged with no CPU cost. Drag effect rows to reorder the chain.
Open with the AI toolbar button. Sends your ABC text and a prompt to a GitHub Models AI API endpoint and applies the response back into the editor.
Capabilities:
Model selector: Choose from available GitHub Models including GPT-4o, GPT-4o-mini, Llama 3, Mistral, Phi-4, and others. More capable models produce better musical output but may be slower.
API key: Requires a GitHub Personal Access Token with the models:inference scope. Paste it into the API key field in the AI panel. The key is stored in localStorage and never leaves your machine except in the API request.
Tips for better results:
Click ⬇ Audio in the piano roll header to export the current song as a WebM/Opus audio file. The format is supported by all modern browsers and media players.
How it works:
MediaStreamDestination node — no microphone or screen-capture required.T: title field and downloaded automatically.Notes:
Toggle with Viz toolbar button or F10. Opens a full-screen 3D animated display that shows notes flying toward the camera and a 3D piano keyboard that lights up in real time during playback.
Toggle with F8 or the toolbar button. Records from your microphone and converts pitched audio into MIDI note events on the active track using real-time pitch detection.
| New | Create a blank song with one empty track. Prompts to save unsaved changes. |
| Open | Open a .abc file from disk. Supports standard ABC v2.1 and files with %%MIDI extensions. |
| Save (Ctrl S) | Overwrite the current file. All transport, track, and mixer settings are serialised back into the ABC headers. |
| Save As | Save a copy under a new filename. |
| CSV Import | Import note data from a CSV file (time, pitch, duration columns). Useful for programmatic composition workflows. |
The title bar shows the filename and a • dot when there are unsaved changes. Closing the window with unsaved changes will prompt you to save.
If your system has MIDI output ports (virtual or hardware), use the MIDI Port selector in the toolbar to route playback to an external synthesizer, DAW, or device. When a port is selected, MIDI note-on/off, program-change, and CC messages are sent in real time during playback.
% — then apply. The notes disappear but remain editable.Q: header can appear multiple times in a file; each occurrence changes tempo at that point. The editor supports multiple Q: lines mid-song.A browser-based multi-track DAW for composing, editing, and performing music in ABC notation — with a visual piano roll, GM synthesizer, DX7 FM synth, AI-assisted composition, and real-time effects.
Add DX7 sysex banks (.syx) to
webdx7-master/dist/dx7/presets/
Enter a WAM plugin URL (must export createInstance):