Dr.Godfried-Willem RAES
Kursus Experimentele Muziek: Boekdeel 1: Algoritmische Kompositie
Hogeschool Gent
Departement Muziek en Drama
1112: Beta-funkties
Manfred Clynes in zijn studie 'Expressive microstructure in Music linked to living qualities' gebruikt voor de simulatie en analyze van de motorisch expressieve elementen van de muzikale uitdrukking zgn. beta-funkties. Hiermee kan door opgave van slechts 2 parameters een heel breed gamma van amplitudekurves worden bepaald.
De beta-funkties laten toe het hele probleem van de bepaling van de enveloppe (omhullende) van een geluid via attack, decay, sustain, release te omzeilen. Deze parameters hebben op zich immers geen werkelijk muzikaal expressieve relevantie.
Beta-funkties werden geintroduceerd voor de analyze van elektrische pulsen door de wiskundige Nigel Nettheim.
De overdrachtfunktie wordt algemeen gedefinieerd als:
waarbij de variabele x zich beweegt tussen de waarden 0 en 1. Dit noemt men normalisatie. Om de funktie te normalizeren naar een maximale amplitude gelijk aan 1, volstaat het haar te delen door een konstante die we kunnen berekenen als:
De twee parameters a en b moeten positief zijn.
Rechtstreeks uitgedrukt als een funktie van de tijd t, krijgen we dus een enveloppe funktie die eruit ziet als:
De waarde 1 voor a en b levert symmetrische kurves op.
De waarde 0.89 voor beide geeft een goede benadering van een halve sinus.
Kleinere waarden voor a geven steilere stijgflanken, 0 een vertikale puls.
Waarden groter dan 1 voor een van beide parameters maken de kurve konkaaf in het betreffend domein.
Kombinaties van 0 en 1 leveren een zaagtandfunktie op.
Muzikaal meest gebruikelijk zijn waarden voor a en b tussen 0.5 en 5. Het gemiddelde voor normaal muzikaal gebruik ligt tussen 0.7 en 2.
Manfred Clynes ontwikkelde een teorie over muzikale expressie waarin hij langs experimentele weg, tot volgend verband kwam tussen de amplitudes-enveloppes van de tonen en hun melodisch en ritmisch verband:
waarin:
Experimenteel vondt hij dat in klassieke muziek de waarden voor a en b dienen te zijn alsvolgt:
Een software implementatie in QBX-BC7-Basic -ontleend aan het programma <HOLOSIMI> waarin menselijke muzikale motoriek wordt gesimuleerd- voerden we in 1989 uit alsvolgt:
DECLARE SUB betai (bpiA, bpiB)
DECLARE SUB betaf (bpfA, bpfB)
' normalizatie-konstante voor de amplitudes met beta-funkties:
betakon = ((bpiA ^ bpiA) * (bpiB ^ bpiB)) / ((bpiA + bpiB) ^ (bpiA + bpiB)
' geval beta-funtie voor amplitude-verloop, bepaald door 2 parameters
' bpiA en bpiB. (Cfr. Clynes,'Expressive Microstructure in Music', p.98)
I = ((T / 640) ^ bpiA) * ((1 - (T / 640)) ^ bpiB)
I = (I / betakon) * Opp
' Pas een vermenigvuldigingsfaktor k toe:
I = I * k
' normalizatie-konstante voor de snelheid met beta-funkties:
betakonf = ((bpfA ^ bpfA) * (bpfB ^ bpfB)) / ((bpfA + bpfB) ^ (bpfA + bpfB))
' geval beta-funtie voor snelheids-verloop, bepaald door 2 parameters bpfA en bpfB. (Cfr. Clynes,'Expressive Microstructure in Music', p.98)
dv = ((T / 640) ^ bpfA) * ((1 - (T / 640)) ^ bpfB)
dv = (dv / betakonf) * v
SUB betaf (K4$, bpfA, bpfB)
' hier worden de twee parameters voor de bepaling van de beta-funktie voor het snelheidsverloop gevraagd en getest.
btfagain:
SCREEN 12 : CLS: LOCATE 27, 1
INPUT " Geef eerste parameter (0-10) ? "; bpfA
LOCATE 28, 1 : INPUT " Geef tweede parameter (0-10) ? "; bpfB
' filter op onaanvaardbare parameter-waarden:
IF bpfA + bpfB <= 0 THEN BEEP: GOTO btfagain
IF bpfA < 0 OR bpfB < 0 THEN BEEP: GOTO btfagain
IF bpfA + bpfB > 10 THEN BEEP: GOTO btfagain
' Plot de funktie uit op het scherm:
' normalizatie-konstante voor de snelheden met beta-funkties:
betakon = ((bpfA ^ bpfA) * (bpfB ^ bpfB)) / ((bpfA + bpfB) ^ (bpfA + bpfB))
Cold = 0
FOR counter = 1 TO 640
' geval beta-funtie voor snelheids-verloop, bepaald door 2 parameters
' bpfA en bpfB. (Cfr. Clynes,'Expressive Microstructure in Music', p.98)
Cnew = ((counter / 640) ^ bpfA) * ((1 - (counter / 640)) ^ bpfB)
Cnew = (Cnew / betakon) * 300
LINE (counter, Cold)-(counter + 1, Cnew)
Cold = Cnew
NEXT counter
LOCATE 25, 1: PRINT "Beta-funktie voor snelheidsverloop";
LOCATE 29, 1: PRINT "Indien niet o.k., druk de N toets";
' wacht-lus:
Kbt$ = ""
WHILE Kbt$ = "": Kbt$ = INKEY$: WEND
IF Kbt$ = "N" OR Kbt$ = "n" THEN GOTO btfagain
CLS
END SUB
SUB betai (K5$, bpiA, bpiB)
' hier worden de twee parameters voor de bepaling van de beta-funktie voor het oppervlakte -en dus amplitude- verloop gevraagd en getest. Wanneer als parameters 0,1 of 1, 0 wordt opgegeven dan krijgen we stijgende, respektievelijk dalende zaagtandkurves. Een lineair verloop dus.
btagain:
CLS: LOCATE 27, 1 : INPUT " Geef eerste parameter ? "; bpiA
LOCATE 28, 1: INPUT " Geef tweede parameter ? "; bpiB
' Filter op onaanvaardbare parameter-waarden:
IF bpiA + bpiB <= 0 THEN BEEP: GOTO btagain
IF bpiA < 0 OR bpiB < 0 THEN BEEP: GOTO btagain
IF bpiA + bpiB > 10 THEN BEEP: GOTO btagain
' Normalizatie-konstante voor de amplitudes met beta-funkties:
betakon = ((bpiA ^ bpiA) * (bpiB ^ bpiB)) / ((bpiA + bpiB) ^ (bpiA + bpiB))
Cold = 0
' Plot nu het verloop van de funktie op het scherm:
FOR counter = 1 TO 640
Cnew = ((counter / 640) ^ bpiA) * ((1 - (counter / 640)) ^ bpiB)
Cnew = (Cnew / betakon) * 300
LINE (counter, Cold)-(counter + 1, Cnew)
Cold = Cnew
NEXT counter
LOCATE 25, 1: PRINT "Beta-funktie voor oppervlakteverloop";
LOCATE 29, 1: PRINT "Indien niet o.k., druk de N toets";
' wacht-lus:
Kbt$ = ""
WHILE Kbt$ = "": Kbt$ = INKEY$: WEND
IF Kbt$ = "N" OR Kbt$ = "n" THEN GOTO btagain
CLS
END SUB
De hier gedemonstreerde funkties kunnen bij het algoritmisch komponeren zowat overal worden gebruikt waar we nood hebben aan een globale mogelijkheid om een wenselijk verloop van een muzikale parameter te implementeren. De meest triviale toepassing is, beta-funkties te gebruiken voor het bepalen van het amplitudeverloop in de tijd van afzonderlijke klanken en geluiden. De mogelijkheden kunnen echter uitgebreid worden door de kurves toe te passen op het globaal verloop van een reeks muzikale gebeurtenissen (parameters luidheid, intervallen, metrum, positie) in een tijdsinterval in de grootte-orde van de perceptieve eenheden eigen aan muziek en spraak: ca. 3".
Ze zijn veel eenvoudiger dan een bepaling via stochastische funkties (zie verder) en/of neurale netwerken.
Volledige algoritmische kompositieprogrammas waarin extensief van beta- funkties gebruik wordt gemaakt zijn o.m. mijn eigen BETAKOM programma, dat aan de bazis ligt van komposities zoals 'BetaPi' en 'Summer'94'. Beta funkties behoren tot de standaard bibliotheek van het door ontwikkelde kompositie programma <GMT>, De source kode is beschibaar op de site van Stichting Logos.
Ook Joachim Brackx en Kristof Lauwers pastten deze funkties toe in enkele van hun werkstukken.
Filedate: 931204/950508/-L1112 /2017-07-24
<Vorig hoofdstuk> (Sinus funktie)
<Volgend hoofstuk (Gauss funktie)
Naar homepage dr.Godfried-Willem RAES