WaveWizard

Gezien vanuit modulair, vraagt het natuurlijk om een "umdenken", en dat lijkt eerst hopeloos ingewikkeld en onhandig, en je moet echt gaan nadenken en op een papiertje een formule uitwerken. Daar doe je een paar minuten over en het is wat minder direct, want je hoort nog niks. Maar hoe zou je zoiets modulair doen? Eerst 50 zaagtandgeneratoren van de plank halen? Dan 50 random-modules pakken waarmee vervolgens 50 kabels gelegd worden naar de frequentie-inputs van de toongeneratoren en dan nog eens 50 kabels naar delaylijnen en nog weer eens 50 kabels naar mixers? En stel dat je uiteindelijk vindt dat 50 zaagtanden nog niet genoeg zijn of juist teveel? Moet je nog weer meer kabels leggen of weghalen. Terwijl je datzelfde met de code-benadering doet door slechts een ander getal in te typen achter N, het aantal toongeneratoren.

Toch is er ook een belangrijke overeenkomst met modulair. Als je bij modulair een patch gaat maken, haal je een aantal modules van de plank. Dat is bij WaveWizard in principe ook zo; alleen zijn het hier geen modules, maar menu-functies die d.m.v. één muisklik een tekstblok droppen in het Commandovenster. Dus de code staat dan al klaar, met default-waarden als voorbeeld, net zoals bij modulair vaak bepaalde modules startwaarden hebben op het moment dat je ze in een patch dropt. Het eigenlijke werk bij WaveWizard is het aanpassen van die defaultwaarden, door wat andere getallen of formules in te typen.

In dit voorbeeld heb je maar één codetekstblok voor de toongenerator. Niet 50. Dat blok plaats je in een lus die 50 keer wordt doorgelopen. In de defaultwaarden van de toongenerator plaats je formuultjes met variabelen die in elke lus een update krijgen. Klaar!

Eventueel, naar smaak afkruiden door de boel te filteren. Dat filter moet soms in de lus staan en steeds een update krijgen, net zoals de toongenerator, maar in dit geval hoeft dat niet, en wordt eindproduct in één keer door een low pass gehaald.
 
kadootje

kadootje

In Sonic Core draad (https://www.synthforum.nl/forums/showpost.php?p=1623174&postcount=61) gaf Roland de pulsrespons van de SC Room module (Surround.wav). Daarmee kan WaveWizard door toepassing van de nieuwe Fast-Convolution-functie het corresponderende galm-effect perfect realiseren, en wel aanzienlijk sneller dan realtime.

Het blijft toch een van de vele wonderen van DSP, dat je de werking van audio-systemen zoals filters, delays en galm kunt vastleggen in de vorm van een geluidssignaal! Dus de werking van een apparaat uitdrukken in een "eigen-geluid". En, bovendien, dat er een wiskundige bewerking bestaat, de convolutie, waarin een willekeurig inputsignaal zodanig wordt gehusseld met dat eigengeluid dat je de werking van dat corresponderende audio-systeem perfect kunt nadoen! Dankzij Roland's post van Surround.wav mag ik mij dus de gelukkige eigenaar noemen van de Sonic Core Room Module (in standaardinstelling)! Thx man!

Hieronder de WaveWizardcode van de convolutieprocedure.
Ook de ruimelijkheid van de Sonic Core Room Module wordt gemeten d.m.v. de correlatiefunctie (zie https://www.synthforum.nl/forums/showpost.php?p=1505609&postcount=196). Die blijkt 0,44 te zijn. Bij een maximaal ruimtelijke werking hebben de beide sporen een correlatie nul. Bij een minimale werking (dus een puur mono "sleutelgat-"geluid) is de correlatie gelijk aan 1. Hoe de ruimtelijkheid is van een signaalpaar waarvan de correlatie 0,44 is, hoor je in https://www.synthforum.nl/forums/showpost.php?p=1623895&postcount=68.
 

Attachments

  • Preset galm door snelle convolutie pulsrespons.txt
    2,8 KB · Bekeken: 84
Fasinerend, wat ik al schreef in de Sonic Core Xite-1 draad!

[Het blijft toch een van de vele wonderen van DSP, dat je de werking van audio-systemen zoals filters, delays en galm kunt vastleggen in de vorm van een geluidssignaal! Dus de werking van een apparaat uitdrukken in een "eigen-geluid". En, bovendien, dat er een wiskundige bewerking bestaat, de convolutie, waarin een willekeurig inputsignaal zodanig wordt gehusseld met dat eigengeluid dat je de werking van dat corresponderende audio-systeem perfect kunt nadoen! Dankzij Roland's post van Surround.wav mag ik mij dus de gelukkige eigenaar noemen van de Sonic Core Room Module (in standaardinstelling)! Thx man!]

Graag gedaan :)
 
chorus-effect

chorus-effect

In #265 ging het over de automatische, lineaire interpolatie van twee opeenvolgende getallen in een buffer. Als mogelijke toepassing noemde ik het chorus-effect. Code en geluidsvoorbeeld vind je in #28 van de chorus-draad:
 
Nog wat galm voor je WG:

:okdan:

Wat deze voorbeelden goed illustreren is dat de pulsrespons van galm in beginsel niets anders is dan ... ruis!
En een galm-algo of een concertzaal zijn dus te beschouwen als heel specialistische randomgeneratoren.

Je kunt dan ook binnen een halve minuut een galm-apparaat bouwen door een ruisfragment te voorzien van een exponentieel dalende envelop. Klaar = pulsrespons. Daarmee convolveren en je hebt galm. Lijkt al direct ergens op.

Stereo-galm door twee afzonderlijke ruisfragmenten te pakken en een signaal met beide afzonderlijk convolveren.

Galm "opwarmen" door ruisfragment eerst door een low pass te halen. Dan verandert beton in baksteen etc.

Ik heb 't natuurlijk over de late reverb. Early reflections is een heel ander verhaal.
 
Wat deze voorbeelden goed illustreren is dat de pulsrespons van galm in beginsel niets anders is dan ... ruis!
En een galm-algo of een concertzaal zijn dus te beschouwen als heel specialistische randomgeneratoren.

QUOTE]

Ik een tijd geleden een Logic patch patch gemaakt waarbij ruis als filter diende.

Goede link Ez', bedankt!
Ook met de NMG2 wat "afgeschoederd"
 
nieuwe functie: Super-Chorus

nieuwe functie: Super-Chorus

Afgelopen week een chorus-effect gebouwd.
Hier een geluidsvoorbeeld: shockwave-explosie die zo'n twee minuten na-stormt.
Een Karplus-toon van 50 Hz gaat eerst door een Butterworth laagdoorlaatfilter en vervolgens door de chorus, die wordt aangestuurd met 50 laagfrequente randomgeneratoren, en een extreme frequentie-diepte zodat de 50-voudige output de oorspronkelijke toonsensatie van Karplus vervormt tot een schokgolf met een soort windvlagen. Het signaal wordt verruimtelijkt niet door galm, maar door de decorrelator, want het geluid heeft van zichzelf iets galmends t.g.v. het Karplus-principe.

Grote verrassing was de kracht van de decorrelator: de correlatie kan gemakkelijk worden teruggebracht tot zo'n 20%, simpelweg door betere keuze instelparameters van decorrelatiefilter. Ik kwan vorig jaar nooit veel lager dan 80%, zodat de klank niet echt ruimtelijk werd. De polen van het filter moet je gewoon vlakbij de eenheidscirkel leggen. De decorrelator bouwt eerst het filter op basis van de invoerwaarden en filtert vervolgens het inputsignaal all pass met de bedoeling om de fase zo veel mogelijk op stang te jagen - precies wat de tierelantijntjes in een 19de eeuwse concertzaal ook doen. Het aantal polen hoeft niet eens bizar groot te zijn - daardoor is het filter bovendien ook behoorlijk snel.
 

Attachments

  • Shock wave en nastorm (Karplus, chorus en decorrelatie).txt
    1,8 KB · Bekeken: 84
  • Shock wave en nastorm (Karplus, chorus en decorrelatie).mp3
    3,8 MB · Bekeken: 87
Mooi, het heeft wel iets wel van wanneer je met je onderarm de laagste 3 octaven van een piano een beuk geeft met het sustain pedaal ingedrukt :okdan:

hm, dat lijkt mij toch wel een beetje anders klinken, tenzij misschien een piano van het merk Boeing...;)

Overigens, deze piano-pedaal is prima te gebruiken als pulsrespons om snaarpluktonen mee te convolveren.
 

Attachments

  • piano resonimp met pedaal.mp3
    392,9 KB · Bekeken: 105
Waveguides in WaveWizard (1)

Waveguides in WaveWizard (1)

In WW zitten twee functies waarin waveguides worden toegepast:
(1) Animatie Snaar: voor de bestudering van waveguides en de beweging van de trillende snaar.
(2) Feedback generator: praktische functie voor klankopwekking van waveguide-gebaseerde signalen, waaronder Karplus-Strong.
Komende tijd meer aandacht voor waveguides en deze twee functies. Eerst iets over de snaar-animator.

Animatie Snaar is een interactieve animatie/simulatie van de getokkelde snaar. Doel: laten zien hoe een snaar trilt als je die tokkelt op een bepaald, instelbaar punt (Tokkelpunt, zie code hieronder) en hoe de golfvorm van het tijdsignaal eruit ziet als het "gitaarelement" zich bevindt op een bepaald, eveneens instelbaar punt onder de snaar (Opneempunt). Ook de sterkten van de trillingsmodi van de snaar worden afgebeeld, evenals het spectrum van het corresponderende tijdsignaal.
Vooral dat laatste, het spectrum van het tijdsignaal (d.w.z. het spectrum van het geluid dat de snaar produceert) is enorm interessant voor synthese-toepassingen. De spectra van blok, zaag, driehoek, puls zijn goed bekend, maar die van de snaar minder, tenminste, zo lijkt het op 't eerste gezicht! De golfvorm van een getokkelde snaar is die van een trapezium en het spectrum daarvan was een van de eerste spectra die ooit werden berekend. En wel door niemand minder dan Fourier zelf! Hij wilde het spectrum van een trapeziumgolfvorm graag kennen, om de simpele reden dat elk tokkelinstrument die golfvorm opwekt. De trapeziumgolf kun je opvatten als een benadering van een golf die in synth's juist weer heel vaak wordt toegepast: de pulsgolf bij Pulswijdtemodulatie. In feite kun je op een gitaar heel mooi pulswijdtemodulatie demonstreren! Dat doe je simpelweg door de snaar op steeds weer andere plaatsen te tokkelen! Dat dit zo is en hoe dat klinkt demonstreert de functie Animatie Snaar.

Hier de code voor Animatie Snaar:

Code:
Animatie Snaar
  Lengte snaar (40... 1000)              128
  Tokkelpunt                             0,125
  Opneempunt                             0,4
  Amplitude (< 16000)                    10000
  Filtercoefficient A1                   1
  Filtercoefficient A2                   0
  Aantal beelden                         256
  Beeld na elke ... stappen              2
  aantal beelden per seconde             20
  x-factor afb. golven                   3
  y-factor afb. golven                   2
  lopende golven? ('j' of 'n')           n
  aantal modi (0 ... 100)                4
  Tokkelpunt bepaalt modi ('j' of 'n')   j
  Fasors? ('j' of 'n')                   n
  Audiosignaal?('j' of 'n')              n
  Wissen na elke ... beelden             1
 
Op 15 sept verschijnt een upgrade van WaveWizard.
Hieronder een lijst van de nieuwe functies (nieuw t.o.v. de "officiële" versie van 2010 die op dit moment nog in het voortgezet onderwijs wordt gebruikt). Een aantal daarvan hebben we hier al besproken, maar er zitten ook een paar nieuwe bij (in rood) die voor SF-leden heel interessant kunnen zijn. Daarover meer in volgende posten.

Geluidssporen S1, S2 en S3 zijn 32-bits floating point;
Automatische lineaire interpolatie van alle buffers;
bufferwaarden met negatieve indices gedefinieerd als nul;
Spectrumanalyzer twee frequentieresoluties;
Chorus;
Correlatie;
Decorrelator;
DFT (Discrete Fourier Transform);
FFT (Fast Fourier Transform) nu ook complexe signaal-input;
FIR-filter;
Flanger;
Foutmeldingen uitgebreid, Clip-melding;
Galm d.m.v. 16-kanaals Feedback Delay Network (FDN);
Grafiekpapier (menu afbeelden);
Grafiek van functie met 1 variabele (menu afbeelden);
Parametrische kromme (2D);
Grafiek van functie met 2 variabelen (3D);
Grafiek van F-buffer(s);
Grafische instellingen;
int(x) en frac(x);
LPC analyse en LPC synthese;
Pen (menu afbeelden);
Open WAV;
Priemgetallen;
Resofilter (Helmholtz resonator);
Snelle Convolutie;
Sonogram.
 
N.a.v. de nieuwe functies LPC analyse en LPC synthese een inleidende quizvraag voor de gevorderde SF-er :P

Kun je met een digitaal filter elk geluid maken? Zo ja, hoe? Zo nee, waarom niet?


.
 
Back
Top