Dr.Godfried-Willem RAES

Kursus Experimentele Muziek: Boekdeel 2: Live Electronics

Hogeschool Gent - Departement Muziek en Drama


<Naar Inhoudstafel>

<Naar Holosound>

<Naar 'A Book of Moves'>

2141:

Holosound: een eerste Midi-versie

 

Gezien de vrij grote internationale belangstelling voor dit projekt, en ingaand op heel wat vragen in die zin, bouwde ik van Holosound , in 1988 , ook de 'Midi'-versie. Hier worden niet de verschiltonen rechtstreeks hoorbaar gemaakt, maar komen zij als reeksen numerieke waarden op de midi-uitgang beschikbaar om andere klankopwekkings- of verwerkingsapparatuur aan te sturen. Over dit onderwerp presenteerde ik overigens een technisch 'paper' op de 'International Computer Music Conference' in Keulen in september 1989.

Voor de omzetting wordt uitgegaan van de hiervoor beschreven analoge komputerschakeling. Uit de drie hierdoor geleverde signalen worden telkens twee relevante parameters ( intensiteit en frekwentiedichtheid) in digitale vorm omgezet. Voor wat betreft de intensiteit gebeurt dat door het signaal te integreren , waarna de omhullende overblijft, en het dan via eenvoudige ADC's met een resolutie van 8 bits om te zetten. De frekwentiedichtheid - deze term past hier beter dan 'frekwentie' gezien het kleurruiskarakter van het signaal - wordt uit het signaal afgeleid door het eerst te differentieren en om te zetten in een reeks pulsen, die dan worden geteld. Het teller- resultaat - dat steeds waarden tussen 0 en 127 oplevert - is dan direkt als digitale informatie beschikbaar. Alle digitale signalen hebben een resolutie van 7 bits. Hiervoor werd geopteerd omdat dit een erg eenvoudige aanpassing aan het midi- kommunikatieprotokol mogelijk maakt . In totaal levert de holosound-midi-convertor dus 6 bytes van 7bits en wel alsvolgt:

 

byte 1 : pitch counter value 0 - 127 channel 1

byte 2 : intensity value 0 - 127 channel 1

byte 3 : pitch counter value 0 - 127 channel 2

byte 4 : intensity value 0 - 127 channel 2

byte 5 : pitch counter value 0 - 127 channel 3

byte 6 : intensity value 0 - 127 channel 3

 

Om eenvoudige interfacing naar bestaande apparatuur mogelijk te maken voorzag ik in het ontwerp 10 supplementaire bytes die door het interface kunnen worden uitgestuurd en waarvan de inhoud vrij bepaald kan worden door programmering in een Eprom.

Volgende output-sekwens kan dan ook heel eenvoudig geimplementeerd worden:

byte 1 : ROM-based &HC0 programm change channel 1

byte 2 : ROM-based &Hxx programm number

byte 3 : ROM-based &H90 NOTE ON info channel 1

byte 4 : converter pitch-byte channel 1

byte 5 : converter intensity-byte channel 1

byte 6 : ROM-based &HC1 programm change channel 2

byte 7 : ROM-based &Hxx programm number

byte 8 : ROM-based &H91 NOTE ON info channel 2

byte 9 : converter pitch-byte channel 2

byte 10: concerter intensity-byte channel 2

byte 11: ROM-based &HC2 programm change channel 3

byte 12: ROM-based &Hxx programm number

byte 13: ROM-based &H92 NOTE ON info channel 3

byte 14: converter pitch byte channel 3

byte 15: converter intensity byte channeel 3

byte 16: ROM-based xx not used

 

De volgorde waarin de bytes worden uitgestuurd kan eenvoudig via de hardware worden ingesteld.

Alle dataverwerving in het interface systeem verloop volledig synchroon met de 1 MHz klok, waaruit uit de midi-baud-rate wordt afgeleid.

De tijd die het interface nodig heeft om een cyclus van 16 bytes uit te sturen is 64ms. Dit komt neer op een midi-informatie verversingstempo van 15.6 keer per sekonde.

 

Blokschematisch gezien is het interface opgebouwd alsvolgt :

De ingangssignalen zijn afkomstig van de drie audiokanalen die beschikbaar zijn uit de hiervoor beschreven apparatuur voor Holosound. Gezien de non-periodiciteit van de opgewekte signalen kon geen gewone frekwentiemeting worden toegepast, maar gebruikte ik een teller die synchroon met de uitgangen van de ringteller ( 1/8ste van de klokfrekwentie dus) wordt gereset en met tellen herbegint. De ADC wordt hier gestuurd door een low pass-filter dat eigenlijk als enveloppe follower werkt ( de afsnijfrekwentie is in de orde van de 0.2 Hz ). Ook deze ADC wordt door de ringteller gestart en gereset.

De 6 7-bits parallele uitgangen samen met 10 in EPROM- vastgelegde bytes worden dan om beurten naar een UART gestuurd die er een serieel midi-signaal van maakt.


NAAR EEN KOMPUTER-VERSIE...

 

Een probleem met de vorige, volledig in hardware gerealiseerde omzetting van holosound informatie naar midi-bytes, was gelegen in de geringe flexibiliteit van het systeem. Estetische ingrepen op het resultaat zijn alleen mogelijk wanneer we de midi-output van de schakeling, via een komputer verder algoritmisch en kompositorisch gaan verwerken.

Om hieraan te verhelpen ontwierp ik in 1992 een 'dedicated computer-system' dat alle door voorgaande schakeling uitgevoerde omzettingen in software realiseert en bovendien tegelijkertijd voor de kompositorische verwerking instaat.

De komputer die ik hiervoor inzette, was een 'Multitrax' multitasking microcontroller: dit is een gehele komputer die uit niets meer dan 1 enkele printplaat bestaat en noch scherm, noch klavier heeft. De kommunikatie met de programmeur gebeurt via een terminal. Hiertoe wordt de RS232 poort waarover het board beschikt, verbonden met een terminal of eender welke 'gewone' komputer, waarop dan een kommunikatieprogramma loopt. Voor PC's van de IBM-familie beveel ik daarvoor Procomm aan. Wanneer het programma is geschreven en getest, kan het op het board zelf in een EPROM worden opgeslagen, waarna het systeem het programma zonder nood aan terminal of externe komputer, volkomen autonoom kan draaien.

Het leuke van dit komputersysteempje is dat het ingebouwde besturingssysteem, werkelijke multi-tasking toelaat. Dit wil zeggen, dat het systeem verschillende taken tegelijkertijd kan afhandelen. Bovendien is het systeem rechtstreeks in Basic te programmeren: daartoe werd een ROM-basic ingebouwd, inklusief een compiler voor de omzetting naar machinetaal. De ontwikkelde software loopt alleen na compilatie op het systeem, zodat alle nadelen verbonden aan Basic-interpreters voor dit systeem niet geldig zijn.

Naast deze aspekten beschikt het board ook over een 8-kanaals ADC (Analog Digital Convertor) met een resolutie van 10-bits, een ingebouwde real-time klok, 48 digitale I/O bits, een frekwentieteller, een tweede vrij programmeerbare RS232-poort, een LCD-scherm poort en een eenvoudige toetsenborddecoder voor 16 toetsen.

 

Hardware:

Omdat de ADC-schakeling op het board alleen ingangssignalen verwerkt tussen 0 en +4V, was voor de aansluiting van de analoge Holosound-komputer een minimale signaal-konditionering noodzakelijk: de ingangsspanningen mogen alleen positief zijn en mogen de 4V niet overschrijden. Om aan de eerste voorwaarde te voldoen ontwierp en bouwde ik een precieze elektronische dubbelfazige gelijkrichter, gevolgd door een buffer opamp die het signaal begrenst tot maximaal 4V.

 

Software:

Waar in de vorige schakeling de omzettingen volledig in hardware werden geimplementeerd, deed ik hier een poging een en ander uitsluitend softwarematig te implementeren.

De amplitude van het signaal van elk kanaal kan eenvoudig worden bepaald wanneer we N samples van dat kanaal nemen en meten en daarvan dan het gemiddelde berekenen. Informatie over de frekwentie van het signaal (hier in niet-periodieke zin te verstaan) kan teaoretisch worden bekomen door het toepassen van wiskundig erg komplexe FFT (Fast Fourier Transforms), een techniek die toelaat van een signaal de spektrale samenstelling te bepalen. Voor de implementatie van een volledige FFT is het hier toegepaste komputersysteem en de gebruikte ADC evenwel lang niet snel genoeg. Daarvoor zou immers een speciaal DSP-systeem gebruikt moeten worden. Rekening houdend met het feit dat de hoogste grond-frekwentie komponenten in het holosoundsignaal zelden groter zijn dan ca. 400Hz, en met het feit dat de sampling rate van de ADC ongeveer rond 800 samples per sekonde ligt, bleek het - overeenkomstig het teorema van Nyquist - mogelijk de frekwentie van het signaal te berekenen uit X samples door het aantal keer dat de signaalkurve van richting verandert te tellen. Voor zulk algoritme zijn slechts vergelijkingen van gehele getallen nodig waardoor het erg snel door het komputersysteem afgehandeld kan worden.


 

Technische informatie m.b.t. het beschreven komputersysteem:

'Multitrax' - producent: Control Technology, Box 4605, Mountain View, CA 94040, USA.

Distributie: SINTEC Company, P.O. Box 410, Frenchtown NJ 08825 USA (Tel.:800 526-5960).

Meer informatie over deze verdere stap in 2142: "A Book of Moves"


Filedate: 8805/9210

Terug naar inhoudstafel kursus: <Index-kursus