Karplus-Strong synthese

Zodra je een input koppelt aan de feedback-delaylijn, verdwijnt het typerende, door K. en S. zo gekoesterde snaarpluk-effect volledig en praat je over een totaal ander effect (dat op zich leuke toepassingen heeft)
Ik zie niet hoe het hele KS snaarpluk-effect verdwijnt als je gewoon de stappen volgt zoals het hoort als je KS gaat gebruiken, en daar hoort de "burst" of Exciter bij..

Al heb je gelijk hoor, zo staat het idd overal beschreven, niet als "input" maar dat de "excitation" een "initial state" is.
Ja, ok, leuk, maar je kan toch moeilijk ontkennen dat je witte ruis als bron zou gebruiken? of ontkennen dat je uberhaupt een bron gebruikt om KS geluid te laten maken? Al ligt het buiten de beschrijving van het model.. prima.

Dan zie ik nog steeds niet hoe het snaarpluk-effect zou verdwijnen als er slechts een spraakverwarring is.
 
Laatst gewijzigd:
Patat Met:
Als de begin waarde 0 is (voordat er geluid is geproduceerd), hoe krijg je dan het KS algorithme aan de gang?

Waveguide7:
Zodra je een input koppelt aan de feedback-delaylijn, verdwijnt het typerende, door K. en S. zo gekoesterde snaarpluk-effect volledig en praat je over een totaal ander effect (dat op zich leuke toepassingen heeft)

Sander02:
Ik zie niet hoe het hele KS snaarpluk-effect verdwijnt als je gewoon de stappen volgt zoals het hoort als je KS gaat gebruiken, en daar hoort de "burst" of Exciter bij..
"de stappen volgt zoals het hoort", dat is dus doen wat Karplus en Strong deden, nl. EENMALIG de feedback-delaylijn vullen met samples, VOORAFGAAND aan het eigenlijke snaarplukproces van rondjes draaien door de feedback-delaylijn en daarbij steeds "langs AF gaan" (filteren).
Alleen op die manier kan het snaarpluk-effect optreden, d.w.z. de frequentie-afhankelijke demping van de boventonen, zodat de toon geleidelijk doffer wordt zoals bij een getokkelde snaar.
Dat eenmalig vullen staat bekend als "voldoen aan de beginconditie". Elk trillingssysteem (dus elk filter, elke delaylijn, en dus ook KS) verkeert op het starttijdstip in een bepaalde toestand. Dat hoeft niet perse de de nul-toestand (evenwichtstoestand) te zijn: als je gaat schommelen, beweeg je, stukje achteruit lopend, de schommel een eindje uit de evenwichtstoestand en start te trillingsbeweging door je voeten van de grond te halen. Zo is het ook met snaarpluk. Je geeft het systeem een eenmalige zet door de feedback-delaylijn met samples te vullen en laat 't verder aan "de krachten van de natuur" over. Dan krijg je die karakteristieke snaarplukdemping die vanzelf na een tijdje eindigt in stilte, zoals een schommel weer stil gaat hangen als je na de afzet niks meer doet.

Dat vullen van de delaylijn wordt soms de "burst" genoemd, soms "exciter", maar daar ligt het begin van mogelijke spraakverwarring, want in de filtertheorie wordt het inputsignaal vaak de excitatie genoemd. En daaronder wordt ook en vooral begrepen: het signaal dat het systeem in gang houdt NA tijdstip nul. Dus hier is het oppassen geblazen. Bij pure KS kan die burst uitsluitend bestaan uit realiseren van de begiconditie, dus het eenmalig vullen van de delaylijn. Het tijdstip nul is, wat KS betreft, hetzelfde moment als waarop in het casino klinkt: "rien ne va plus".

Sander02:
Ja, ok, leuk, maar je kan toch moeilijk ontkennen dat je witte ruis als bron zou gebruiken? of ontkennen dat je uberhaupt een bron gebruikt om KS geluid te laten maken? Al ligt het buiten de beschrijving van het model.. prima.
Dan zie ik nog steeds niet hoe het snaarpluk-effect zou verdwijnen als er slechts een spraakverwarring is.

Witte ruis is juist precies wat Karplus en Strong zelf gebruikten! Alleen: het gaat dan om slechts een kort fragment witte ruis, nl. precies zoveel ruissamples als passen in de feedback-delaylijn! Daarmee hebben ze dan voldaan aan de beginconditie van snaarpluk en kunnen ze de toon opstarten. Vandaar dat het woord "snaarpluk" ook zo geschikt is om dat te karakteriseren: plukken = EENMALIG de snaar uit z'n evenwichts toestand en dan loslaten; de rest doet de snaar zelf. De pluk is: voldoen aan de beginconditie.

De spraakverwarring is m.i. ontstaan doordat men op modulaire systemen probeert KS na te doen. Aangezien die systemen voor het overgrote deel niet wetenschappelijk georienteerd zijn, hebben ze een probleem om het begrip "beginconditie" te implementeren en moeten ze die "van buiten af", dus via een omweggetje realiseren door een soort hold- of afknijp-excitatiefunctie te bouwen die maar heel kort een geluidsfragmentje een "burst" (meestal ruis inderdaad) doorlaat en daarna alleen maar stilte. Dat kun je zien als een open raam waardoor een kort geluidje het systeem kan betreden gevolgd door een oneindig lange stilte. Fysiek gezien blijft het raam dan open en dat is natuurlijk heel iets anders dan het hermetisch gesloten systeem dat KS per definitie is.

Natuurlijk kun je zeggen dat alleen het resulaat telt, maar je creëert ongewild een bron van verwarring, want je zit nu opgescheept met het probleem dat je de gebruikers van jouw modulaire systeem moet gaan vertellen dat Karplus-Strong zoiets als een inputsignaal kent, wat eenvoudig niet waar is! Karplus kent slechts een beginconditie: de ruispluk, of mijn part zaagpluk of wat voor pluk dan ook.

Ik wil nog maar zwijgen over de problemen die ontstaan wannneer je, binnen zo'n modulaire opzet, een filter inbouwt in de feedback-delijn dat niet nader gespecificeerd is dan als "low pass". Wat low pass? Er bestaan oneindig veel low pass filters. En er bestaat precies maar één low pass filter dat de werking van KS realiseert en dat is het boven al genoemde 1ste orde FIR-filter, met beide filtercoëfficiënten gelijk aan elkaar, en hun som <= 1. Ik weet niet voldoende van modulaire systemen om te beweren of dat wel of niet mogelijk is, modulair. Er zijn goede redenen om het laatste te vermoeden...
Maar ik hoop dat ik ongelijk heb.:)
 
Dank je wel voor de uitleg.
Nog een vraag van praktische aard:
Ik wil nog maar zwijgen over de problemen die ontstaan wannneer je, binnen zo'n modulaire opzet, een filter inbouwt in de feedback-delijn dat niet nader gespecificeerd is dan als "low pass". Wat low pass? Er bestaan oneindig veel low pass filters. En er bestaat precies maar één low pass filter dat de werking van KS realiseert en dat is het boven al genoemde 1ste orde FIR-filter, met beide filtercoëfficiënten gelijk aan elkaar, en hun som <= 1. Ik weet niet voldoende van modulaire systemen om te beweren of dat wel of niet mogelijk is, modulair. Er zijn goede redenen om het laatste te vermoeden...
Maar ik hoop dat ik ongelijk heb.:)

Wat veranderd er als je het filter veranderd van het genoemde 1e orde FIR filter naar een 4 pool transistor ladder filter. Behalve dat het geen KS synthese meer is en ervan uitgaande dat de delay lijn verder perfect is?
 
Nog een vraag van praktische aard: Wat veranderd er als je het filter veranderd van het genoemde 1e orde FIR filter naar een 4 pool transistor ladder filter. Behalve dat het geen KS synthese meer is en ervan uitgaande dat de delay lijn verder perfect is?



4 pool transistor ladder filter:
Dat er transistors in zitten is, gezien vanuit de theorie van filtersystemen, niet wezenlijk.
Ook niet dat het een ladder structuur heeft, want die kun je altijd omrekenen naar een canonieke filterstructuur.
Wat wel wezenlijk is, is dat het een all pole systeem is: dus een filter met een oneindig lange uitklinktijd, mogelijk twee resonanties en, wat het allerbelangrijkste is in dit geval, een niet-lineair fasegedrag. Dat laatste betekent voor toepassing in een feedbacklijn dat je altijd dispersie krijgt (zie eerdere post). Hoe sterk die dispersie is hangt af van de Q's van het filter (dat kunnen er 1 of 2 zijn).

Alleen wanneer de fasekarakteristiek van een filter lineair is, gebeurt dat niet en krijg je zuiver harmonische tonen. Vandaar dat KS dat FIR-filter heeft; dat is de enige manier waarop je lineair fasegedrag kunt afdwingen (onder bepaalde voorwaarden voor de filtercoefficienten, zoals genoemd in vorige post).

Je kunt een 4-polig systeem instellen als low pass, dus met "resonantie 0 Hz". Ik moet nakijken wat er dan met de fase gebeurt en hoe dat precies uitpakt in een feedback-circuit. Maar dispersie krijg je altijd.

Als het om leuk freaken gaat, lijkt me de instelling met reso's > 0 Hz natuurlijk veel interessanter. In principe kun je dan, naast de dispersieve, snel dempende boventonen, twee dominerende, langzamer uitdempende tonen krijgen ten gevolge van die 2 reso-freq's Ik ga daar eens mee aan de slag. Kan even duren.

Tot slot: een polig filter is van zichzelf een feedbacksysteem. Stop je dat in een feedback-delaylijn, dan krijg je feedback binnen feedback. Wil je daar iets beheersbaars interessants mee doen, dan moet je filters gaan constueren met een heel precies fasegedrag.
En dan begint Wout weer over die gitaar van hem, dus laat maar zitten...:D
 
...'precies zoveel ruissamples als passen in de feedback-delaylijn!'...
Een goede uitleg WaveGuide7... hoewel die toch weer nieuwe vragen oproept (maar hmm, fifo en dus => Patat Met)

Wat gebeurt er bij slechts één sample (1 getal dus) of wat indien half gevuld ?
M.a.w. zijn die verhoudingen van 'leeg/gevuld' betekenend, en zo ja voor wat ?
Ik weet niet voldoende van modulaire systemen om te beweren of dat wel of niet mogelijk is, modulair. Er zijn goede redenen om het laatste te vermoeden...
Is dat geen spijtige zaak ... jij bezit n.m.i. de skills voor een master in Reaktor, PD of Nord Modular KS, maar ja ... wiskunde ... het klinkt zo ...
 
pulsrespons

pulsrespons

Een enkele sample geeft als resultaat een perfecte KS-tooon. Want wat KS doet, is het spectrum van het signaal dat je als beginconditie in de feedback-delaylijn hebt gezet, steeds maar weer door dat 1ste-orde FIR-filterje halen. Daarbij zakt het spectrum aan de hoge kant steeds iets meer in dan aan de lage.

De beste beginconditie is een signaal met een constant spectrum, dus een spectrum waarvan de contour een horizontale lijn is: alle boventonen zijn dan precies even hard. Er bestaan twee signalen die zo'n constante spectrumcontour hebben:

(1) witte ruis (het woord "wit" verwijst naar het constant-zijn van het spectrum van wit licht). N.B. een ruis-fragment heeft nooit een precies wit spectrum, het is "vaal-wit". Hoe langer het fragment duurt des te witter de ruis wordt; alleen oneindig lang voortklinkende ruis is helemaal wit. Dit is voor KS een heel mooie eigenschap want elke snaarpluktoon die je aanstuurt met ruis klinkt daardoor weer anders (tenzij je natuurlijk steeds een kopie maakt van een en hetzelfde fragment en daarmee de beginconditie maakt).

(2) de puls (1 sample gevolgd door stilte). Een puls heeft dus ook een "wit" spectrum.

Vanwege die bijzondere spectrumeigenschap is de puls een van de belangrijkste signalen voor het testen van een filter of ander effect, zoals snaarpluk. De reactie die een systeem geeft op een puls kun je beschouwen als de "handtekening" van dat systeem. Die handtekening heet de pulsrespons, een van de kernbegrippen van de signaalverwerking.

Met onderstaande code maak je een snaarpluktoon met beginconditie 'puls'.
 

Attachments

  • Preset KarplusPuls.txt
    550 bytes · Bekeken: 140
Dit is voor KS een heel mooie eigenschap want elke snaarpluktoon die je aanstuurt met ruis klinkt daardoor weer anders (tenzij je natuurlijk steeds een kopie maakt van een en hetzelfde fragment en daarmee de beginconditie maakt).

Je bent uiteindelijk bezig met een model van de werkelijkheid, is witte ruis dan ook wat de realiteit het dichtste benaderd (in een geplukt snaarmodel)? Ik vraag me dus af: wat van het tokkelen simuleert de impuls eigenlijk precies? Is het de snaar die langs je vinger glijdt, of is het juist het stuk dat een snaar aflegt vanaf het moment dat je hem loslaat tot het midden ? Of nog weer iets anders? Ben benieuwd :)
 
Je bent uiteindelijk bezig met een model van de werkelijkheid, is witte ruis dan ook wat de realiteit het dichtste benaderd (in een geplukt snaarmodel)? Ik vraag me dus af: wat van het tokkelen simuleert de impuls eigenlijk precies? Is het de snaar die langs je vinger glijdt, of is het juist het stuk dat een snaar aflegt vanaf het moment dat je hem loslaat tot het midden ? Of nog weer iets anders? Ben benieuwd :)

Je kunt KS een model van de werkelijkheid noemen ja. Maar in hoeverre? Hoe realistisch is KS? Het mooie van KS is het verloop van helder naar dof van de klankkleur, op een manier die doet denken aan het geluid van een getokkelde snaar. Dat is het realisme van snaarpluk en daar eindigt het ook mee. Natuurlijk is KS die je aanstuurt met beginconditie ruis of met beginconditie puls geen realistisch model van een snaar. De klank van een echte, getokkelde snaar hangt af van de plaats waar je de snaar aantokkelt. Elke plaats geeft weer een iets ander tijssignaal. Wil je KS realistischer maken, dan kun je, i.p.v. witte ruis, één periode van zo'n tijdsignaal gebruiken als beginconditie.

Vraag is dan natuurlijk: hoe kom ik aan het tijdsignaal van een snaar die bijv. precies op 1/7 van de snaarlengte is aangetokkeld?

Het meest praktische antwoord is een waveguide. Daarbij kun je direct een tokkelpunt (en, in geval van electr. gitaar, een pickup-punt) aanwijzen. Met de waveguide wek je dan de tijdgolf op die je vervolgens in KS gebruikt als beginconditie.
Maar dat laatste is dan natuurlijk erg omslachtig en ook overbodig, want als je eenmaal over een waveguide beschikt dan kun je daar heel gemakkelijk dat 1ste-orde FIR-filtertje dat KS zo beroemd heeft gemaakt inbouwen (zoals al gezegd in post #48.) Dan kun je al echt spreken van Physical Modelling. Want, let wel, KS is nou eenmaal GEEN Phys Mod, juist omdat in het KS-model de ruimtelijke dimensies ontbreken.
 
[Maar dat laatste is dan natuurlijk erg omslachtig en ook overbodig, want als je eenmaal over een waveguide beschikt dan kun je daar heel gemakkelijk dat 1ste-orde FIR-filtertje dat KS zo beroemd heeft gemaakt inbouwen (zoals al gezegd in post #48.) Dan kun je al echt spreken van Physical Modelling. Want, let wel, KS is nou eenmaal GEEN Phys Mod, juist omdat in het KS-model de ruimtelijke dimensies ontbreken. ]

En zoals ik al aangaf, ben ik dit net aan het onderzoeken met de G2. En mn resultaten beginnen spanned te worden...mischien wel stout. Reaktor heeft in deze wel wat meer mogelijkheden.
Erg interessant hier mee te spelen/onderzoeken.
 
...(1) witte ruis ... Hoe langer het fragment duurt des te witter de ruis wordt; alleen oneindig lang voortklinkende ruis is helemaal wit.
Nog effe over ruis. Mijn ervaring is dat witte ruis met diverse DSP hardware/software toch flink anders kan klinken. Theoretisch zou dat niet mogen kloppen (afgezien van de hardware-weergave) maar ik vraag me af of dit niet gelegen is aan het al of niet 'meerstemmig' zijn van het aantal ruisbronnen. Het lijkt me iets dat enkel auditief kan vastgesteld worden, of toch niet ?
Allicht met meer bronnen kom je toch ook dichter bij jou 'lang voortklinkende ruis', niet ?

P.s. Die teksten geven weinig verduidelijking en 'ww' is auditief lastig werken met enkel 'save als wav'.
 
als je eenmaal over een waveguide beschikt dan kun je daar heel gemakkelijk dat 1ste-orde FIR-filtertje dat KS zo beroemd heeft gemaakt inbouwen (zoals al gezegd in post #48.) Dan kun je al echt spreken van Physical Modelling. Want, let wel, KS is nou eenmaal GEEN Phys Mod, juist omdat in het KS-model de ruimtelijke dimensies ontbreken.

Helaas snap ik niet hoe het FIR filter van Max werkt ( buffir~ op basis van een buffer :? ) want ik heb nu wel eens zin om een keer een écht KS model op te zetten

Of zijn het gewoon "n" delays in serie met dezelfde delaytijd met een eigen versterkertje, zo afgesteld dat ze samen nooit groter dan 1 (100% feedback) worden ?

Het blijft toch interessante materie 8D
 

Attachments

  • 800px-FIR_Filter.svg.png
    800px-FIR_Filter.svg.png
    19 KB · Bekeken: 127
Laatst gewijzigd:
loveyourjunos:
Of zijn het gewoon "n" delays in serie met dezelfde delaytijd met een eigen versterkertje, zo afgesteld dat ze samen nooit groter dan 1 (100% feedback) worden ?
Inderdaad. Zoals in het diagram dat je erbij deed. Wil je daar een 1ste-orde FIR van maken dan hoef je alleen maar alle delays, op de eerste na, weg te halen. Je houdt dan een circuit over waarin nog maar twee vermenigvuldigers bestaan (in de figuur: b0 en b1) beiden zijn gelijk aan 0,5. Maar je kunt ze ook ongelijk maken, maar wel zo dat b0+b1 <= 1. Als ze ongelijk zijn is de fase niet meer lineair en treedt er dispersie op; maar aangezien de fase tot 10 kHz bijna lineair is, is dat geen bezwaar. Naarmate b0 en b1 meer van elkaar verschillen verloopt de demping van de hoge frequenties geleidelijker en langzamer t.o.v. de lage.
Audiocollage:
Nog effe over ruis. Mijn ervaring is dat witte ruis met diverse DSP hardware/software toch flink anders kan klinken. Theoretisch zou dat niet mogen kloppen (afgezien van de hardware-weergave) maar ik vraag me af of dit niet gelegen is aan het al of niet 'meerstemmig' zijn van het aantal ruisbronnen. Het lijkt me iets dat enkel auditief kan vastgesteld worden, of toch niet ?
Je kunt de witheid van ruis testen met Ww's spectrum analyzer: activeer 'Gem'. De bibberige oranje lijn wordt steeds strakker. Als hij daarbij volkomen horizontaal loopt, dan heb je echte witte ruis. Zit er ergens een knik, bult of helling, dan het je gekleurde ruis en hoor je verschillen. Kortom de ultieme test voor de "randomness" van ruis is dat spectraalplaatje!

Audiocollage:
Allicht met meer bronnen kom je toch ook dichter bij jou 'lang voortklinkende ruis', niet ?

Als je meerdere bronnen tegelijk gebruikt en mixt, doe je hetzelfde als met meerdere dobbelstenen tegelijk gooien. Wat er dan verandert is de kansverdeling: de ruis is dan niet uniform meer, maar wordt steeds "gaussischer" naarmate je meer bronnen mixt: de gemiddelde waarde van de randomwaarden zal veel vaker voorkomen. Dat betekent ook dat je met gaussische ruis al veel sneller de bibberlijn strakker ziet worden. Dus je hebt gelijk dat je door meerdere witte-ruisbronnen te mixen al bij een korter fragment een hogere witheid bereikt dan bij ongemixte.

De enige manier om ruis te krijgen die NIET wit is, is de witte ruis door een filter halen! En dat is precies wat KS onophoudelijk doet, zodat de aanvankelijk witte ruis geleidelijk eerst steeds rossiger, dan roder en bruiner en na oneindig lange tijd volledig op zwart te gaan (behalve de 0 Hz-component (DC-component), die blijft onaangetast door KS en wordt nooit zwakker.)
 
Laatst gewijzigd:
@Roland ik heb het over al of niet N x random.
Bovendien is dan ook van belang of elke random een ander startpunt krijgt of niet.
M.a.w. is N x random van één G2 o.i.d. idem aan 1 x random van N x G2.
Ik hoop dat dit duidelijk is.

Inderdaad moet je een ruisgenerator resetten om te voorkomen dat steeds dezelfde randomreeks ontstaat. (In Ww kun je de randomgenerator resetten door 'Startgetal Toevalsgenerator' op nul te zetten.)
 
Inderdaad moet je een ruisgenerator resetten om te voorkomen dat steeds dezelfde randomreeks ontstaat. (In Ww kun je de randomgenerator resetten door 'Startgetal Toevalsgenerator' op nul te zetten.)
Wat ik in deze raar vind, is waarom men digitale ruis steeds met randomtabellen tracht op te wekken, daar dit in analoge elektronica simpelweg met een 'slechte diode of transistor' kan. Zo één slechte diode of transistor in zo'n DSP chip met eenvoudige AD bouwen, lijkt me veel makkelijker, goedkoper en bovendien een kwalitatief betere ruis op te brengen dan zo'n tabel. Dat gebeurt blijkbaar niet, weet iemand daar de reden voor ?
(Zo'n tabel neemt toch flink wat plaats in het geheugen, wil ze goede ruis opleveren, dus...)

@WaveGuide7 thx, op de link hieronder vind je de Reaktor Core Manual.
Wat zegt de indextabel (vnl. vanaf Appendix F.) jou daarvan qua mogelijkheden om je KS mee te onderzoeken ?
http://www.google.be/url?sa=t&rct=j&q=reaktor%20core%20manual&source=web&cd=1&ved=0CCIQFjAA&url=http%3A%2F%2Fwww.native-instruments.com%2Ffileadmin%2Fredaktion_upload%2Fpdf%2FNI_REAKTOR5_Core_Manual_EN.pdf&ei=xW4rT5KRN8yWOvPAkYAO&usg=AFQjCNEMxgTES3DChCDGcFD-LFH-cOb-xw
 
Wat ik in deze raar vind, is waarom men digitale ruis steeds met randomtabellen tracht op te wekken

Software ruis wordt sowieso nooit gemaakt met tabellen, maar berekend met een simpele functie (zie bijv. http://en.wikipedia.org/wiki/Random_number_generation#Computational_methods).

Zo één slechte diode of transistor in zo'n DSP chip met eenvoudige AD bouwen

AD is niet nodig, je kunt gewoon een comparator gebruiken om een bitstream te maken en die dan bijvoorbeeld met 16x de sample klok inlezen om 16-bit samples te krijgen.

De reden dat het niet gebeurt is overigens omdat "slechte" diodes en transistors onvoorspelbaar zijn. Een goede ruistransistor vind je alleen door tientallen exemplaren te testen tot je de beste hebt gevonden. Niet echt een pretje bij massaproductie. Sowieso is het geen optie voor VSTi's die afhankelijk zijn van de hardware van de PC.

High end servers gebruiken overigens daadwerkelijk hardware ruis voor hun random number generators.
 
Inderdaad. Zoals in het diagram dat je erbij deed. Wil je daar een 1ste-orde FIR van maken dan hoef je alleen maar alle delays, op de eerste na, weg te halen. Je houdt dan een circuit over waarin nog maar twee vermenigvuldigers bestaan (in de figuur: b0 en b1) beiden zijn gelijk aan 0,5. Maar je kunt ze ook ongelijk maken, maar wel zo dat b0+b1 <= 1. Als ze ongelijk zijn is de fase niet meer lineair en treedt er dispersie op; maar aangezien de fase tot 10 kHz bijna lineair is, is dat geen bezwaar. Naarmate b0 en b1 meer van elkaar verschillen verloopt de demping van de hoge frequenties geleidelijker en langzamer t.o.v. de lage.

Cool! Ik ga er mee aan de slag, bedankt voor deze toelichting!
 
Back
Top