HCC Nieuwsbrief 70, blz. 33-35
Een muzieksysteem in
FORTH
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.