WaveWizard

FDN(5) Priemgetallengenerator

FDN(5) Priemgetallengenerator

Priemgetallen doen goede diensten in al die situaties waarin je zo veel mogelijk wilt voorkomen dat er vaste patronen, "ritmes" ontstaan. Die doen zich bijvoorbeeld voor als de delays in een FDN lengten hebben die veelvouden van elkaar bevatten; dat leidt tot "ringing": een goedkoop, metaal-achtige galm die klinkt als een ouderwetse galmveer unit.

Met de nieuwe versie van WaveWizard kun je priemgetallen vinden binnen een bepaald interval. Als je bijvoorbeeld alle priemgetallen tussen 2000 en 2050 nodig hebt, dan kan dat met de volgende code, die de priemgetallen niet alleen berekent en opslaat in een buffer maar ook print in Memo:

Code:
! Bereken alle priemgetallen tussen 2000 en 2050
Priemgetallen
  buffer F?[?]   F1[0]
  interval A;B   2000; 2050
!
Buffergetallen in tekstvorm
  Vanaf Buffer[index]           F1[0]
  Aantal Buffers (kolommen)     1
  Aantal regels                 6
  aantal cijfers achter komma   0
In Memo verschijnt:
Code:
0  |  2003   
1  |  2011   
2  |  2017   
3  |  2027   
4  |  2029   
5  |  2039

De priemgetallengenerator speelt dus een zeer belangrijke rol in een preset waarmee je het FDN-circuit een realistisch klinkende galm wilt laten produceren. Een code-voorbeeld van zo'n preset gaf ik al eerder (https://www.synthforum.nl/forums/showpost.php?p=1539763&postcount=268).
Ik kom daar nog op terug.
 
WaveGuide, werk jij ook wel met warped FIR?

Mag warped IIR ook? Een van de vele slapende functies in WW is een Frequency Warping filter. Daarmee kun je formanten van een IIR-filter verschuiven. Dat is met name interessant als aanvulling op een LPC-vocoder. Muzikaal toegepast door Paul Lansky.
 
In mijn boek heb ik verschillende voorbeelden. Maar die vallen onder analoge techniek en zonder de feed forward(net erin bijgevoegd). Wil nu mijn digitale filters verder uitdiepen.
Wanneer je interesse hebt mail ik deze graag privé. Anderen weten hoe ze aan mijn boek kunnen komen na die lange lijst in de Laboratory of Patches draad.
Illustrated Compendium of Modular Synthesis.
Mischien begrijp je deze ambiphonic, uh ambivalente gevoelens jegens hier wel.
Ik kwam ver hiermee door de pseudo-stereo patches nogmaals te bekijken. De phasebrato was ook een gevolg hiervan. Daarna was het een kwestie van de Crosstalk laten verdwijnen d.m.v. fase, filtering en terugkoppeling.
 
Laatst gewijzigd:
FDN(6) loopfilters

FDN(6) loopfilters

Hieronder een plaatje van een FDN 2X2 met loopfilters.
De galm van een ruimte kan "warm" klinken of "kil". In een "warme" ruimte worden de hoge tonen veel sterker gedempt dan de lage tonen. Bijvoorbeeld baksteen klinkt doffer, warmer dan beton, omdat bij bakstenen wanden de hoge tonen sterker worden gedempt dan bij beton.

Om die klankkleurdimensie aan FDN toe te voegen hebben alle kanalen van het netwerk een eigen laagdoorlaatfilter, binnen de loop.

De loopfilters stel je in d.m.v. twee getallen, g en h, per filter. Een voorbeeld vind je in de bijlage van #268 (https://www.synthforum.nl/forums/attachment.php?attachmentid=81971&d=1346069879)

De doorgewinterde SF-lezer zal een zeer bekend klanksynthese-algoritme herkennen in het plaatje, hieronder, van een FDN 2X2 met loopfilters, als je één van de twee delays met bijbehorend loopfilter zou verwijderen... Je houdt dan één loop met ingebouwd LP-filter over... ;)
 

Attachments

  • Galm-circuit.jpg
    Galm-circuit.jpg
    40,4 KB · Bekeken: 60
directe convolutie met pulsresponsies concertzaal Pori, Finland

directe convolutie met pulsresponsies concertzaal Pori, Finland

Hoe klinkt een willekeurig synth-geluid als het een instrument zou zijn dat op een precies omschreven locatie op het podium zou staan van Finlands mooiste concertzaal (in de stad Pori) en als jijzelf in de zaal zou zitten op rij 7 stoel 6, rechts van het midden? Of op rij 3, stoel 4 links van 't midden? Of op rij 20, stoel 8 rechts?

op http://www.acoustics.hut.fi/projects/poririrs/wavs/binaural.zip vind je 24-bits wav's van een aantal (stereo-)pulsresponsies, gemeten tussen verschillende plaatsen van geluidsbronnen op podium en dummy-head registraties in de zaal.

Voer met de preset van bericht #243 (https://www.synthforum.nl/forums/showpost.php?p=1515014&postcount=243) directe convoluties uit van het synth-geluid met de betreffende pulsresponsies (die opgenomen zijn met een "dummy head", kunsthoofd, dus aparte responsies voor linker en rechteroor).
Voor een geluidsfragment van 100 seconden staat WaveWizard ruim vier uur te rekenen op 1400 miljard(!) optellingen en vermenigvuldigingen, waarmee 4 pulsresponsies van elk 1,8 seconden (86.400 samples) worden verwerkt: stereosignalen voor twee verschillende geluidsbronposities op het podium. Het resultaat moet je natuurlijk horen via koptelefoon en klinkt zeer overtuigend en realistisch. Als de muziek begint en je sluit je ogen, dan beweeg je onwillekeurig je hoofd ietsje naar rechts, omdat het geluid iets rechts van het midden klinkt. Een paar seconden later gaat je hoofd iets naar links, als ook een tweede synth inzet.
Dit is de beste kunstmatige galm die ik ooit heb gehoord: ruimtelijk, warm, je zit echt in die zaal! Maar natuurlijk zeer onpraktisch vanwege die debiel lange rekentijden. En je MOET met koptelefoon luisteren, want een dummy-head opname geeft pure oorsignalen: het rechter kanaal mag UITSLUITEND door je rechter oor gehoord worden, het linker UITSLUITEND door het linker oor. Speel je af via de boxen dan krijg je een soort akoestische kortsluiting die het effect grotendeels om zeep helpt.
 

Attachments

  • concertzaal Pori Finland.jpg
    concertzaal Pori Finland.jpg
    48,8 KB · Bekeken: 60
  • concertzaal Pori Finland plattegrond .jpg
    concertzaal Pori Finland plattegrond .jpg
    99,9 KB · Bekeken: 63
Werkelijk fascinerend WaveGuide7 !
Alleen klinkt die zaal (nu nog) wel leeg. ;)

Vraagje : die 4 pulsresponsies laat je die multithreaded berekenen of niet ?
Ik weet niet zeker of dit zo'n grootte snelheidswinst zou toevoegen.


Speel je af via de boxen dan krijg je een soort akoestische kortsluiting die het effect grotendeels om zeep helpt.
De juiste links-rechts-positionering is wat minder goed vast te stellen, maar de ruimtelijkheid blijft toch verder goed hoorbaar.
 
Als je de wav's van de pulsresponsies afzonderlijk beluistert valt het wel mee ja, maar wanneer je meerdere synthklanken als geluidsbronnen op verschillende plaatsen op het podium zet - en dus convolveert met meerdere stereo-pulsrsesponsies tegelijk - wordt het reflectiepatroon veel subtieler en kritischer.

Voor de berekening ben ik uitgegaan van de preset van #243 en daar gewoon nog enkele aanroepen van de FIR-functie aan toegevoegd. WaveWizard gebruikt altijd maar één thread. Het vier uur durende rekenproces loopt natuurlijk op de achtergrond; je kunt ondertussen gewoon internetten of tekstverwerken.
Maar ik had WaveWizard ook gelijktijdig meerdere keren kunnen opstarten en elk één responsie laten uitrekenen. Op mijn nieuwe laptop met quadprocessor, gebruikt elke opstart zo'n 25% van de rekentijd. Dus het had wellicht ook 4 keer zo snel gekund, dus in ongeveer één uur - nog steeds heeeel lang.
 
... WaveWizard gebruikt altijd maar één thread. Het vier uur durende rekenproces loopt natuurlijk op de achtergrond; je kunt ondertussen gewoon internetten of tekstverwerken.
Maar ik had WaveWizard ook gelijktijdig meerdere keren kunnen opstarten en elk één responsie laten uitrekenen. Op mijn nieuwe laptop met quadprocessor, gebruikt elke opstart zo'n 25% van de rekentijd. Dus het had wellicht ook 4 keer zo snel gekund, dus in ongeveer één uur - nog steeds heeeel lang.
Mogelijk kun je voor elke pulse een thread laten werken. Die berekening kunnen blijkbaar los van elkaar gebeuren en alzo wss sneller binnen één lopende WaveWizard.
Nou ja, 't is maar een idee...
 
Inderdaad kunnen de convoluties uitstekend parallel worden berekend (trouwens ook één enkele convolutie zou je over meerdere gelijktijdige processen kunnen uitsmeren en daarmee tijd winnen). Maar directe convolutie is en blijft een zeer lange bewerking en ook al zou WaveWizard de gebruiker de mogelijkheid geven om meerdere threads tegelijk te draaien, dan nog levert dat maar een snelheidswinst op van hooguit een factor vier. Dit terwijl kunstmatige galm, zoals hierboven FDN, sneller dan realtime is en zeer hoge kwaliteit heeft.

Veel boeiender zou zijn om met een meer realistisch model te komen van de early-reflections en daarmee dan de FDN aansturen. Zulke modellen bestaan en komen zeer dicht in de buurt van directe convolutie met pulsresponsies van bestaande ruimten. Op dit moment werk ik daaraan. Later meer.
 
ruimtelijkheid van pulsresponsies concertzaal Pori opgemeten

ruimtelijkheid van pulsresponsies concertzaal Pori opgemeten

Al eerder ging het over de ruimtelijkheid van stereo-signalen en de (objectieve) maat die daarvoor bestaat (zie de links hieronder).
De correlatie is een getal tussen -1 en +1. Hoe dichter dat getal bij nul ligt, des te ruimtelijker klinkt het geluid. Van galm is bekend dat het de-correlerend, dus "verruimtelijkend", werkt. Als dat zo is dan moet dat ook te meten zijn aan de pulsresponsies van die concertzaal in Pori. Hoe je dat met WaveWizard uitrekent, is ook al besproken. Hieronder de resultaten. De pulsresponsies hebben een zeer lage waarde, zijn dus inderdaad zeer verruimtelijkend. Dat wil overigens NIET zeggen dat de resultaten van convoluties diezelfde lage waarden krijgen. Meestal zullen die veel hoger liggen. Maar als je een willekeurig monosignaal (dus met (auto)correlatie 1) convolveert met zo'n stereopulsrespons dan krijg je een stereosignaal dat ruimtelijk klinkt en een correlatiewaarde heeft van bijv. ergens tussen 0,5 - 0,8.

over correlatie:
https://www.synthforum.nl/forums/showpost.php?p=1503269&postcount=189

ruimtelijkheid van stereo opmeten:
https://www.synthforum.nl/forums/showpost.php?p=1505609&postcount=196

WaveWizard functie correlatie:
https://www.synthforum.nl/forums/showpost.php?p=1507500&postcount=203


Code:
Correlatie
  Input 1                       S1[0]
  Input 2                       S2[0]
  Lag1; Lag 2                   0; 500
  venster (smp)                 3*Fs
  Outputbuffer Corr. functie    F1[0]
  Max-waarde opslaan in F?[?]   F2[0]
 
Print F2[0]
 
Resultaten:
s3_r4_b.wav   Correlatie: -0,093
s3_r3_b.wav   Correlatie: 0,103
s3_r2_b.wav   Correlatie: 0,177
s3_r1_b.wav   Correlatie: 0,092
 
Laatst gewijzigd:
Hoi Waveguide, ik krijg bij het afspelen van een wav. file of toongenerator een foutmelding in wavewizard ?

"acces violation at adress 005C80DR in module Wavewizard .... Write of adress 00000000 ."

Werk met Windows Vista Home premium ?
 
Back
Top