Prof.Dr.Godfried-Willem RAES
Kursus Experimentele Muziek: Boekdeel 3: Vormleer
Hogeschool Gent : School of Arts
Een akoestisch verschijnsel dat zowel musici als muzikologen al sedert de oudste tijden heeft beziggehouden is de equivalentie van de oktaafsprong in de muziek.
Het audiospektrum is audioperceptorisch gezien inderdaad niet zomaar te beschouwen als een kontinuum, (een alsmaar stijgende of dalende lijn) maar veeleer als een cyclische spiraal. Voor andere parameters van de audioperceptie geldt iets dergelijks niet: de geluidsterkte wordt door ons wel degelijk als een normaal kontinuum waargenomen, ook al verloopt het eigenlijk grosso modo logaritmisch.
Deze vaststelling heeft een aantal wetenschappers en musici ertoe gebracht een koncept tonigheid als muzikale parameter in te voeren naast het klassieke koncept toonhoogte. Om dit koncept experimenteel te onderzoeken zocht men naar klanken die hierdoor zouden worden gekenmerkt dat zij geen toonhoogte hebben doch wel een duidelijke tonigheid. In muzikantentaal: men poogde een do -klank te maken waarvan de oktaafligging onbepaalbaar was. Ook onder de normale muzikale klanken was het fenomeen niet helemaal onbekend: beiaardklokken en aangeslagen buizen zoals gebruikt in buisklokken bvb.hebben soortgelijke eigenschappen. Een van de belangrijkste systematische onderzoekers in dit gebied was de muzikoloog R.Shepard, naar wie dit soort tonen werden genoemd. Hij genereerde hen in de elektrronische muziek studio in 1964. Inderdaad, met zuiver akoestische middelen is het zo goed als onmogelijk om de verschillende parameters van de klank in de hand te houden. De additieve synthese, het centrale paradigma voor spektrumopbouw uit die jaren, werd hiervoor het ideale werktuig.
Een Shepard toon nu bestaat uit een reeks gelijktijdige sinustonen in opeenvolgende oktaven gespreid over het gehele audiogebied waarbij elke oktaafkomponent een intensiteit krijgt zo dat de sterkste komponenten steeds in het gebied 500-1000Hz vallen. In dit gebied blijkt ons oor het gevoeligst te zijn voor de bepaling van toonhoogte. De intensiteitsverdeling van de verschillende oktaaftonen wordt bereikt door de berekening van wegingsfaktoren.
De omhullende van deze spektraalverdeling is meestal een gausskurve, maar andere kurves zijn ook mogelijk. Hoewel deze verdeling niet meer lijkt dan een spelletje rond akoestische illusies (we horen immers een eindeloos stijgende toon, wanneer we deze shepard tonen als een kromatische reeks afspelen) wortelt ze in het eerder genoemde psychoakoestisch onderzoek naar tonigheid: dit is het de eigenschap hebben van een bepaalde noot te zijn van een klank. (Het Do karakter van een do zouden we kunnen zeggen). Dit maakt het mogelijk klanken naar toon (op een cirkel) te projekteren in plaats van op een spiraal die het hele audiogebied doorloopt. Een van de wetenschappelijke perspektieven vanwaaruit dit onderzoek werd opgezet heeft te maken met de gewenste datareduktie bij het opzetten van muzikale harmonische syntaxen. Immers, indien dit zou lukken, dan konden wij ons bij het bepalen en vastleggen van een harmonisch verloop beperken tot een reduktie van het muzikaal materiaal tot een enkel oktaaf omschrijfbaar als een vektoriele cirkel.
Intervallen worden geduid als stijgend of dalend, al naargelang de richting van de kortste weg op de cirkel tussen de respektievelijke tonen. Het tritonus interval is ongedefinieerd en kan zowel als dalend dan als stijgend worden gehoord. Het blijkt louter individueel verschillend te zijn.
Typische ambigue shepard toonreeksen zijn:
Mi La# Fa# Do Re# La Sol Do#
Zij worden door verschillende luisteraars als een verschillend melodisch verloop waargenomen. Onderzoek wees uit dat de wijze waarop het gestalt wordt waargenomen onafhankelijk is van de muzikale vorming van de luisteraar.
Om dit alles experimenteel en praktisch duidelijk te maken schreven we een klein programma waarmee we shepard tonen op de komputer kunnen genereren. Voor de weergave hebben we beslist een synthesizer nodig die minstens 10 noten tegelijkertijd kan weergeven!
Wie de experimenten historisch wil uitvoeren, dient zijn synthesizer in te stellen op zuivere sinustonen. De kurve voor de scaling van de velocities moet lineair zijn. Een andere mogelijkheid bestaat erin de volumekontrollers te gebruiken, mits dan wel voor elke oktaaftoon een verschillend midikanaal wordt gekozen.
deklaraties voor de midi-support module MIDI.BAS (kode elders in de kursus terug te vinden)
CONST Madr% = &H330
DECLARE SUB MpuUart ()
DECLARE SUB ResetMpu ()
DECLARE SUB Uit (byte%)
MpuUart
Pi# = 4 * ATN(1)
bereken een frekwentie-reeks voor de shepard tonen:
DIM Shf&(0 TO 11, 0 TO 9): dim1 = note
dim2 = komponent van die noot
0= aandeel laagste komponent
9= aandeel hoogste komponent
bereken de amplitudereeks (verdeling van de amplitudes over de oktaven)
DIM Shv%(0 TO 11, 0 TO 9)
berekening van de frekwentie-reeks voor 12 tonen:
Fmin = 27.5 / 2 frekwentie voor de laagste komponent (d.i. een la)
FOR n% = 0 TO 11
FOR c% = 0 TO 9
f = Fmin * 2 ^ ((c% * 12 + (n%)) / 12)
Shf&(n%, c%) = INT(f)
Vmin% = 1
Vmax% = 127
Ang# = 2 * Pi# * ((c% * 12) + n%) / (12 * 10)
Shv%(n%, c%) = Vmin% + (Vmax% - Vmin%) * ((1 - COS(Ang#)) / 2)
PRINT Shf&(n%, c%); Shv%(n%, c%)
NEXT c%
NEXT n%
uitsturing van de reeks als een akoestische illuzie:
DIM oldnoot%(0 TO 9)
DO
FOR n% = 0 TO 11
FOR c% = 0 TO 9
vorige noten uitschakelen:
IF oldnoot%(c%) THEN Uit 144: Uit oldnoot%(c%): Uit 0: oldnoot%(c%) = 0
noten doen klinken:
Uit 144: Uit n% + (12 * c%): Uit Shv%(n%, c%)
oldnoot%(c%) = n% + (12 * c%)
NEXT c%
SLEEP 1
NEXT n%
LOOP UNTIL INKEY$ <> ""
disciplinaire uitschakeling en reset aan het einde:
FOR c% = 0 TO 9
IF oldnoot%(c%) THEN Uit 144: Uit oldnoot%(c%): Uit 0: oldnoot%(c%) = 0
NEXT c%
ResetMpu
Dit wiskundig model kan ook aangepast worden voor meer dan 12 tonen per oktaaf en zelfs veralgemeend worden tot het gebruik van permanent stijgende glissandi. Mooie akoestische illuzies kunnen worden verkregen door dit te kombineren met een ruimtelijk draaieffekt.
Muzikale toepassingen van dit soort algoritmiek vinden we terug in heel wat elektronische muziek sedert de jaren zestig. Een van de eerste voorbeelden werd geleverd door James Tenney (For Ann: Rising uit 1971). Latere voorbeelden: o.m. J.Risset.
Ook in instrumentale muziek -uiteraard komt vooral orkestmuziek in grote symfonische bezettingen hiervoor in aanmerking- vonden deze algoritmische koncepten ruimschoots toepassing. Hun toepassing vergt een grondige kennis van instrumentatie en orkestratie. Voorbeeld: Clarenz Barlow.
Uit het werk van Risset putten we volgende akkoordsekwens, die mits uiteraard gespeeld met uitsluitend Shepard tonen, het oor volkomen in de war brengt. Wil je het zelf programmeren, bedenk dan wel dat je synthesizer 3 x 9= 27 tonen simultaan moet kunnen produceren!
We geven de akkoorden als midi getallen:
67 69 71 69 71 69 71
64 66 68 65 67 64 66
60 62 64 60 62 61 63
Akkoorden opgebouwd uit Shepard tonen, noemen we Shepard-akkoorden. Zij hebben deze heel bijzondere akoestische en muzikale eigenschap, dat zij geen omkeringen kennen! Dit maakt hen bij uitstek geschikt voor implementaties van algoritmische harmonie-systemen, omdat we de ligging van de toegepaste akkoorden in eerste instantie volledig buiten het systeem kunnen houden.
Ook voor orkestratie (zowel akoestische, traditionele als elektronische en synthetische) is het bijzonder nuttig een praktische ervaring op te doen met de onderliggende principes. Immers, los van het bereiken van zuivere akoestische illuzies -toch wel wat beperkt tot toverkunstjes- werken de Shepard principes ook wel wanneer we hen vereenvoudigen tot oktaafsamenklanken van minder dan 5 tonen.
Zij worden een van de vele technieken die vandaag thuishoren in het pallet van de komponist.
Algemeen berust het principe op het benadrukken van de frekwenties in het gebied tussen 250 en 2000Hz volgens een klokkurve (de top moet liggen in het oktaaf tussen 500 en 1000Hz).
De franse komponist Risset heeft, uitgaand van de Shepard tonen nog heel wat meer akoestische illuzies ontworpen. Zo stelde hij in de studio een toon samen bestaande uit volgende sinuskomponenten:
49 102 211 435 896 1843 3788Hz
Alle komponenten zijn in de toon in gelijke sterkte aanwezig.
Transponeer de toon nu een oktaaf omhoog (bvb. door de band waarop hij werd opgenomen aan de dubbele snelheid af te spelen), en wat blijkt...: de geoktaveerde toon klinkt nu lager dan de niet geoktaveerde toon... We horen een onmiskenbaar dalend interval.
Ook hier weer kan het effekt worden verklaard uit de ligging van tonen in het gebied 500-2000Hz die klaarblijkelijk in de audioperceptie voor het toonhoogtegevoel aansprakelijk zijn.
Merk op dat je dit experiment niet kan uitvoeren met midi-noten! Het kan wel op een synthesizer worden geimplementeerd, mits gebruik wordt gemaakt van pitch-bend instrukties. (cfr. Hoofdstuk 1 van deze kursus, mikrotonaliteit en andere toonsystemen en hun programmering).
Een van de belangrijkste auteurs (ook experimenteel komponist overigens) die over dit onderwerp onderzoek hebben gedaan en publiceerden is de Nederlander Leon Van Noorden. Hij werkte een fysiologisch perceptie model uit voor de toonhoogtewaarneming waarbij uitgegaan wordt van twee kanalen:
Het akoestisch signaal, drager van toonhoogteinformatie, wordt op twee wijzen gekodeerd:
a.:via de stimulering van specifieke plaatsen op het basilair membraan waarop zich neuronen bevinden voor de perceptie van scherpte, timbre of spektrale toonhoogte.
b. via tijdsstimulering van neurale impulsen voor de perceptie van lage tonen (basistoonhoogte)
cfr.: Leon Van Noorden, Two Channel pitch perception
in: Music, Mind and Brain - the neuropsychology of Music
ed.: Manfred Clynes, Plenum 1982Press, London
In mijn eigen werk worden shepard tonen en akkoorden gebruikt in de produkties Mach96 en Winter97 waar ze worden toegepast op de player-piano. Gezien de ruime tessituur van dit instrument, is een zinnige implementatie van het effekt hier inderdaad mogelijk, ook al dienen de aanslagsterkten zorgvuldig in funktie van het gebruikte mechanisme (cfr. hoofdstuk organologie, player-piano ontwerp) te worden gemapt. Het is voor de toepassing in dit werk dat we een universeel bruikbare procedure schreven waarmee eender welke notenreeks als een shepardakkoord kan worden gespeeld. De specifieke mapping nodig voor de player piano lieten we in het hiernavolgende kodevoorbeeld achterwege.
De kode stamt nog uit vorige eeuw en kan vandaag in de GMT omgeving, gebruik makend van haar biblioteekfunkties, heel wat eenvoudiger worden geschreven.
*************************************************************************
* Universele Shepard Midi-uitstuurroutine *
* Dr.Godfried-Willem Raes *
*************************************************************************
24.06.1996: tested and debugged.
in order to play 4-voice music, the synthesizer should have at least 4 x NrOkt% polyphony!
CONST False = 0
CONST True = NOT False
CONST Pi2! = 2 * 3.141593
CONST NrOkt% = 7: aantal oktaaftonen Max= 9 !!!, minimum = 4 voor werkend effekt
CONST Madr% = &H330
DECLARE SUB MpuUart ()
DECLARE SUB ResetMpu ()
DECLARE SUB Uit (byte%)
DECLARE SUB ShepOut (channel%, note%, velo%) : shepout procedure
MpuUart
test - aug5ths - diminuendo:
FOR vol% = 120 TO 0 STEP -12
FOR n% = 48 TO 59
FOR k% = 0 TO 2: ShepOut k%, n% + (k% * 4), vol%: NEXT k%
SOUND 20000, 10
NEXT n%
NEXT vol%
SUB MpuUart
UART% = &H3F = 0011 1111 (63) =UART-command
Cp% = Madr% + 1
InitUART:
IF INP(Cp%) AND 128 THEN
WAIT Cp%, 64, 64: OUT Cp%, UART%
ELSE
DO : dummy% = INP(Madr%) :LOOP UNTIL INP(Cp%) AND 128
GOTO InitUART
END IF
END SUB
SUB ResetMpu
ResMpu% = &HFF: = 1111 1111 (255)= Reset-command
Cp% = Madr% + 1
DO :dummy% = INP(Madr%) :LOOP UNTIL INP(Cp%) AND 128
WAIT Cp%, 64, 64 : OUT Cp%, ResMpu%
END SUB
SUB ShepOut (channel%, note%, velo%)
STATIC OldShepNote%(), ShepSwitch%, LowOkt%, HighOkt%, Vmin%
channel% = midi channel used for the output
note% = nominal note-name for the shephard tone
velo% = global velocity for the shephard-constellation
Scaling is relative to velo%
IF ShepSwitch% = False THEN eenmalige initialisatie:
DIM OldShepNote%(0 TO 15, 0 TO 127):
LowOkt% = 5 - (NrOkt% / 2): IF LowOkt% < 1 THEN LowOkt% = 1
HighOkt% = LowOkt% + NrOkt%
IF HighOkt% > 9 THEN HighOkt% = 9 tessituurlimit midi
Vmin% = 0 set minimum velocity
ShepSwitch% = NOT ShepSwitch%
END IF
nt% = note% MOD 12
DIM Shvel%(LowOkt% TO HighOkt%)
calculate the velocity scaling:
FOR c% = LowOkt% TO HighOkt%: 1 TO NrOkt% - 1
Ang! = Pi2! * ((c% * 12) + nt%) / (12 * NrOkt%)
Shvel%(c%) = Vmin% + (velo% - Vmin%) * ((1 - COS(Ang!)) / 2)
NEXT c%
switch previous notes off:
FOR ij% = 0 TO 127
IF OldShepNote%(channel%, ij%) THEN
Uit 144 + channel% :Uit ij% : Uit 0
OldShepNote%(channel%, ij%) = False
END IF
NEXT ij%
output the shepard tone in increasing order of velocity in order to overcome potential synthesizer-polyphony limitations
c% = LowOkt%
cnt% = 0
DO
ptr% = (HighOkt% + 1) - c%
IF c% < ptr% THEN
cnt% = cnt% + 2
IF Shvel%(ptr%) THEN
Uit 144 + channel%
Uit (ptr% * 12) + nt%
Uit Shvel%(ptr%)
OldShepNote%(channel%, (ptr% * 12) + nt%) = True
END IF
IF Shvel%(c%) THEN
Uit 144 + channel%
Uit (c% * 12) + nt%
Uit Shvel%(c%)
OldShepNote%(channel%, (c% * 12) + nt%) = True
END IF
ELSE
cnt% = cnt% + 1
IF Shvel%(c%) THEN
Uit 144 + channel%
Uit (c% * 12) + nt%
Uit Shvel%(c%)
OldShepNote%(channel%, (c% * 12) + nt%) = True
END IF
END IF
c% = c% + 1
LOOP UNTIL cnt% = NrOkt%
END SUB
SUB Uit (byte%)
' in nieuwe versies van GMT vervalt deze procedure en is ze vervangen door de mPlay instruktie.
Cp% = Madr% + 1
IF INP(Cp%) AND 128 THEN
WAIT Cp%, 64, 64: OUT Madr%, byte%
ELSE
WHILE INP(Cp%) < 128: dummy% = INP(Madr%): WEND
WAIT Cp%, 64, 64: OUT Madr%, byte%
END IF
END SUB
Recentere eigen komposities waarin van shepard tonen gebruik wordt gemaakt zijn o.m. 'Slones', (2012) waarvoor alle monofone blaasinstrumenten van mijn robot otkest worden gebruikt.
Filedate: 970928 / 2012-11-26
Terug naar inhoudstafel kursus: <Index Kursus> |
Naar homepage dr.Godfried-Willem RAES |