View any MIDI clip in Ableton Live as readable sheet music. Transpose it for any instrument and export MusicXML, PDF, or PNG.
Tip
Looking for a tool to convert MIDI to tablature? Check out AbleTab.
- Notation view: renders a selected MIDI clip as sheet music with OpenSheetMusicDisplay.
- Transposition: choose an instrument preset (Concert / C, plus Bb, Eb, and F instruments like trumpet, sax, and horn) or transpose by any number of semitones. The key signature follows automatically.
- Smart staff & clef: auto-detects treble, bass, or a two-staff grand staff for piano-range material; override from the Transpose menu.
- Smart quantize: auto-detects the best grid (1/4–1/32) from the clip; override anytime.
- Time-signature override: defaults to 4/4 (the SDK does not expose the project's global signature); set it manually when needed.
- Export: vector PDF, PNG, and MusicXML (opens cleanly in MuseScore / Dorico). Exports are written to the extension's storage folder and revealed in Finder.
- Editing: delegated to Live's piano roll. Adjust notes there, then re-open the chart to refresh.
- A right-click action on a MIDI clip reads the clip's notes and opens a modal webview.
- Pure, unit-tested TypeScript modules convert notes → MusicXML: quantization, chord grouping, ties across barlines, instrument transposition, key signatures, and grand-staff splitting.
- The webview renders the MusicXML with OpenSheetMusicDisplay (SVG backend) and produces its exports (vector PDF, PNG, and MusicXML) entirely client-side.
- The Node extension writes the returned file to its sandboxed storage directory and reveals it in Finder.
The notation core (src/notation/) has no dependency on the SDK or the DOM, so it is fully unit-testable.
Download the latest .ablx from the Releases page, then:
- In Ableton Live, open Preferences → Extensions (with Developer Mode off, so Live manages the extension).
- Drag the
.ablxonto that page. - Right-click any MIDI clip → Extensions → Show Chart.
Requires Ableton Live Suite 12.4.5b5 or newer with Extensions (currently in the Live 12.4.5 beta; tested on 12.4.5b6). The .ablx is self-contained and runs inside Live's Extension Host, so you do not need Node.js or the SDK installed to use it. Prefer to build it yourself? See Build from source.
This project depends on the Ableton Extensions SDK, which is not published to npm and is not bundled here. Obtain it from Ableton, then:
- Download and unpack the Extensions SDK (e.g.
extensions-sdk-1.0.0-beta.0). - Tell the project where it is and install:
cp .env.example .env # set ABLETON_SDK_PATH to your unpacked SDK, e.g. /path/to/extensions-sdk-1.0.0-beta.0 pnpm run setuppnpm run setupcopies the SDK tarballs into./vendor/(git-ignored) and installs all dependencies. Set the path once and you never editpackage.json.
Building from source needs Node.js ≥ 24 and the Ableton Extensions SDK (beta), distributed by Ableton and not included in this repository.
The fastest loop uses Live's Developer Mode and an externally-launched Extension Host:
- In your
.env(created during setup), setEXTENSION_HOST_PATHto your Live application, e.g./Applications/Ableton Live 12 Suite.app. - In Live: Preferences → Extensions → enable Developer Mode.
- Build and launch the host (leave it running):
pnpm start
- Right-click a MIDI clip → Extensions → Show Chart.
pnpm run build # production bundle → dist/extension.js
pnpm run package # build + package the installable → release/Sheet-Music-<version>.ablx
pnpm run package -- --reveal # same, then reveal the .ablx in Finder (macOS)pnpm run package writes the installable to release/ (git-ignored), clearing any older .ablx first so there's only ever the current one. Install it by dropping the .ablx onto Live's Extensions preferences (with Developer Mode off, so Live manages the host).
pnpm test # unit tests (vitest)
pnpm run typecheck # type-check the extension and the webview
