Skip to content

Install battuta

battuta is a desktop application. It reads and writes MEI files on your own disk, needs no account, and makes no network requests — nothing you open leaves your machine.

Bundles are attached to each GitHub release.

Two bundles, both 64-bit x86:

  • battuta_<version>_amd64.deb — the small one (~6 MB); it uses the WebKitGTK already on your system.
    Terminal window
    sudo apt install ./battuta_0.0.1_amd64.deb
  • battuta_<version>_amd64.AppImage — self-contained (~81 MB, WebKitGTK bundled); no install step.
    Terminal window
    chmod +x battuta_0.0.1_amd64.AppImage
    ./battuta_0.0.1_amd64.AppImage

MIDI input goes through ALSA. The .deb declares that dependency, so it comes in with the package; if you use the AppImage on a minimal system and the status bar never finds your keyboard, install your distribution’s ALSA runtime.

The Linux packages register *.mei as application/x-mei+xml and hand the clicked file to battuta, so double-clicking a score in your file manager opens it in a new tab. macOS does the same through the app bundle. If a file manager still opens .mei in a text editor, set battuta as the default application for the type once — the association is registered, the preference is yours.

Useful for trying the editor without installing anything: the frontend is a plain web app and runs in any modern browser (Chromium and Firefox both work; Web MIDI needs Chromium).

  1. Get the sources and dependencies — Node 22 or newer:

    Terminal window
    git clone https://github.com/vibetuned/battuta.git
    cd battuta
    npm install
  2. Start the editor:

    Terminal window
    npm run dev --workspace @battuta/editor
  3. Open the printed URL. In a browser, open file… and ctrl + s fall back to a file picker and a download instead of native dialogs; everything else behaves the same.

The desktop app is Tauri 2. Building it needs Rust plus the platform’s webview and audio headers — on Debian/Ubuntu:

Terminal window
sudo apt install libwebkit2gtk-4.1-dev libgtk-3-dev libasound2-dev \
librsvg2-dev build-essential curl wget file libssl-dev

Then:

Terminal window
npm run build -w @battuta/core
npm run build -w @battuta/editor
cd apps/editor && npx tauri build

The bundles land in apps/editor/src-tauri/target/release/bundle/. The binary prints at startup whether it is serving embedded assets or talking to the dev server, so you always know which one you launched.