Muzikaal Gepiel dl. 2: Karplus–Strong Synthese

flyweight

Dank voor de pdf. Was interessant (heb 'm al even vlug door genomen).

Het verhogen van de demping (= verlagen van 0,99) leidt ertoe dat de toon korter klinkt, maar de toonkleur blijft gelijk. Het lijkt me dat bij palm mute de hogere harmonischen niet eens de kans krijgen om zich te ontwikkelen omdat die al direct bij de aanslag door de hand worden uitgedoofd.
 
Ah ja idd bij palm muting heb je dat de snaar korter en met minder hoge tonen klinkt. Of eigenlijk dempen de boven tonen sneller.
 
Bij de eerder besproken Javascript-demo lijkt het dat vooral lage tonen te lang doorklinken, dwz. ook na een nieuwe aanslag. Bij wisselend akkoord veroorzaakt dat helaas een onbedoeld flanger-effect. Ben benieuwd of dat bij PD ook zo werkt (dank voor de tip, ik kende het nog niet).
 
Bij de eerder besproken Javascript-demo lijkt het dat vooral lage tonen te lang doorklinken, dwz. ook na een nieuwe aanslag. Bij wisselend akkoord veroorzaakt dat helaas een onbedoeld flanger-effect. Ben benieuwd of dat bij PD ook zo werkt (dank voor de tip, ik kende het nog niet).

Als dat bij PD ook zo zou zijn, dan is dat in PD wel te verhelpen want zowel de expliciet aangebrachte dempingsfactor als het kantelpunt van het laagdoorlaatfilter zijn instelbaar.
 
Ik kreeg van Rutger die dit topic had gezien de volgende mail:


https://www.synthforum.nl/forum/muz...karplus–strong-synthese?p=3694035#post3694035

torp:
De theorie is: Hogere harmonischen sterven sneller af in de lucht.
Met dat gegeven zou het dus niet uitmaken hoe het geluid wordt opgewekt (door een snaar of anderszins), de demping vindt immers plaats terwijl het geluid naar de luisteraar reist.

--------------------------------------------------------------------------
Mijn reactie:

Het klopt dat in lucht de hogere harmonischen sneller uitdempen dan de lagere.
Maar het effect daarvan is verwaarloosbaar op kortere afstanden zoals bijv. in een woonkamer of studio.

Voorbeeld:

Twee sinustonen op grote afstand (50 meter):
Een sinustoon van 1000 Hz en amplitude 1 heeft op 50 meter afstand nog amplitude 0,937.
Maar een sinustoon van 4000 Hz en amplitude 1 heeft op 50 meter afstand nog slechts een amplitude 0,35.

Twee sinustonen op kleine afstand (1 meter):
Een sinustoon van 1000 Hz en amplitude 1 heeft op 1 meter afstand nog amplitude 0,9987.
Maar een sinustoon van 4000 Hz en amplitude 1 heeft op 1 meter afstand een amplitude 0,9795 en klinkt dus slechts 0,084 dB zachter dan de 1000 Hz toon. Dat is dus ver onder het kleinst waarneembare amplitudeverschil van ongeveer 1 dB.

Conclusie: op een afstand van 1 meter klinken sinustonen van 1000 en 4000 Hz die dezelfde amplitude hebben even hard.

Deze gegevens zijn berekend met formules in
https://ccrma.stanford.edu/~jos/pasp/Air_Absorption.html#42834

Ja, dat is dezelfde J.O. Smith als die van het artikel over Karplus dat ProgHead al eerder citeerde in deze draad.


mvg
Rutger Teunissen


--------------------------------------------------------------------------
mail #2
--------------------------------------------------------------------------

https://www.synthforum.nl/forum/muz...karplus–strong-synthese?p=3694313#post3694313

ProgHead:
Het verhogen van de demping (= verlagen van 0,99) leidt ertoe dat de toon korter klinkt, maar de toonkleur blijft gelijk. Het lijkt me dat bij palm mute de hogere harmonischen niet eens de kans krijgen om zich te ontwikkelen omdat die al direct bij de aanslag door de hand worden uitgedoofd.

--------------------------------------------------------------------------
Mijn reactie:
--------------------------------------------------------------------------

(1)
Ik ga altijd uit van de wiskundige beschrijving. Die van Karplus wordt gegeven in het artikel van Smith dat je linkte in post #2.

Karplus is niets anders dan een N-de orde recursieve (=feedback) differentievergelijking met twee filtergetallen A en B die meestal beide gelijk aan 0,5 worden gekozen, maar ook andere (positieve) waarden kunnen aannemen, als je er maar altijd voor zorgt dat A+B < 1 (zo niet dan wordt het systeem onstabiel en rijst de output de pan uit).

Als A niet gelijk is aan B, is de faserespons van het signaal in de feedback-lus niet lineair en treedt dispersie op, waardoor de boventoonverhoudingen niet langer perfect harmonisch zijn (net zoals bij echte snaren).

De Karplus-Strongvergelijking (die ikzelf liever aanduid met 'Snaarplukvergelijking') luidt (zie formule (1) in je gelinkte artikel van post #2):

output[n] = A*output[n-N-1] + B*output[n-N]

De waarde van het getal N hangt af van de gewenste frequentie f:
N = Fs/f (Fs is de samplingfrequentie)

De Snaarplukvergelijking heeft GEEN input, maar wel een initiërend signaal ter lengte van N samples (in de wiskunde-literatuur heet dat de N begincondities).

Naarmate A+B meer van 1 verschilt verloopt de (frequentie-afhankelijke) demping sneller.


(2)
Het palm mute effect kun je benaderen door een initiërend signaal te kiezen dat minder hoog heeft (bijv. witte ruis eerst door een Low Pass filter halen).


mvg
Rutger Teunissen (WaveGuide7)


--------------------------------------------------------------------------
mail #3
--------------------------------------------------------------------------

https://www.synthforum.nl/forum/muz...karplus–strong-synthese?p=3694366#post3694366

ProgHead:
Wat ik nog niet begrijp is waarom de trillingstijd van de opgewekte grondtoon een halve sample-tijd meer is dan de vertragingstijd van het vertragingselement in de loop. Zie hier:

https://crypto.stanford.edu/~blynn/s...lusstrong.html

Daar schiet mijn kennis van de theorie van discrete systemen tekort....

--------------------------------------------------------------------------
Mijn reactie:
--------------------------------------------------------------------------
Het gaat je dus om die formule:

Fs/(N+1/2)

Wel, je kunt Karplus-Strong (de Snaarplukvergelijking) beschouwen als een lus waar een Low Pass filtertje zit ingebouwd. De buis zorgt voor die delay van N
samples (= N*Ts seconde, met sampletijd Ts = 1/Fs). Het Low Pass filter heeft, zoals elk filter, ook een fasegedrag. In het geval van Karplus, (twee filtergetallen gelijk aan 0,5) is die fase een constante gelijk aan 1/2, dus NIET frequentie-afhankelijk. Als je nu zo'n Low Pass filter inbouwt in een lus zal voor elke frequentie, steeds een halve sampletijd extra vertraging optreden. Daarmee wordt de periode van de Snaarpluk dus vergroot met een halve sample-tijd. Dus in totaal: N+1/2.

mvg
Rutger Teunissen (WaveGuide7)

--------------------------------------------------------------------------


Dit doe ik 1 x omdat ik geen tijd heb om alles te volgen.(Buenos Aires) en ik kan geen spreekbuis voor Rutger worden.
Ik heb geen idee waarom de ban op Rutger. De antwoorden die hij gaf en geeft zijn perfect.
In de door hem opgestarte draden vind ik dat hij zich zeer correct heeft gedragen, en met veel geduld naar de mensen die het niet snapten.
Dat is mijn mening en verder zou het handig zijn om mischien nog eens virtueel om de tafel te gaan zitten. Moderators en WaveGuide7.
 
Dank, Roland en Rutger! Als ik het goed begrijp (?) speelt de reis van het geluid door lucht in dezen dus geen rol. ProgHead zei echter in post #12 dat de harmonischen van een trillende snaar door de omringende lucht worden beïnvloed.

Ben benieuwd naar het antwoord, hopelijk kan/mag/wil Rutger dat zelf uitleggen. :okdan:

(de andere antwoorden zijn voor ProgHead en gaan mij boven de pet :halleluja )
 
Bericht door een moderator:
ff verplaatst naar de juiste rubriek
 
Dank, Roland en Rutger! Als ik het goed begrijp (?) speelt de reis van het geluid door lucht in dezen dus geen rol. ProgHead zei echter in post #12 dat de harmonischen van een trillende snaar door de omringende lucht worden beïnvloed.

Ben benieuwd naar het antwoord, hopelijk kan/mag/wil Rutger dat zelf uitleggen. :okdan:

(de andere antwoorden zijn voor ProgHead en gaan mij boven de pet :halleluja )

Je moet hier een onderscheid maken tussen de reis door de lucht van het geluid en de beweging door de lucht van de snaar. De lucht hindert het bewegen van de snaar en wel des te meer wanneer de snaar heftiger beweegt. Onder meer hierdoor worden de hogere harmonischen van de snaar méér gedempt dan de lagere harmonischen. Als gezegd worden de verschillende vormen van demping van een trillende snaar uitgebreid besproken in het boek The Physics of Musical Instruments van Neville H. Fletcher en Thomas Rossing. Hoe het met de demping van het geluid bij voortplanting door de lucht zit is hierboven door Rutger/Roland al keurig uitgelegd.

Al met al lijkt het mij daarom dat dit topic, op de extra halve sample-tijd na, klaar is. Om die halve sample-tijd te begrijpen moet ik mijn kennis van DSP bijspijkeren zodat ik de uitleg kan begrijpen. In mijn volgende topic in deze reeks zal ik proberen om het door Karplus en Strong gebruikte laagdoorlaatfilter te doorgronden.
 
Als ik het goed begrijp hebben we voor een Karplus-Strong schakeling in de eenvoudigste vorm na het "aanslaan" de onderstaande situatie:

half.png
 
Zoals Rutger Teunissen (WaveGuide7) al eerder schreef gaat het hier om een differentievergelijking. Nu nog even nazoeken hoe je die vergelijking netjes oplost...
 
We moeten dus onderstaande differentievergelijking oplossen:

U[n] = 1/2 . ( U[n - (N-1)] + U[n-N] )

Omdat een algemene analytische oplossing voor alle positieve natuurlijke getallen N lastig (en wellicht zelfs onmogelijk) is bekijk ik hier maar één specifiek geval: N=5.

Dan hebben we:

U[n] = 1/2 . ( U[n - 4] + U[n-5] ) (1)

We proberen of U[n] = λ[SUP]n[/SUP] (voor λ ≠ 0) een mogelijke oplossing is. Er zou dan moeten gelden:

λ[SUP]n[/SUP] = 1/2 . ( λ[SUP]n-4[/SUP] + λ[SUP]n-5[/SUP] )
1 = 1/2 . ( λ[SUP]-4[/SUP] + λ[SUP]-5[/SUP] )
2 = λ[SUP]-4[/SUP] + λ[SUP]-5[/SUP]
2λ[SUP]5[/SUP] = λ + 1

De oplossingen hiervoor zijn:

λ[SUB]1[/SUB] = 1
λ[SUB]2[/SUB] = a - b.i
λ[SUB]3[/SUB] = a + b.i
λ[SUB]4[/SUB] = c - d.i
λ[SUB]5[/SUB] = c + d.i

(Voor de waarden van a, b. c en d zie: https://www.wolframalpha.com/input/?i=2*x^5+=+x+++1 )

We vermoeden nu dat alle oplossing van vergelijking (1) van onderstaande vorm zijn:

U[n] = A[SUB]1[/SUB]·(λ[SUB]1[/SUB])[SUP]n[/SUP] + A[SUB]2[/SUB]·(λ[SUB]2[/SUB])[SUP]n[/SUP] + A[SUB]3[/SUB]·(λ[SUB]3[/SUB])[SUP]n[/SUP] + A[SUB]4[/SUB]·(λ[SUB]4[/SUB])[SUP]n[/SUP] + A[SUB]5[/SUB]·(λ[SUB]5[/SUB])[SUP]n[/SUP]

De schakeling wordt opgestart met ruis, dat wil zeggen dat U[0] t/m U[4] willekeurige waarden in de range [-1,+1] moeten hebben. Onderstaande online gegenereerde waarden lijken me random genoeg:

U[0] = +0,8460
U[1] = -0,7754
U[2] = +0,3900
U[3] = -0,7397
U[4] = +0,6558

Dat geeft ons een stelsel van vijf vergelijkingen voor de coëfficiënten A[SUB]1[/SUB] t/m A[SUB]5 [/SUB].

0,8460 = A[SUB]1[/SUB]·(λ[SUB]1[/SUB])[SUP]0[/SUP] + A[SUB]2[/SUB]·(λ[SUB]2[/SUB])[SUP]0[/SUP] + A[SUB]3[/SUB]·(λ[SUB]3[/SUB])[SUP]0[/SUP] + A[SUB]4[/SUB]·(λ[SUB]4[/SUB])[SUP]0[/SUP] + A[SUB]5[/SUB]·(λ[SUB]5[/SUB])[SUP]0[/SUP]
-0,7754 = A[SUB]1[/SUB]·(λ[SUB]1[/SUB])[SUP]1[/SUP] + A[SUB]2[/SUB]·(λ[SUB]2[/SUB])[SUP]1[/SUP] + A[SUB]3[/SUB]·(λ[SUB]3[/SUB])[SUP]1[/SUP] + A[SUB]4[/SUB]·(λ[SUB]4[/SUB])[SUP]1[/SUP] + A[SUB]5[/SUB]·(λ[SUB]5[/SUB])[SUP]1[/SUP]
0,3900 = A[SUB]1[/SUB]·(λ[SUB]1[/SUB])[SUP]2[/SUP] + A[SUB]2[/SUB]·(λ[SUB]2[/SUB])[SUP]2[/SUP] + A[SUB]3[/SUB]·(λ[SUB]3[/SUB])[SUP]2[/SUP] + A[SUB]4[/SUB]·(λ[SUB]4[/SUB])[SUP]2[/SUP] + A[SUB]5[/SUB]·(λ[SUB]5[/SUB])[SUP]2[/SUP]
-0,7397 = A[SUB]1[/SUB]·(λ[SUB]1[/SUB])[SUP]3[/SUP] + A[SUB]2[/SUB]·(λ[SUB]2[/SUB])[SUP]3[/SUP] + A[SUB]3[/SUB]·(λ[SUB]3[/SUB])[SUP]3[/SUP] + A[SUB]4[/SUB]·(λ[SUB]4[/SUB])[SUP]3[/SUP] + A[SUB]5[/SUB]·(λ[SUB]5[/SUB])[SUP]3[/SUP]
0,6558 = A[SUB]1[/SUB]·(λ[SUB]1[/SUB])[SUP]4[/SUP] + A[SUB]2[/SUB]·(λ[SUB]2[/SUB])[SUP]4[/SUP] + A[SUB]3[/SUB]·(λ[SUB]3[/SUB])[SUP]4[/SUP] + A[SUB]4[/SUB]·(λ[SUB]4[/SUB])[SUP]4[/SUP] + A[SUB]5[/SUB]·(λ[SUB]5[/SUB])[SUP]4[/SUP]

De complexe getallen λ[SUB]1 [/SUB]t/m λ[SUB]5[/SUB] zijn bekend, dus kunnen we A[SUB]1[/SUB] t/m A[SUB]5[/SUB] uit dit stelsel vergelijkingen proberen op te lossen. Maar ik neem eerst eens effen pauze. Wordt vervolgd...
 
Het wordt al weer laat, het afronden van dit topic gaat vandaag niet meer lukken. Nog even voor de duidelijkheid, om de waarden van A1 t/m A5 te vinden moeten we onderstaande stelsel vergelijkingen oplossen:

0.8460 = A1*(1)^0 + A2*(0.16881-0.92789*i)^0 + A3*(0.16881+0.92789*i)^0 + A4*(-0.66881- 0.33885*i)^0 + A5*(-0.66881+0.33885*i)^0,

-0.7754 = A1*(1)^1 + A2*(0.16881-0.92789*i)^1 + A3*(0.16881+0.92789*i)^1 + A4*(-0.66881-0.33885*i)^1 + A5*(-0.66881+0.33885*i)^1,

0.3900 = A1*(1)^2 + A2*(0.16881-0.92789*i)^2 + A3*(0.16881+0.92789*i)^2 + A4*(-0.66881-0.33885*i)^2 + A5*(-0.66881+0.33885*i)^2,

-0.7397 = A1*(1)^3 + A2*(0.16881-0.92789*i)^3 + A3*(0.16881+0.92789*i)^3 + A4*(-0.66881-0.33885*i)^3 + A5*(-0.66881+0.33885*i)^3,

0.6558 = A1*(1)^4 + A2*(0.16881-0.92789*i)^4 + A3*(0.16881+0.92789*i)^4 + A4*(-0.66881-0.33885*i)^4 + A5*(-0.66881+0.33885*i)^4

Ik heb morgenmiddag of -avond pas weer tijd om hier mee verder te gaan. Maar als iemand anders dit probleem in de tussentijd wil oplossen dan zou ik zeggen: grijp nu uw kans! ;)
 
Back
Top