-
Notifications
You must be signed in to change notification settings - Fork 0
Home
Rodrigo Agurto edited this page May 30, 2026
·
1 revision
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.
| 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 |
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-sys—cxx::bridgeplus 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 firstToolkit::newand handed to Verovio viaSetResourcePath
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.
- Code examples: in-crate
examples/directory - API reference:
cargo doc --openfrom the workspace - Issue tracker: GitHub issues