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).
Download a build
Section titled “Download a build”Bundles are attached to each GitHub release.
On Debian/Ubuntu, the apt repository keeps you updated with the system:
sudo curl -fsSL https://battuta.vibetuned.com/apt/battuta.asc -o /etc/apt/keyrings/battuta.ascecho "deb [signed-by=/etc/apt/keyrings/battuta.asc] https://battuta.vibetuned.com/apt stable main" | sudo tee /etc/apt/sources.list.d/battuta.listsudo apt update && sudo apt install battutaOr 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.debbattuta_<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.
With Homebrew:
brew install --cask vibetuned/tap/battutaOr download the .dmg, open it, drag battuta to Applications. One universal
binary covers Apple Silicon and Intel.
From 0.0.2 the app is signed with Vibetuned’s Apple Developer ID and notarized — no Gatekeeper hoops. (The old 0.0.1 image was unsigned; if you’re stuck on it, use Finder’s context menu → Open the first time.)
Verified on Apple Silicon: the app launches, .mei files open by
double-click, and MIDI keyboards hot-plug through CoreMIDI.
Download the NSIS installer (battuta_<version>_x64-setup.exe). It
bootstraps Microsoft’s WebView2 runtime if the machine doesn’t have it.
The installer is not Authenticode-signed yet, so SmartScreen warns about an unknown publisher the first time: choose More info → Run anyway. (Signing through the SignPath Foundation is being set up; how builds are produced, signed and approved is spelled out in the code signing policy.)
Verified on Windows 11: the installer completes and the editor runs.
Opening .mei files by double-click
Section titled “Opening .mei files by double-click”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.
Run from source
Section titled “Run from source”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).
-
Get the sources and dependencies — Node 22 or newer:
Terminal window git clone https://github.com/vibetuned/battuta.gitcd battutanpm install -
Start the editor:
Terminal window npm run dev --workspace @battuta/editor -
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.
Building the desktop shell
Section titled “Building the desktop shell”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:
sudo apt install libwebkit2gtk-4.1-dev libgtk-3-dev libasound2-dev \ librsvg2-dev build-essential curl wget file libssl-devThe Xcode command line tools supply the toolchain:
xcode-select --installFor a universal binary, add both targets and build with
npx tauri build --target universal-apple-darwin:
rustup target add aarch64-apple-darwin x86_64-apple-darwinRust must be the MSVC toolchain — rustup’s default on Windows
(x86_64-pc-windows-msvc). Two more pieces:
- Visual Studio Build Tools with the Desktop development with C++
workload, which supplies
link.exeand the Windows SDK. A full Visual Studio Community install with that workload works equally well. - The WebView2 runtime, already present on Windows 11 and current Windows 10. (The shipped installer bootstraps it; a source build expects it to be there.)
No shell-specific setup is needed — PowerShell, cmd and Git Bash all work.
Then, from the repository root (one command per line — && is not valid in
Windows PowerShell 5):
npm installcd apps/editornpx tauri buildtauri 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.
What’s next
Section titled “What’s next”- A tour of the window — every control, named.
- Your first score — from blank to a phrase you can hear.