MIDI BPM Shift
v1.0.0An Ableton Live extension that rescales MIDI note timings between BPM interpretations.
MIDI BPM Shift

An Ableton Live extension that rescales MIDI note timings between BPM interpretations.
When a MIDI clip was recorded or created at a different BPM than the music actually plays at, note start times and durations will be off. This tool corrects that by applying a scale factor to every note in the clip.
Features
- BPM mode — specify the BPM the music actually sounds at (Source) and the BPM the MIDI clip was created at (Target); the scale factor is computed automatically
- Multiplier mode — directly set a scale factor via slider or text input
- Right-click any MIDI clip → MIDI BPM Shift
Requirements
- Ableton Live with Extensions support
- Ableton Extensions SDK
1.0.0-beta - Node.js
>=24.14.1
Development
Setup
[!NOTE] As of June 2026, enrollment in the ableton's public beta program and a configured SDK development environment are required.
Place the vendor packages in vendor/:
vendor/
ableton-extensions-sdk-1.0.0-beta.0.tgz
ableton-extensions-cli-1.0.0-beta.0.tgz
Then install dependencies and generate the HTML files:
npm install
npm run gen:html
[!TIP]
ui/index.htmlandui/interface.htmlare not committed to the repository and must be generated from the template before starting development. They are also regenerated automatically bynpm start,npm run dev:ui, andnpm run build.
Scripts
| Command | Description |
|---|---|
npm start | Generate HTML, build extension, start Vite dev server + Extension Host |
npm run dev:ui | Start Vite dev server only (UI development) |
npm run build | Production build (Vite + esbuild) |
npm run build:dev | Dev build with sourcemaps |
npm run package | Production build + create .ablx archive |
npm run gen:html | Regenerate ui/index.html and ui/interface.html from template |
npm run check | Run Biome lint + format check |
npm run format | Auto-format all files with Biome |
Project Structure
src/
extension.ts # Extension entry point
lib/
command/ # registerContextMenuCommand helper
dialog/ # Dialog builder (Extension side)
types/
bpm-transform.ts # Shared types between Extension and UI
ui/
App.tsx # Root component
components/
bpm-transform/ # Feature components
ui/ # shadcn/ui primitives
lib/
dialog/ # Dialog helpers (UI side)
templates/
dialog.html.tpl # HTML template source
scripts/
gen-html.ts # Generates ui/index.html and ui/interface.html
Tech Stack
My personal goal with this tool is to create a development environment that incorporates the standard tech stack currently trending in web development!
Although the Ableton Live Extension SDK is still in its early stages, this repository will serve as a reference for development using the following tech stack:
- Ableton Extensions SDK
- React + TypeScript
- Vite + vite-plugin-singlefile
- Tailwind CSS v4
- shadcn/ui
- Biome
Disclaimer
The source code is released under the MIT License. Use at your own risk.
When using the Ableton Extensions SDK, please comply with the license terms as stated by Ableton.
This is a personal project developed in my spare time. All feedback is welcome, but I may not be able to respond to every request. Thank you for your understanding.
Rate this extension
One rating per account; you can change it any time.
Comments
No comments yet.