HCC Nieuwsbrief 70, blz. 33-35

Een muzieksysteem in FORTH

deel 2: Klavarskribo

In een vorig artikel (Deel 1: Musicode) werd beschreven hoe, met behulp van enkele eenvoudige FORTH-functies, op een leesbare en overdraagbare manier computermuziek kan worden geschreven.
Het succes van dit systeem werd gedemonstreerd door de Fantasia van J.S.Bach op een COMX-35 ten gehore te brengen. Het gaat hier voorlopig om monofone, dus niet-meerstemmige muziek. In dit artikel zal worden ingegaan op de werking van klavarskribo-muziek. (Red.)

Meerstemmige muziek

COMMODORE-computers schijnen wat meerstemmige muziek betreft, uitgebreidere dere mogelijkheden te bieden dan de COMX. Ik vraag me echter af of huiscomputers als de CBM zowiezo snel genoeg zijn om met succes polyfonie te vertolken. Men moet zich niet vergissen in de timing van goede muziek. Die luistert in de praktijk namelijk erg nauw. Een fractie van een seconde ernaast is gemakkelijk te horen. Meerstemmige computermuziek klinkt om die reden al snel een beetje klunzig. Dezelfde microprocessor moet immers meerdere toon-generatoren aan- en uitzetten, en daar gaat per definitie wat tijd in zitten. Wat meerstemmige muziek betreft denk ik dan ook eerder aan parallelle verwerking: een aantal micro's samen laten spelen dus, ieder op een eigen FORTH-partituur. Jammer dat er (nog) geen goedkoop equivalent bestaat van onze aloude muziekcomputer: het Hollandse draaiorgel.

Geluid versus beeld

Dit terzijde. De traagheid van de microprocessor is ook dtdelijk waar te nemen wanneer men probeert bij de muziek een mooi ogend beeldscherm te maken. Dit wordt vaak vertoond bij demonstraties op computerbeurzen. Het resultaat is, gezien vanuit muzikaal oogpunt, meestal bedroevend. Ik heb wat het FORTH-systeem betreft dan ook besloten om van beeld bij het geluid af te zien. Omgekeerd gaat het genereren van een notenbeeld op het beeldscherm of op de printer zo tergend langzaam, dat men ook maar beter kan afzien van geluid bij het beeld.

Muzieknotatie

Blijven we zitten met het volgende probleem. We hebben een fraaie compositie geschreven in Musicode, en die willen we graag zwart op wit hebben, liefst in de vorm van traditionele bladmuziek. Wanneer je dit plan tot uitvoer tracht te brengen, zal je al ras bemerken dat het klassieke notenschrift zich niet gemakkelijk leent voor automatisering. Althans niet wanneer je een behoorlijk uitziend produkt wil afleveren, dat te vergelijken is met normaal drukwerk. Mijn conclusie hieruit was dat het conventionele notenschrift ongeschikt is voor goedkope computerweergave.
Nu is het gelukkig niet nodig een nieuw notenschrift uit te vinden. Die uitvinding is namelijk al gedaan; het is zelfs een product van vaderlandse bodem.

Klavarskribo

Klavarskribo is in de HCC-Nieuwsbrief al vaker ter sprake gekomen (: nummers 37 t/m 39). De ontwerper van deze alternatieve notatie was de Nederlandse elektrotechnicus C. Pot te Slikkerveer. Alwaar "Klavarskribo" sindsdien gevestigd is. Voor wie meer wil weten, het adres is: Postbus 39, 2980 AA Ridderkerk. Het nieuwe muziekschrift zegt ontworpen te zijn volgens de stelregel: "door strenge logica tot uiterste eenvoud".
Welnu, men kan een dergelijke stelregel vandaag de dag eenvoudig controleren: door te kijken of een machine er net zo over denkt. Is het alternatieve notenschrift gemakkelijker te mechaniseren dan de klassieke muzieknotatie? Dit blijkt inderdaad het geval. Heeft men voor de klassieke notatie bijna een CAD/CAM-systeem nodig, Klavarskribo kan men zonder veel inspanning implementeren op een goedkope machine als de COMX-35. Althans de wezenlijke kenmerken van het schrift. Je moet natuurlijk nooit proberen de computer een opdracht te geven als "trek een sierboog", in de verwachting dat hij daar op een efficinte manier uit komt. Iets wat uit het losse handje moet, kun je echt veel beter zelf doen.

Half automatisch

Er is dus een FORTH-muziekcompiler gebouwd die half-automatisch Klavarskribo genereert voor een monofoon muziekstuk in musicode (: zie deel 1). In feite genereert deze FORTH een "kale" Klavar-notatie, namelijk datgene wat overeen komt met toonhoogte en duur. Wat men, als nabewerking met de hand, achteraf nog moet toevoegen zijn allerlei zaken die vanuit een klankschrift niet of moeilijk kunnen worden gedefinieerd. Dingen bijvoorbeeld die uitsluitend voor de leesbaarheid dienen, of papier sparen. Hieronder vallen:
- maatstrepen,tellijnen en telcijfers
- verbindingslijnen tussen de noten, fraseerbogen, abbreviaturen
- herhalingstekens (vaak beter van niet).
Ook sterkteaanduidingen (hard en zacht) kunnen gemakkelijker met de hand worden toegevoegd; ze zijn te duur om te automatiseren.

De compiler

De klavarcompiler bevat nogal wat typische COMX-35 zaken, zodat dit hoofdstukje voor de overige lezers wat minder interessant is. Om te beginnen moeten er natuurlijk wat standaard characters tot klavar-tekens worden omgebouwd. Dit gebeurt met de FORM-functie, blijkens definitie dus indirect met het SHAPE commando dat iedere COMX-gebruiker bekend is vanuit de BASIC.
De samenstelling van deze brokstukken tot noten, en stoptekens, wordt geregeld met een aantal DATA-statements, en verwezenlijkt in de functies NOOT en STOP (notennummer n --& op de stack).
Een stuk (verticale) notenbalk wordt gegenereerd met: nl n2 BALK.
SPORT duidt aan de positie van de noot (met nummer n) op de balk.
In VERDER wordt het aantal lege balken achter een noot, daarmee dus de duur van een noot vastgelegd.
Deze functies zijn op hun beurt verwerkt in VOOR en ACHTER, dat zijn de lege (stukken) notenbalk voor en achter de eigenlijke NOOT en STOP tekens.

Besluit

De eindsamenstelling van dit alles vindt plaats in TOON en &.
Al het overige van de klavarcompiler is identiek of analoog aan hetgeen voor Musicode (deel 1) is beschreven. Dat is natuurlijk helemaal geen toeval. Op deze manier zijn stukken in Musicode namelijk direct toegankelijk. Men kan dus de Fantasia van Bach (: zie deel 1) nu in volle glorie over het scherm laten rollen.