What's new
A user-facing digest. The full engineering record — every phase, every fix, every probed Verovio behaviour — lives in CHANGELOG.md.
1.2.0 — 2026-10-29
Section titled “1.2.0 — 2026-10-29”- battuta on iPhone, iPad and Android: the same editor as an app for tablets and phones. Your scores live in battuta’s own folder (the Files app on iPhone and iPad) or in any folder you pick; share… sends a score anywhere. A MIDI instrument plugs in by USB or pairs by Bluetooth from the MIDI list, and on the iPad other music apps hear battuta’s playback. Files →
- The on-screen keyboard, made for touch: a ⌫ always in reach under the ×, two lines on a screen held upright, one octave on a phone so the keys stay wide enough to play. On-screen keyboard →
- The context bar folds into ⋯ when the window is too narrow for all of it, and on a phone the page view lays out pages as wide as the screen. Tour →
- PDF reference (📄): load a score’s PDF with its OMR annotation files and each measure’s scan stands above its tile in edit view, with the caret’s system in a panel that follows it — matched by id, or in order. On a PDF — or its pages as images — without annotation files, draw the systems, click the barlines and split the staves yourself, zoomed from a quarter of the panel’s width up to four times; drag a system’s corners to resize it, and on a touch screen move the page with two fingers. The drawing is kept and exports as annotation files. The first step of the facsimile. On iPhone and iPad, reading a PDF needs iOS / iPadOS 26.2; the pages as images work everywhere. PDF reference →
- Tenuto on =, beside the other articulations. Marks →
- About battuta in the battuta menu: who made it, Verovio’s credit, and the licence of every component the app ships.
- The folder view renames and creates: ✎ or F2 renames a score or a folder in place (an open tab follows its file); + score and + folder create in the marked folder, a new score opening at once. Folder view →
Changed
Section titled “Changed”- Accidentals are saved as they sound. Every note now carries what it
sounds under the key signature and the measure’s accidentals
(
@accid.ges), so other MEI readers hear what battuta plays; a score’s<accid>elements stay elements. Note entry → - MIDI input is spelled by the key: under one flat, B♭ arrives as the key’s B and B as B♮; a white key is never spelled as a sharp of the note below.
- Chords tie: t ties two chords pitch by pitch.
- The bottom panel starts where the folder view ends, and the zoom popover opens over it.
For plugin authors
Section titled “For plugin authors”@battuta/api1.2.0: the workspace’s writes (rename,createFolder,createFile— create-only) andhome()(battuta’s own folder on a tablet or a phone), a band on the overlays point (room above every tile) andctx.query.measureIds(). Writing a plugin →
1.0.0 — 2026-09-18
Section titled “1.0.0 — 2026-09-18”The first stable version. Underneath, battuta became a host: most features are now plugins, loaded only when something they declared happens, with a Plugins tab to turn each one off. Nothing about your scores changed — with every plugin off, an MEI file saves byte-identical. Plugins →
- Pitch reference (🎙): load a recording of a score and see its pitch traced over every measure and over the whole file, against the written notes — where the take is sharp, flat, early or late, in cents. Play the take, or the written notes through MIDI, from a playhead that follows the caret. Detected in the editor; nothing is uploaded. Pitch reference →
- Folder view (📁, desktop app): the scores in a folder you opened, in a panel on the left, click to open; the list follows the disk, and a score you have open that changes on disk is announced the moment it happens. Folder view →
- The Plugins tab in the shortcut editor: every plugin with a switch and its state; off is immediate and remembered. Plugins →
Changed
Section titled “Changed”- Panels push, never cover. The side panel sits on the left below the header and moves the score right; a bottom panel pads the score so the last measures stay reachable.
- MIDI playback delivers in order. Note-offs before note-ons at the same instant, whatever the timer does, so a synth is never handed a note it cannot release. battuta still sends plain notes on channel 1 and never a program change — what sounds is your synth’s choice. Playback →
- The playback controls, the lyrics and harmony lanes, the reflection cycle, the on-screen keyboard and the format converters are plugins now. Same keys, same behaviour; each can be turned off.
For plugin authors
Section titled “For plugin authors”@battuta/apiis 1.0.0. Manifests, activation events, commands as data, the query facade, slots, panels, lanes, overlays, formats, the audio, MIDI, view and workspace services — the surface is pinned by a report and grows one question at a time. Writing a plugin →
0.0.3 — 2026-09-12
Section titled “0.0.3 — 2026-09-12”A quality-of-life round: ten requests from the first release users, plus two fixes that fell out of testing them.
Writing music
Section titled “Writing music”- Lyrics under the notes: l opens the lane, space or enter commits a syllable and jumps to the next note, - hyphenates a word across notes. Lyrics →
- Repeats work in note input — they moved to alt + r, so closing a section no longer means leaving input mode. With nothing selected it puts an end repeat on the caret’s measure, and playback loops it. Repeats →
- Group staves with shift + G over a block: none → brace → bracket, barlines following the symbol. Staff groups →
- Numpad 0 writes a rest, completing the numpad’s duration row, and picking a duration now clears the dot — a new value starts plain, whether you change it with the digits or with alt + arrows.
- 6/4 joined the meter list.
Playing
Section titled “Playing”- Play through your MIDI devices: tick MIDI in the player row and playback goes to every connected output instead of the built-in piano — the same performance, with repeats, ties and articulations. On macOS and Linux battuta also appears as a MIDI source of its own, so listener apps hear it. Playback →
- Transpose the MIDI by ±12 semitones, live, applying to the playback-MIDI export too. The written score and the built-in piano stay at pitch.
Getting around
Section titled “Getting around”- The context bar is keyboard-drivable: F6 focuses it, arrows move and change values, esc returns to the score. Status bar →
- Dialogs that never appeared in the desktop app now do — the unsaved-work warning when closing a tab, the paste-differences question and the overwrite guard were all silently answering “no” for themselves.
- Page view no longer clips braces and brackets at the left edge; pages render with proper margins.
- macOS: alt shortcuts work (auto-beam among them) — Option composes letters into symbols there, which battuta was not accounting for.
0.0.2 — 2026-08-30
Section titled “0.0.2 — 2026-08-30”Validated on all three platforms, and the first release with signed macOS builds and one-command installs (Homebrew, apt).
The score’s own tempo
Section titled “The score’s own tempo”- A ♩= tempo button beside the title sets the score tempo in the MEI
(
@midi.bpm): page view prints the marking, playback runs at it, and the speed select now reads × the score tempo. Playback →
Touch: the on-screen keyboard
Section titled “Touch: the on-screen keyboard”- A virtual keyboard for tablets (🎹, automatic on touch screens): a two-octave piano with multi-touch chords and an octave rail, sticky ctrl/alt/shift latches, a four-way digit pad, and one key per action — generated from your live keymap, so rebinds and new actions appear on their own. Keys relabel live under a latch to show what they will do. The on-screen keyboard →
Import & export
Section titled “Import & export”- Import everything Verovio reads: MusicXML (plain and
.mxl), ABC, Plaine & Easie and Humdrum kern all open — converted to MEI on open, as a new unsaved document so your source is never overwritten. - Export playback MIDI: battuta’s performed form — repeats and jumps
expanded, tie chains merged, staccato/legato gates — as a
.mid. - Export written-score MIDI, SVG pages, Humdrum kern and Plaine & Easie from the battuta menu. Files →
Safety
Section titled “Safety”- Session restore: the open tabs persist after every edit and come back on the next start — a crash or window close loses at most a second of work.
- Close confirmation on dirty tabs; clean ones close silently.
- External-change guard (desktop): saving a file another program modified asks before overwriting. Files →
Distribution
Section titled “Distribution”- The macOS app is signed and notarized (Apple Developer ID) — no more
Gatekeeper warning — and installable with
brew install --cask vibetuned/tap/battuta. - A signed apt repository at
battuta.vibetuned.com/aptfor Debian/Ubuntu. Install →
Fixes from the validation round
Section titled “Fixes from the validation round”- macOS: musical glyphs no longer render as black squares. macOS ships no font for the Musical Symbols Unicode block, so the duration and mark glyphs (𝅝 𝅗𝅥 𝄆 𝄇 𝄐 𝄪) were tofu — battuta (and this guide) now bundle a small Noto Music subset that fills exactly those characters.
- Windows: no more doubled MIDI input. A driver that registers the same device as two ports made every note arrive twice; ports are now deduplicated by device name on both MIDI paths.
The header, reorganised
Section titled “The header, reorganised”- Two rows: tabs and views on top; the score’s title, tempo and (in page view) the player below. File chores, exports and tools moved into one menu under the battuta name; the measure buttons retired in favour of numpad + − * and the on-screen keyboard. Tour →
- Performance numbers are off by default everywhere.
Playback
Section titled “Playback”- A score player in page view — ▶ / ⏸ / ⏹, with the sounding note highlighted from the same timeline that drives the audio, and the view scrolling to follow. Playback →
- Playback follows the form: repeat barlines, volta sets, and one dal-segno or da-capo jump with fine and To Coda. A mid-score D.C. now stops the first pass at the jump instead of running to the end. Repeats and form →
- Ties, slurs and articulations shape what you hear — a tie chain sounds as one held attack, staccato shortens, slurred and tenuto notes sound full, unmarked notes detach slightly.
- Tempo and progress: a 0.5×–2× tempo select that applies live, plus a clickable progress bar with an elapsed/total readout.
Notating the form
Section titled “Notating the form”- To Coda joined the o cycle, distinguished from the coda sign the way MEI does it — by the mark’s text.
- Attack intensity on shift + i: sf → sfz → rinf → rfz. Marks →
- 3/2 joined the meter list.
Editing
Section titled “Editing”- Reflection cycle on shift + r: prime → inversion → retrograde → retrograde inversion, over a block, with the rhythm held fixed. Arranging →
- Tie chains got smarter — tying a note that is already tied extends the chain instead of orphaning the first tie, and untying a link splits it into valid remainders.
- Cross-staff slurs and hairpins: shift-clicking across staves selects an endpoint pair, which is what those spans need. Selection →
- One selection model: shift-runs and mouse blocks now drive every action, each action taking the granularity it needs. r toggles repeats from a shift-run; ctrl + c copies a run’s full measure span.
- Add staff below places the caret on the new staff, ready for entry.
Getting around
Section titled “Getting around”- The view follows the caret — keyboard navigation and note entry scroll the caret back into view instead of leaving you hunting for it.
- Row navigation: Home / End for the row’s start and end, PageUp / PageDown for the previous and next row, and Insert toggling note input both ways. Navigation →
The application
Section titled “The application”- A score title editor in the header, which page view actually prints.
- Toasts for errors, confirmations and refusals — with a
×to dismiss, and selectable text so you can copy an error into a report. - A dirty marker (
*) on tabs, computed from the undo stack, so undoing back to your last save reads as clean again. - Dialogs remember the last folder, including the open file… button, which used to bypass the native dialog entirely.
- Separate QWERTY and AZERTY keymaps with a layout toggle in the shortcut editor, and persisted options — layout and zoom survive restarts. Keyboard reference →
- macOS fixes: MIDI hot-plug now works (CoreMIDI needs a run loop pumped), and the grey Dock icon is gone — macOS 26 re-themes any icon with transparent corners, so the artwork is opaque edge to edge now.
- AGPL-3.0-only license, declared in every manifest.
0.0.1 — first release
Section titled “0.0.1 — first release”The first packaged release: Linux .deb and .AppImage, an app icon, and .mei
file association, on top of a feature-complete v1 editor — tiled Verovio rendering,
a text-editor caret and selection, reversible commands with byte-identical undo,
keyboard and MIDI note entry, copy/paste with the duration validator, context
editing, articulations and ornaments, voices, voltas, tuplets, harmony lanes and a
rebindable keymap.