Tessitura
A musicological library cataloging tool for serious musicians, built 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.
About
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.
The Problem
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 |
Usage
# Scan a music directory
# Identify recordings via AcoustID/MusicBrainz
# Enrich metadata from multiple sources
# Review proposed metadata (launches TUI)
# Search your collection
# Find similar recordings
# Check pipeline status
# Write enriched tags back to audio files
Architecture
CLI / 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.
Project Structure
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.
Status
Pre-development — architecture and design phase complete. See the project plan for full details.
License
Apache-2.0/MIT
