>_ DevTrendsnl

Taal

Home

Talen

Secties

Frontend Backend Mobiel DevOps AI / ML GameDev Blockchain Embedded Beveiliging
Java

Hoe u bladmuziek kunt converteren naar code en XML met Audiveris

Als je ooit geprobeerd hebt om oude bladmuziek te scannen en af te spelen op een synthesizer of te openen in een muziekbewerkingsprogramma zoals MuseScore, weet je waarschijnlijk hoe frustrerend dit proces kan zijn. Standaard OCR zoals Tesseract schiet hier tekort: teksttekens zijn verbonden met een notenbalk van vijf lijnen, terwijl nootduur, akkoorden, rusten en dynamische aanduidingen een tweedimensionale grafiekstructuur vormen.

Hier komt OMR — Optical Music Recognition — om de hoek kijken. Er zijn niet veel projecten op dit gebied, en volwassen open-source systemen zijn op één hand te tellen. Audiveris is waarschijnlijk de bekendste open-source muziekherkenningsengine, actief ontwikkeld gedurende vele jaren.

De belangrijkste uitdaging bij muziekherkenning

De ontwikkelaars van Audiveris erkennen in de documentatie eerlijk een belangrijk feit: 100% nauwkeurigheid bereiken in muziekherkenning puur door algoritmische middelen is praktisch onmogelijk. Echte scans uit archieven zoals IMSLP hebben vaak te maken met papiervouwen, scheefheid, vervaagde inkt en niet-standaard lettertypen van 19e-eeuwse uitgevers. Als er een fout optreedt in de voortekening aan het begin van een regel, ontaardt de rest van de decodering in kakofonie.

Daarom is het concept achter Audiveris opgebouwd rond twee nauw verbonden componenten:

  • Computational engine (OMR Engine)
  • Ingebouwde grafische editor (OMR Editor)

Eerst voert de engine herkenning uit, en vervolgens komt een mens in beeld. In de interface van het programma kun je scheefheid corrigeren, herkende symbolen repareren of algoritmeparameters direct aanpassen, zonder het hele document opnieuw te verwerken.

Hoe de herkenningsengine werkt

De architectuur van Audiveris kan als hybride worden beschreven. De makers hebben niet blindelings alleen vertrouwd op klassieke computeranalyse of alleen op deep learning. Voor elk type muzieknotatie-element hebben ze hun eigen methode gekozen:

  1. Notenbalken en rooster worden gedetecteerd met gespecialiseerde algoritmes voor rechtlijn detectie.
  2. Nootbalken (verbindingslijnen tussen achtste en zestiende noten) worden herkend via wiskundige beeldmorfologie.
  3. Tekstelementen zoals titels, tempo-aanduidingen en songteksten worden doorgestuurd naar een externe OCR-engine.
  4. Nootkoppen worden geïdentificeerd via template matching.
  5. Alle andere symbolen met vaste afmetingen worden verwerkt door een neuraal netwerk.

Het resultaat wordt opgeslagen in een intern XML-formaat met de .omr extensie of geëxporteerd naar standaard MusicXML 4.0. Dit formaat wordt begrepen door vrijwel alle moderne muzieknotatiesoftware: Finale, Sibelius, Dorico en MuseScore.

Pas op voor domeinnamen

Een interessant detail uit de README van de repository: de auteurs waarschuwen specifiek gebruikers voor een nep-website audiveris.com.

Het echte project leeft op GitHub en de bijbehorende GitHub Pages-site. Een site met het .com-domein imiteert de officiële bron maar stuurt mensen door naar diensten van derden met cryptovaluta en gokken. Wees voorzichtig als je besluit om een kant-en-klare distributie te downloaden.

Hoe het project te bouwen en uit te voeren

De code is geschreven in Java en gebouwd met Gradle. Je hebt JDK 17 of nieuwer en Git nodig om ermee te werken.

Het project gebruikt een klassiek branchingschema:

  • De master branch bevat alleen stabiele releases.
  • Alle actieve ontwikkeling vindt plaats in de development branch.

Kloon de repository en bouw het project vanuit de ontwikkelingsbranch:

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

Zodra het bouwen is voltooid, kun je de applicatie direct uitvoeren via Gradle:

./gradlew run

Als je niet van plan bent om de code zelf aan te passen en alleen bladmuziek wilt converteren, bieden de ontwikkelaars kant-en-klare installers voor Windows (.msi), Linux (.deb en Flatpak op Flathub) en macOS (.dmg). Deze bevatten al de benodigde Java Runtime Environment, dus je hoeft de omgeving niet handmatig in te stellen.

Waarom dit belangrijk is voor ontwikkelaars

Audiveris is niet alleen interessant voor musici. Als je diensten ontwikkelt voor het werken met mediacontent, digitale archieven of educatieve programma's, biedt dit project een paar geweldige mogelijkheden:

  • Gebruik de Java API. Je kunt Audiveris als library integreren in je project en de verwerking van bladmuziek-PDF's automatiseren op een server.
  • Toegang tot de oorspronkelijke documentstructuur. Het .omr-formaat bevat gedetailleerde informatie over de geometrie van herkende elementen, wat handig is voor analyse of het trainen van je eigen modellen.

De leercurve is hier redelijk acceptabel, en de code onder AGPLv3-licentie biedt een goed voorbeeld van hoe je complexe hybride beeldverwerkingssystemen kunt bouwen.

Conclusie

Als je voor de taak staat om bladmuziekarchieven te digitaliseren of bladherkenning in je applicatie in te bedden, is het niet meer nodig om naar proprietaire tools te kijken die honderden dollars kosten. Audiveris demonstreert een pragmatische aanpak voor OMR: automatische algoritmen combineren met handige handmatige correctie levert uitstekende praktische resultaten op.

Gerelateerde projecten