Dr.Godfried-Willem RAES

Kursus Experimentele Muziek: Boekdeel 1: Algoritmische Kompositie

Hogeschool Gent

Departement Muziek en Drama


Terug naar de inhoudstafel

1050:

INTRODUKTIE IN MIDI-BESTURING

Bij internationale afspraak werden voor het aansluiten van een hele reeks digitale muziekinstrumenten, studioapparatuur en komputers tussen fabrikanten een reeks afspraken gemaakt teneinde tot een zekere vorm van standaardizering te komen. Deze noodzaak drong zich op omdat alle vroegere elektronische muziekinstrumenten en apparatuur een ware proliferatie vertoonden van de meest diverse aansluitingen en besturingen, waardoor de fabrikanten hun eigen marktsegment ondermijnd zagen. Immers geen fabrikant is er ooit in geslaagd een muzikus tot een monogaam huwelijk met zijn produktengamma te verleiden. Dit heeft geleid tot het ontstaan van MIDI, een letterwoord of akroniem dat staat voor:

Midi is dus niets meer dan een normenstelsel (een protokol) voor het onderling aansluiten van voornoemde toestellen (hardware aspekt) en voor de manier waarop die toestellen met elkaar kunnen kommuniceren. (software aspekt).

De hardware aansluitingen gebeuren met 5-polige DIN aansluitingen (180 graden), waarbij de pinnen 1 en 3 niet worden gebruikt. Alle aansluitingen geschieden van midi-out naar midi-in. Aftakkingen mogen niet gemaakt worden! Omdat de behoefte daaraan echter logisch is, werd daartoe voorzien in een midi-thru kontaktbus, waarop dezelfde informatie staat die via midi-in werd aangeboden.

Het is goed reeds op deze plaats een vaakgehoorde mythe te ontmaskeren: technisch onkundigen hoor je vaak beweren dat het doorlussen van midi-informatie via de THRU aansluitingen het MIDI-signaal zou vertragen. Ooit las ik ergens zelfs de blunder waarvolgens je er een heuse vertragingslijn mee zou kunnen opzetten! Dit is klinkklare onzin: de schakeltijden van goede optocouplers in kombinatie van schakeltransistoren zijn onnoemelijk veel sneller dan de midi-datastroom zelf, en kunnen dus niet aansprakelijk worden gesteld voor gebeurlijke vertragingen in het systeem. Deze laatste zijn steevast te wijten aan de verwerkingssnelheid van de midi-datastroom door de in de keten opgenomen mikroprocessoren.Een euvel dat zich wel kan voordoen is dat fabrikanten van midi-toestellen gebruik maken van optocouplers die slechts marginaal aan de midi-eisen voldoen (CNY17 bvb), waardoor de flanksteilheid van de signalen die de midiboodschappen dragen wordt aangetast. Wanneer dit zich voordoet -praktisch bvb. wanneer we meer dan 4 toestellen in kaskade via midi-thru doorlussen- krijgen we in geen geval af te rekenen met vertragingen maar wel met onvolledige midi-berichten, onontvangen boodschappen en bevelen, verminkte sys-ex dumps enzomeer. Wanneer je hiermee te maken krijgt, overweeg dan de aanschaf of de bouw van een MIDI-ster distributor. Een sterverbinding van miditoestellen is steeds veel betrouwbaarder dan het doorlussen via midi-thru. 

Voor de aansluitdraden kan gewoon afgeschermd mikrofoonsnoer (2 getwiste geleiders plus afscherming) gebruikt worden. Alle verbindingen worden intern gerealizeerd met snelle opto-koppelaars. Een midi-netwerk is dan ook zo opgevat dat alle toestellen elektrisch (galvanisch) van elkaar gescheiden zijn.

De manier waarop informatie serieel wordt verzonden is eveneens gestandaardizeerd. Dit laatste aspekt noemt men het kommunikatieprotokol. Het zal in zijn details het onderwerp vormen van een zeker aantal van de volgende hoofdstukken. Een heel grondige kennis ervan is onontbeerlijk voor wie op een kreatieve wijze met dit soort apparatuur wil leren omgaan.

1.Het protokol :

Via een speciale seriele poort worden bytes verzonden met o.m. volgende in internationale standaarden afgesproken betekenissen:

Het eerste verzonden byte moet in elk geval, in binaire vorm bekeken , beginnen met 1. Men noemt dit het STATUS-BYTE.

De decimale waarde van een startbyte of status-byte in het midi-protokol moet dan ook steeds groter zijn of gelijk aan :

1000 0000 = &H80 = 128 decimaal

Het eerste Nibble (4-bits) van dit byte bepaalt de betekenis van de navolgende instruktie. Wanneer dit nibble 1001 is dan 'weet' het aangesloten midi-toestel dat wat volgt betrekking heeft op aan of uit te schakelen noten.

Het midi-protokol kan maximaal 16 polyfoon gescheiden kanalen sturen. De kanaalinformatie ligt vervat in het tweede nibble van het eerste byte, of status-byte. Aangezien met 4-bits geteld kan worden van 0000 - 1111, of van &H0 - &HF, of, van 0 - 15, zijn er 16 verschillende kanalen mogelijk. Hierover bestaat ondanks alle protokolaire afspraken een wijdverspreide verwarring: nu eens wordt geteld van 0-15, dan eens van 1-16... Meestal kan alleen een kontekst analyse ons hierbij helpen.Wij zullen ons houden aan de afspraak dat we steeds tellen vanaf 0.

vb:

Na een noot aan of uit instruktie moeten verplicht steeds minstens twee bytes verstuurd worden met de volgende betekenis:

eerste byte = nootinformatie: meer bepaald het nummer van de noot die aan of uitgeschakeld dient te worden. Alle muzieknoten van het twaalftonig stelsel werden daarbij genummerd van 0 tot 127 waarbij 60 overeenkomt met de centrale UT of DO op het pianoklavier)

tweede byte = informatie over de aanslagsnelheid. Ook hier wordt de aanslagsterkte uitgedrukt als een getal van 0 tot 127. Wanneer deze waarde 0 is wordt de noot overeenkomend met het getal in het vorige byte uitgeschakeld indien deze reeds klonk. Klonk die noot helemaal niet, dan gebeurt er niets.

Opgelet: beide bytes MOETEN steeds in binaire vorm met een 0 beginnen ! ( vandaar de waarden tussen 0 en 127, reken zelf na).

Bij sommige oudere MIDI-toestellen kunnen noten niet op deze wijze ook worden uitgeschakeld maar moet volgende reeks van drie bytes worden gebruikt :

Het laatste byte wordt slechts bij weinig toestellen gebruikt maar dient toch te worden doorgestuurd. Alle midi-apparatuur die luistert naar note-on/off kommandos 'begrijpt' deze instruktie, ook wanneer noten kunnen worden uitgeschakeld met note-on / velocity-zero.

De noten zelf zijn doodgewoon genummerd van laag tot hoog in kromatische volgorde . Alle 12's en veelvouden zijn DO . Noot nummer 60 komt overeen met de centrale do op een pianoklavier. Hiermee hebben we voorlopig reeds voldoende informatie om enkele eerste stappen in midi-land te zetten, overigens het beste middel om dit land in kaart te brengen. Alle hier onmiddellijk volgende programmavoorbeelden zijn gesteld in een allereenvoudigst Basic en moeten dan ook op zowat elk komputer aan de praat te krijgen zijn, vooropgesteld dat die is uitgerust met een midi-interface natuurlijk, waaraan de hier gebruikte OUT instrukties dienen te worden aangepast. Zonder meer lopen ze in GFA-Basic op een Atari 1040 ST, een komputer die standaard over een midi-aansluiting beschikt. Op de IBM-PC hangt een en ander nogal af van het gebruikte midi-interface en de beschikbare dokumentatie erbij. In de klas hebben we besturingsroutines en voorbeelden voor de ISA-Bus interfaces van Roland (MPU401, voor MusicQuest, voor MidiMan en voor de SoundBlaster midi-poort). De hierbij gegeven voorbeelden werken slechts wanneer je de betreffende subroutines mee inleest.

Voorbeeldprogramma :

(voorbeelden voor Power Basic onder Windows volgen verder)

dit programma speelt een kromatische toonladder

Atari 1040ST-GFA Basic kode IBM- BC7 kode:

verander de regel waarmee de tellerlus wordt geopend nu in:

en de toonladder wordt een hele-toonstoonladder.Verander regel 6 en 7 in:

en de toonladder wordt in een uiterst onregelmatig ritme gespeeld.

Merk op dat we het soort instrukties voor de bepaling van de tijd tussen klanken zoals hier gebruikt in het Atari voorbeeld ,eigenlijk dienen te verfoeien: dergelijke konstrukties hangen in hun rezultaat volledig af van hardware eigenschappen van de gebruikte komputer. Zoals ze hier staan werken ze alleen goed op intussen reeds bejaarde XT's. (8088 machines met en 4.77MHz klok). Een goed programma moet evenwel zo onafhankelijk mogelijk zijn van de gebruikte hardware. We zullen verder dan ook betere metodes voor tijdsmeting en bepaling behandelen. Het voorbeeld voor de IBM is wat dit betreft volkomen in orde.

Op polyfone synthesizers kan men ook toonladders in akkoorden programmeren:

Merk op dat hier een enkel status-byte verzonden wordt waarna verschillende noten (nootnummer + velocity byte) worden verstuurd. In MIDI-terminologie noemt men dit 'RUNNING STATUS'.

Dit programma genereert toonladders bestaande uit verminderde septiemakkoorden, opgaand in grote tertsen. Twee elkaar kruisende toonladders kan men programmeren alsvolgt:

Merk op dat dit programma het gebruik van een polyfone synthesizer veronderstelt, waarbij dus op een midi-kanaal (in dit geval dus kanaal 1) verschillende noten tegelijk kunnen worden uitgestuurd.

Uiteraard kunnen ook de oude tonale toonladders geprogrammeerd worden. Het eenvoudigst gaat dit door hun struktuur in een ARRAY vast te leggen. Voor een grote terts-toonladder zou zo'n array er dan in de kontekst van een programma uitzien alsvolgt:

 Willen we een kleine tertstoonladder dan vervangen we gewoon de DATA in de laatste door :

 Een werkend programma dat zo'n klassieke ladder over het gehele klavier speelt is bvb.:

(N.B.: Mineur met verhoogde 7e graad)

Willen we nu alle mogelijke mineur toonladders horen dan volstaat het volgende regels tussen te voegen en te veranderen:

Voor de eerste for-next lus:

De oktaventeller wordt nu geformuleerd als:

Voor het END-statement voegen we bovendien nog toe:

Hierin worden echter -zij het op vooralsnog erg primitieve wijze- subroutines gebruikt, waarover meer in volgende hoofdstukken...


Power Basic Console of DLL Compiler kode (PBcc/PBdll), met gebruikmaking van de GMT-library:

Deze kode moet ingelezen worden in PPccEdit. We gaan ervan uit dat GMT evenals PBcc en PBdll, op de gebruikte komputer zijn geinstalleerd en dat er een interne midi-synth of een externe midi poort aanwezig is in de konfiguratie.

1050midi.bas

Dit programma kan een goed vertrekpunt vormen voor eigen experimenten. Het speelt willekeurige noten, vierstemmig binnen een bereik van 2 oktaven. Ga na waarom het dit doet en hoe het geprogrammeerd is. Probeer bovenstaande Atari voorbeelden zelf eens te programmeren, uitgaande van deze programma ossatuur.


ALGEMEEN:

Elk muzikaal verband tussen toonhoogtes en tijdsduren , dat ook maar enige logische samenhang vertoont kan op deze wijze in een programma worden omgezet. Met de akademische harmonieleer evenals met het gehele dodekafonisme en serialisme, werd dit reeds door vele auteurs vrij volkomen gedaan. De opdracht van de eigentijdse komponist kan dan ook niet gelegen zijn in het juist toepassen van welkdanig regelsysteem dan ook. Daarin zijn komputers nu eenmaal veel perfekter dan komponisten. (Cfr. de definitieve overwinning in mei 1997 van Big Blue op Kasparov in schaak, een kombinatorisch/strategisch spel zoals klassieke harmonie).Veeleer moeten we het bvb. zoeken in het scheppen en onderzoeken van dergelijke regelsystemen.

Het allereerste wat we echter steeds dienen te doen, is het analyzeren van de gewenste samenhang en logika , om die vervolgens in een bruikbaar algoritme om te zetten. Precies die noodzaak dwingt de muzikus in veel hogere mate dan dat met traditionele kompositieopvattingen het geval is tot analyze van zijn eigen denken, waardoor het dit laatste ook meteen verrijkt. Men kan niet langer als komponist de slaaf zijn van zijn kultureel bepaalde emoties en voorkeuren, maar wordt kritischer in de konfrontatie met de samenhang en systematiek van de eigen voorkeuren. Men verspilt anderzijds niet langer tijd aan soms mentaal dodelijke oefeningen in het toepassen van regels zoals dat in slecht opgevatte en gedoceerde harmonieleer helaas al te vaak het geval is.

Een tweede niet geheel onbelangrijk voordeel van het algoritmisch komponeren bestaat erin dat we op relatief eenvoudige wijze een konkreet idee kunnen krijgen van onze kompositie, voor we die door musici laten uitvoeren. We hoeven dus niet langer musici als werktuigen voor onze persoonlijke experimenten te gebruiken, maar kunnen hen werk voorstellen waarvan we de klinkende samenhang zelf op voorhand zorgvuldig hebben onderzocht. Een niettemin resterend gevaar is, dat de komputer zowat alles spelen kan en eigenlijk nauwelijks speeltechnische limieten kent, wat niet van musici kan worden gezegd. De komponist die van komputers gebruik maakt moet dus, wanneer hij althans voor musici schrijft, geenszins minder dan de 'oude' komponist vertrouwd zijn met de instrumentale mogelijkheden en speeltechnieken van de uitvoerders en hun instrumenten. Hij kan echter ook deze beperkingen in zijn kompositorische algoritmes mee opnemen.

Uiteraard kan de komponist zijn werk ook uitsluitend voorbehouden voor uitvoering door komputers . Hij moet er zich dan echter wel van bewust zijn dat de maatschappelijke verspreidingsvoorwaarden voor komputermuziek waaraan dan geen live-uitvoerders te pas komen helemaal anders zijn en ook moeten zijn dan bij koncerten met levende musici. Het koncert als sociaal ritueel blijkt zeer moeilijk inhoudelijk te stofferen met tape- of komputermuziek, zoals overtuigend aangetoond is door de stille dood die de elektronische muziek als loutere toonband-muziek is gestorven. (cfr. de verdwijning van vele studios voor elektronische muziek opgericht in de jaren '60 en de door hen georganiseerde koncertcycli).

Dit neemt op zich niet weg dat er ook op dit vlak beslist lonend werk kan worden gedaan. Men zal zich echter over het medium moeten bezinnen en een van de meest voor de hand liggende oplossingen kan worden aangewezen in de massamedia, die per slot van rekening toch intrinsiek elektronische media zijn. Ook dragers zoals band, cassette, DAT-tapes, CD's, de vroegere vinyl-platen en... floppy disks zijn als verspreidingsmedium mogelijke opties.

In de volgende hoofdstukken, en in de mate waarin we beter vertrouwd raken met de syntax van de Basic taal, zullen we ons dan ook stilaan meer gaan toeleggen op het algoritmisch komponeren zelf. We zullen daarbij ook vele bestaande programmas die aan de basis liggen van muzikale komposities analyzeren en behandelen.

Het hardware-aspekt van MIDI en midi-interfaces zal uitvoerig aan bod komen in het tweede boekdeel (2000-2999) van deze syllabus, waarin we ingaan op de elektronika die nu eenmaal de technologische bazis vormt van een groot deel van de eigentijdse muziekproduktie. Het heeft echter geen zin deel 2 aan te vatten voor we wat gevorderd zijn in de techniek van het programmeren! Onze uiteenzettingen over elektronische hardware bouwen immers voort op de verworven elementaire kennis inzake programmeren.


Filedate: [870315] - last update: 2004-04-27

Terug naar inhoudstafel kursus: <Index Kursus>

Naar homepage Dr.Godfried-Willem RAES