>_ DevTrendsit

Lingua

Home

Linguaggi

Sezioni

Frontend Backend Mobile DevOps AI / ML GameDev Blockchain Embedded Sicurezza
Java

Come convertire la musica scritta in codice e XML con Audiveris

Se hai mai provato a scansionare della musica scritta antica e riprodurla su un sintetizzatore o ad aprirla in un editor musicale come MuseScore, probabilmente sai quanto possa essere estenuante il processo. L'OCR standard come Tesseract è inutile in questo caso: i caratteri testuali sono legati a un pentagramma di cinque linee, mentre le durate delle note, gli accordi, le pause e le indicazioni dinamiche formano una struttura grafica bidimensionale.

È qui che entra in gioco l'OMR — Riconoscimento Ottico della Musica. Non ci sono molti progetti in questo ambito e i sistemi open-source maturi si contano sulle dita di una mano. Audiveris è forse il motore di riconoscimento musicale open-source più conosciuto, sviluppato attivamente per molti anni.

La principale sfida nel riconoscimento musicale

Gli sviluppatori di Audiveris ammettono onestamente nella documentazione un fatto importante: ottenere il 100% di accuratezza nel riconoscimento musicale esclusivamente con mezzi algoritmici è praticamente impossibile. Le scansioni reali provenienti da archivi come IMSLP soffrono spesso di pieghe della carta, inclinazione, inchiostro sbiadito e caratteri non standard di editori del XIX secolo. Se un errore si insinua nella chiave all'inizio di una riga, l'intera decodifica successiva si trasforma in una cacofonia.

Pertanto, il concetto alla base di Audiveris si basa su due componenti strettamente collegati:

  • Motore computazionale (OMR Engine)
  • Editor grafico integrato (OMR Editor)

Innanzitutto, il motore esegue il riconoscimento, poi interviene un essere umano. Nell'interfaccia del programma, puoi correggere l'inclinazione, sistemare i simboli riconosciuti o regolare i parametri dell'algoritmo al volo, senza rielaborare l'intero documento.

Come funziona il motore di riconoscimento

L'architettura di Audiveris può essere descritta come ibrida. I creatori non si sono affidati ciecamente né esclusivamente all'analisi classica del computer né al deep learning. Per ogni tipo di elemento di notazione musicale, hanno selezionato il proprio metodo:

  1. Le linee del pentagramma e la griglia vengono rilevate utilizzando algoritmi specializzati di rilevamento di linee rette.
  2. Le travature delle note (tratti che collegano note da un ottavo e sedicesimi) vengono riconosciute attraverso la morfologia matematica delle immagini.
  3. Gli elementi testuali come titoli, indicazioni di tempo e testi vengono passati a un motore OCR esterno.
  4. I pallini delle note vengono identificati tramite template matching.
  5. Tutti gli altri simboli di dimensione fissa vengono elaborati da una rete neurale.

Il risultato viene salvato in un formato XML interno con l'estensione .omr oppure esportato in MusicXML 4.0 standard. Questo formato è compreso da praticamente tutti i software moderni di notazione musicale: Finale, Sibelius, Dorico e MuseScore.

Attenzione ai nomi di dominio

Un dettaglio interessante dal README del repository: gli autori mettono specificamente in guardia gli utenti da un sito web fasullo audiveris.com.

Il progetto reale vive su GitHub e sul suo sito GitHub Pages associato. Un sito con il dominio .com imita la risorsa ufficiale ma reindirizza le persone a servizi di terze parti con criptovalute e scommesse. Fai attenzione se decidi di scaricare una distribuzione pronta all'uso.

Come compilare ed eseguire il progetto

Il codice è scritto in Java e compilato con Gradle. Avrai bisogno di JDK 17 o versione successiva e di Git per lavorarci.

Il progetto utilizza uno schema di branching classico:

  • Il branch master contiene solo release stabili.
  • Todo lo sviluppo attivo avviene nel branch development.

Clona il repository e compila il progetto dal branch di sviluppo:

git clone https://github.com/Audiveris/audiveris.git
cd audiveris
git checkout development
./gradlew build

Una volta completata la compilazione, puoi eseguire l'applicazione direttamente tramite Gradle:

./gradlew run

Se non prevedi di modificare il codice stesso e vuoi solo convertire la musica scritta, gli sviluppatori forniscono programmi di installazione già pronti per Windows (.msi), Linux (.deb e Flatpak su Flathub) e macOS (.dmg). Includono già l'ambiente Java Runtime necessario, quindi non dovrai configurare l'ambiente manualmente.

Perché è importante per gli sviluppatori

Audiveris non interessa solo ai musicisti. Se stai sviluppando servizi per lavorare con contenuti multimediali, archivi digitali o programmi educativi, questo progetto offre un paio di ottime opportunità:

  • Usa l'API Java. Puoi integrare Audiveris come libreria nel tuo progetto e automatizzare l'elaborazione di PDF di musica scritta su un server.
  • Accedi alla struttura originale del documento. Il formato .omr contiene informazioni dettagliate sulla geometria degli elementi riconosciuti, utili per l'analisi o per addestrare i tuoi modelli.

La curva di apprendimento qui è abbastanza ragionevole e il codice con licenza AGPLv3 fornisce un buon esempio di come costruire sistemi complessi di elaborazione ibrida delle immagini.

Conclusione

Se ti trovi di fronte al compito di digitalizzare archivi di musica scritta o di integrare il riconoscimento degli spartiti nella tua applicazione, non è più necessario guardare agli strumenti proprietari che costano centinaia di dollari. Audiveris dimostra un approccio pragmatico all'OMR: combinare algoritmi automatici con una comoda correzione manuale offre risultati pratici eccellenti.

Progetti correlati