A musicological audio media library cataloging tool for serious musicians, written in Rust.
The name comes from tessitura — the vocal or instrumental range where a performer is most comfortable and expressive. The metaphor: finding the range where your music collection is most naturally discoverable and useful.
Tessitura is a CLI-first tool for cataloging, enriching, and searching a personal digital music library with musicological rigor. It is designed for serious musicians, composition students, musicologists, and archivists — people for whom "Genre: Classical" is not remotely sufficient.
Tessitura is not a music player or streaming service. It is a cataloging, enrichment, and search tool that can optionally write enriched metadata back into audio files (FLAC, MP3) for consumption by other tools.
No consumer audio tagging standard can express the full relational model of music metadata. ID3v2 and Vorbis comments give you flat key-value pairs. There's no native way to express:
"This is a performance of Bartók's String Quartet No. 4, III. Non troppo lento, performed by the Takács Quartet, in a 1998 Decca recording, which I own as a FLAC rip."
Tessitura solves this by maintaining a full relational model internally (rooted in the FRBR library science hierarchy) and projecting a flattened version into audio tags when needed.
| FRBR Level | Music Example |
|---|---|
| Work | Beethoven's Symphony No. 5 |
| Expression | Karajan/BPO 1962 interpretation |
| Manifestation | The specific DG LP release |
| Item | Your FLAC rip of that release |
# Scan a music directory
tessitura scan /path/to/music
# Identify recordings via AcoustID/MusicBrainz
tessitura identify
# Enrich metadata from multiple sources
tessitura enrich
# Review proposed metadata (launches TUI)
tessitura review
# Search your collection
tessitura search --form "string quartet" --period "20th century" --key "a minor"
# Find similar recordings
tessitura similar "Bartók String Quartet No. 4"
# Check pipeline status
tessitura status "String Quartets 1-6"
# Write enriched tags back to audio files
tessitura exportCLI / TUI Interface
│
┌────┴────┐
│ │
petgraph LanceDB ← structured + vector search
│ │
└────┬────┘
│
SQLite (FRBR schema) ← source of truth
│
ETL Pipeline (tessitura) ← scan → identify → enrich → harmonize → review → index → export
Metadata is enriched from multiple sources — MusicBrainz, Wikidata, Last.fm, Library of Congress controlled vocabularies (LCGFT/LCMPT), and Discogs — with full provenance tracking per assertion.
tessitura/
├── crates/
│ ├── tessitura-core/ # FRBR domain model, schema, taxonomy
│ ├── tessitura-etl/ # Pipeline stages (scan, identify, enrich, ...)
│ ├── tessitura-graph/ # petgraph knowledge graph + structured queries
│ ├── tessitura-search/ # LanceDB vector search
│ └── tessitura-cli/ # CLI + TUI entry point
└── config/ # Mapping rules, vocabulary snapshots
The ETL pipeline is powered by tessitura, a standalone workflow engine crate with persistent state, resumability, and human-in-the-loop review gates.
Pre-development — architecture and design phase complete. See the project plan for full details.
Apache-2.0/MIT
