ablx.directory

MIDI BPM Shift

v1.0.0

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

shimarisu_121No ratings yet
README · rendered from GitHubView source

MIDI BPM Shift

demo

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

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.html and ui/interface.html are not committed to the repository and must be generated from the template before starting development. They are also regenerated automatically by npm start, npm run dev:ui, and npm run build.

Scripts

CommandDescription
npm startGenerate HTML, build extension, start Vite dev server + Extension Host
npm run dev:uiStart Vite dev server only (UI development)
npm run buildProduction build (Vite + esbuild)
npm run build:devDev build with sourcemaps
npm run packageProduction build + create .ablx archive
npm run gen:htmlRegenerate ui/index.html and ui/interface.html from template
npm run checkRun Biome lint + format check
npm run formatAuto-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:

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.

No ratings yet — be the first

Comments

Sign in to join the discussion.Sign in

No comments yet.