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, and nothing about you is collected (privacy).

Bundles are attached to each GitHub release.

On Debian/Ubuntu, the apt repository keeps you updated with the system:

Terminal window
sudo curl -fsSL https://battuta.vibetuned.com/apt/battuta.asc -o /etc/apt/keyrings/battuta.asc
echo "deb [signed-by=/etc/apt/keyrings/battuta.asc] https://battuta.vibetuned.com/apt stable main" | sudo tee /etc/apt/sources.list.d/battuta.list
sudo apt update && sudo apt install battuta

Or grab a bundle directly — two flavours, 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, and the Windows installer registers the same association in the registry. 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, so building it needs Rust alongside Node, plus your platform’s webview toolchain. Tauri cannot cross-compile — a Windows installer has to be built on Windows, a macOS bundle on macOS.

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, from the repository root (one command per line — && is not valid in Windows PowerShell 5):

Terminal window
npm install
cd apps/editor
npx tauri build

tauri build builds the frontend first, and that in turn builds @battuta/core, so there is no separate frontend step to remember. The bundles land in apps/editor/src-tauri/target/release/bundle/: a .deb and an .AppImage on Linux, a .dmg on macOS, an NSIS -setup.exe on Windows. (A universal macOS build writes to target/universal-apple-darwin/release/bundle/ instead — per-target builds get their own directory.) 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.