![]() |
![]() |
|||
| Muziek van Paul Merkus |
|
|||
|
|
Introductie en contextIn de jaren 1988...1995 heb ik voor de hobby veel tijd besteed aan het zelf programmeren van een "muziekverwerker". Het waren de jaren waarin de Personal Computer zijn intrede deed en ik ook via een "PC-privé" regeling vanuit mijn werkgever werd gestimulleerd om daarmee kennis te maken. Het was de tijd waarin de "tekstverwerker" in opmars was als de killer application van de MS-DOS PC. Dit was ook het tijvak tussen mijn eerste en tweede periode voor wat betreft het componeren van mijn Spheren oeuvre. de MuziekverwerkerAls tegenhanger van de "tekstverwerker" ontstond aldus de "muziekverwerker", en heb ik een compleet systeem voor muzieknotatie op een 16-bit MS-DOS PC ontworpen en geimplementeerd, geschreven in Turbo Pascal met behulp van Borland's Graphics Interface (BGI). Ik wilde een muzieknotatie systeem maken dat notie had van hoe westerse tonale muziek in elkaar zit door dat intern te modelleren, vanuit de muziektheoretische basisprincipes. Al met al had het MUSIC systeem vele features die ook beschreven zijn in de MUSIC Help File.
Bach's Badinerie in de MUSIC Muziekverwerker
ConceptHet concept achter deze muziekverwerker is dat het een symbolische editor is van MIDI bestanden (destijds in opmars), en dat dit tool de gebruiker in staat stelt om MIDI bestanden in muzieknotatie te bewerken. Gezien het feit dat er meerdere verschillende representaties mogelijk zijn in het muziekschrift, kiest het tool de “beste” weergave op basis van muziektheoretische analyses. Het tool bepaalt de muzikaal syntactisch correcte weergave van een noot (de gebruiker heeft hier geen invloed op). Dit leidt ertoe dat de gebruiker zich kan concentreren op de muzikale aspecten van een stuk (wellicht zijn/haar compositie), en niet op de notatieaspecten, aangezien deze automatisch worden afgehandeld door het tool.Software architectuurDe centrale ontwerpbeslissing was om bladmuziek conceptueel weer te geven als een tijdgeordende stroom van "muzikale entiteiten". De datastructuur die ik gekozen had bestond uit akkoorden, rusten, maatstrepen, maatsoorten, toonsoortwisselingen en andere muzikale "entiteiten" (in temporele volgorde met elkaar verbonden). De akkoord-entiteiten wezen dan naar een reeks van noten, waardoor “het waslijn-model” werd gevormd. De grafische weergave van deze muziek was dan van tweede orde. Door deze opzet werd het mogelijk om een analyse van de opbouw van het muziek te bepalen (waaronder de toonsoort) alvorens de visuele lay-out te kiezen.Het systeem is bewust opgebouwd uit duidelijk gescheiden subsystemen:
Software architectuur van de Muziekverwerker Intelligentie in notatieDe vertaling van laag-niveau reeksen toets-aanslag en -loslaat informatie naar muzikale notatie kent twee uitdagende aspecten:
Menu om nooteigenschappen te wijzigen in Muziekverwerker Rule-checkerEen belangrijk uitgangspunt van het MUSIC-programma is dat het de gebruiker in staat stelt om een (nieuw) muziekstuk te noteren en daarbij door het programma geholpen te worden om dat op een muzikaal syntactisch juiste manier te doen. Haast iedere maat moet het juiste aantal tellen hebben dat past bij de maatsoort van dat moment en de enharmonische notatie (F# of Gb, A# of Bb) moet kloppen bij de onderhavige toonsoort. Ook de notatie van meervoudige rusten moet op een bepaalde manier gebeuren, overeenkomstig de maatsoort en het maatritme (dus 3/4 en 6/8 verschillen hierin). Dit zijn een drietal voorbeelden van muzikale notatie regels waarin het MUSIC programma helpt. Soms gaat die hulp automatisch, soms door de rule-checker, een functie die door de gebruiker aangeroepen kan worden om het muziekstuk helemaal door te lopen en te controleren. Een groene melding dat alle maten kloppen is dan fijn :-)ImplementatiecontextDit alles heb ik “met de hand” ontwikkeld op een MS-DOS computer met beperkte geheugencapaciteit, zonder moderne refactoringtools of grafische frameworks. De object oriented taalextensies van Borland's Turbo Pascal heb ik uitgebreid benut, inclusief overerving en abstracte methoden, om zo een strakke structuur qua systeemontwerp te kunnen doorvoeren (incl. information hiding) en het systeem uitbreidbaar te houden. Terugkijkend lijkt de architectuur op wat later zou worden omschreven als een gelaagd en domeingestuurd ontwerp – maar voor mij was het destijds de beste manier om de weergave van de muzieknotatie correct te kiezen, helemaal op basis van interpretatie van de invoer.Waarom het project eindigdeMidden jaren negentig was de kernarchitectuur van het systeem stabiel en uitbreidbaar, maar een aantal essentiële weergavefuncties waren nog niet geďmplementeerd, waaronder dynamische markeringen, legato-bogen, triolen en andere complexere constructies. Deze functies werden niet geblokkeerd door architectonische beperkingen; ze vertegenwoordigden de volgende laag van complexiteit, maar er was (veel) meer tijd voor nodig die features ook allemaal te implementeren. Rond dezelfde tijd veranderde het PC-platformlandschap ingrijpend met de komst van Windows 95, waardoor een op DOS gebaseerd grafisch systeem steeds minder praktisch werd om voort te zetten. Kort daarna begon ik Encore te gebruiken, een commercieel muzieknotatieprogramma dat vrijwel alle resterende features al had geďmplementeerd die ik nog op mijn ontwikkelingslijst had staan. Op dat moment verdween mijn motivatie om mijn eigen systeem verder te ontwikkelen. Ik had nu een compleet muzieknotatieprogramma tot mijn beschikking en ging me weer richten op het componeren; dit was het begin van de tweede periode. Dit project eindigde daarom zeker niet omdat het mislukte, maar omdat het een punt bereikte waarop verder werk voor mij alleen als enige ontwikkelaar (in mijn vrije tijd) niet langer zinvol was. Ik heb er veel van geleerd, zowel over muziektheorie, als ook over programmeren en software architectuur.
Consistentie check foutloos doorlopen voor Badineri TerugblikAls we deze code tientallen jaren later opnieuw bekijken, valt niet de taal of het platform op, maar de gestructureerdheid van de onderliggende ideeën. Hoewel de implementatie duidelijk een product van zijn tijd is, blijft het conceptuele model solide (en dat geeft me jaren later nog steeds veel voldoening).NotebookLM Studio materiaalMet behulp van NotebookLM heb ik meer verdiepend materiaal kunnen genereren over de MuziekVerwerker (allemaal in het Engels, net als de MUSIC Help File).
|