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:

f= (x^a).((1-x)^b)

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:

k = ((a^a).(b^b)) / ((a+b)^(a+b))

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:

A(t)= G . ta(T-t)b N Ta+b

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.

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:

ap = ap(i).eb.s.exp(-aT)  

bp = bp(i).e-b.s.exp(-aT)

waarin:

Experimenteel vondt hij dat in klassieke muziek de waarden voor a en b dienen te zijn alsvolgt:

a = 0.00236 (+/- 0.00006)

b = 0.20 (+/-0.005)


Een software implementatie in QBX-BC7-Basic -ontleend aan het programma <HOLOSIMI> waarin menselijke muzikale motoriek wordt gesimuleerd- voerden we 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'. (cfr. listings in de klas).

Ook Joachim Brackx en Kristof Lauwers pastten deze funkties toe in enkele van hun werkstukken.


Filedate: 931204/950508/-L1112 /2004-12-06

<Index kursus>

<Vorig hoofdstuk> (Sinus funktie)

<Volgend hoofstuk (Gauss funktie)

Naar homepage dr.Godfried-Willem RAES