Skip to content
Rodrigo Agurto edited this page May 30, 2026 · 1 revision

verovio-rs Wiki

Safe Rust bindings to Verovio — RISM's C++ music notation engraver. This wiki is the long-form companion to the crate's README and the in-source rustdoc.

Map

Page What it covers
Quick Start Construct, load, render — five-minute path
Features Cargo feature flags table (audio, png, pdf, live-audio, sanitizers)
Rendering SVG / PNG / PDF / multi-page PDF, layout setters, measure ranges
MIDI Playback Multi-track policy, controllers, GM constants, SMF event iterator, panic
Audio Offline PCM/WAV via rustysynth + the live-playback cpal example
Score Reading Timemap, cursors, bbox, metadata, classified elements
Concurrency Send + !Sync contract, log-buffer mitigation, TSan findings
Building NixOS shell, sanitizers, build flags, troubleshooting

Project state

Pre-1.0, pre-publish. API surface is feature-complete for read+play workflows (loading, rendering, playback, querying, audio synthesis). MEI editing is intentionally out of scope — adding it requires reopening the safety contract and extending the FFI surface, which is the only remaining frontier.

The crate is structured around three published crates:

  • verovio — the safe wrapper you depend on
  • verovio-syscxx::bridge plus the static C++ build of vendored Verovio sources (no system Verovio required)
  • verovio-data — bundled SMuFL fonts (Bravura, Leipzig, Gootville, Leland, Petaluma) staged to a process-lifetime tempdir at first Toolkit::new and handed to Verovio via SetResourcePath

License and scope

Licensed under LGPL-3.0-or-later, matching upstream Verovio. Vendored dependencies are MIT / BSD / public domain (all LGPL-compatible). Linux and macOS only — Windows is permanently out of scope.

Where to find what

  • Code examples: in-crate examples/ directory
  • API reference: cargo doc --open from the workspace
  • Issue tracker: GitHub issues

Clone this wiki locally