WaveWizard

Convolutie implementeren d.m.v. delay-componenten of -modules?

Convolutie implementeren d.m.v. delay-componenten of -modules?

Een paar vereisten:
(1) de delays kunnen alleen maar feedforward zijn. Aan feedback-delays heb je niets.

(2) Binnen de software die je gebruikt moet het mogelijk zijn om de delay-tijd (echo-tijd) uit te drukken als aantal samples (bij een gegeven sampling periode Ts = 1/Fs, waarin Fs de sampling rate voorstelt).
Voorbeeld: als de echotijd 0,1 seconde is en Fs = 44100, dan is de delay-tijd in samples gelijk aan 0,1*44100 = 4410 samples. Je hebt dan dus evenzoveel delay-componenten nodig.

(3) Als een pulsrespons bijv. 0,1 sec duurt dan heb je 4410 delay-modules nodig, met echotijden, in samples uitgedrukt, die stap voor stap oplopen: 1, 2, 3, ..., 4409, 4410. Elke delaylijn krijgt z'n eigen versterkingsfactor. Dat zijn er in dit voorbeeld dan eveneens 4410.

(4) Ook de versterkingsfactor van de output van de delay moet specificeerbaar zijn; daarbij moet het ook mogelijk zijn om een negatieve waarde op te geven. Aangezien het bij convolutie vaak al gauw om honderden of zelfs duizenden delays gaat (bijv. Pori concertzaal pulsrespons: 70.000 delays) moet je software de versterkingfactoren gemakkelijk kunnen toewijzen of zelfs direct bewerken uit een wav of uit de (gesampelde) output van een functie- of toongenerator.
 
WG7, wil je hier naar kijken? Dit lijkt mij een representatie van een 1-kam filter met feedback. Deze FB kan uit. Heb het iets overdreven voor de toontjes die je erbij hoort. Deze herinneren mij aan de bijgeluidjes in het weerbericht.
 

Attachments

  • Roland Kuit Digital 1-Comb with Feedback.jpg
    Roland Kuit Digital 1-Comb with Feedback.jpg
    78,3 KB · Bekeken: 104
  • Digital 1-Comb with Feedback.pch2
    1,3 KB · Bekeken: 112
Zeker, maar ik heb daar wel nog steeds een woordenboek Claviaans bij nodig...:o:
Misschien kun je kort uitleggen wat het inputsignaal is en welke bewerkingen je daar precies op uitvoert? Een mp3-tje helpt ook enorm.
 
Zeker, maar ik heb daar wel nog steeds een woordenboek Claviaans bij nodig...:o:
Het Claviaans is natuurlijk ook heel heel heel heel heel heel heel heel heel heel heel heel heel heel heel heel heel heel heel heel heel heel heel heel heel heel heel heel heel heel heel heel heel heel heel heel heel heel heel heel heel heel heel heel heel heel heel heel heel heel heel heel heel heel heel heel heel heel heel heel heel heel heel heel heel heel heel heel heel heel heel heel heel heel heel heel heel heel heel heel heel heel heel heel heel heel heel heel heel heel heel simpel........... :D
 
Het Claviaans is natuurlijk ook heel heel ...l heel simpel........... :D

Het effect van een sinuszaal in een sinuszaal ... in een sinuszaal... kun je heel goed omschrijven als heel heel ... heel simpel, omdat het ongeacht 't aantal iteraties altijd weer een (alleen maar steeds langer durende) sinusgolf oplevert (wat je met de inmiddels geposte convolutie-presets snel kunt verifiëren). Niet te vergelijken dus met een modulaire klanksynthese-taal zoals het Claviaans die opgebouwd is uit honderden complexe operatoren met duizenden parameters.
 
kansverdeling van een worp met 2 dobbelstenen

kansverdeling van een worp met 2 dobbelstenen

Tussendoor even een andere interessante toepassing van convolutie.
Een worp met twee dobbelstenen is een kansexperiment waarbij de uitkomst de som is van de uitkomsten van twee onafhankelijke randomvariabelen (dobbelstenen).
Bij een worp met 1 dobbelsteen heb je een uniforme kansverdeling; dat betekent dat elke uitkomst een even grote kans heeft.
Bij een worp met 2 dobbelstenen is de kans dat je bijv. 6 gooit groter dan de kans dat je 3 gooit, want er zijn meer combinaties waarvan de som gelijk is aan 6 (1+5, 2+4, 3+3, 4+2, 5+1) dan combinaties met som 3 (1+2 en 2+1).

Nu zegt een regel uit de statistiek zegt dat de kansverdeling van de som van twee onafhankelijke randomvariabelen gelijk is aan de convolutie van de kansverdelingen van die twee randomvariabelen.
Vertaald in termen van signaalverwerking: beschouw de kansverdeling van de ene dobbelsteen als inputsignaal (zes pulsen gelijk aan 1/6, dat is de kans van elke worp met 1 dobbelsteen); en beschouw de kansverdeling van de andere dobbelsteen (eveneens zes pulsen gelijk aan 1/6) als pulsrespons en convolveer inputsignaal met pulsrespons. Het outputsignaal is de kansverdeling van een worp met twee dobbelstenen.


Implementatie in WaveWizard, zie preset hieronder, die ook code bevat om de kansverdeling van de worp met twee dobbelstenen weer te geven in een plaatje. Ook deze grafische functie bestaat alleen in de nieuwe (beta)versie.

attachment.php
 

Attachments

  • Preset kansverdeling van 2 dobbelstenen dmv convolutie.txt
    1,4 KB · Bekeken: 106
  • Kansverdeling worp met 2 dobbelstenen.jpg
    Kansverdeling worp met 2 dobbelstenen.jpg
    41,8 KB · Bekeken: 109
Sorry WG7, ik heb goede patches -in deze- gemaakt maar heb besloten deze niet te delen.

Prima Roland, maar heb je inmiddels al ontdekt of het mogelijk is om met Clavia een directe convolutie te maken (criteria #361) en daarmee dus bijvoorbeeld een sinuszaal door te fluiten? Zo ja, dan zou een patch-bewijs natuurlijk wel aardig zijn :P
 
Jazeker wil ik je dit "patchbewijs" met je delen, maar dan wel privé. Het is eigenlijk zo logisch wanneer een golfvorm in fase wordt teruggekaatst dat die frequentie wordt opgeteld en wanneer uit fase, wordt gedempt. De zaal fungeert als een resonerend filter.
Het boeiende van jouw draad vind ik de uitdaging om anders te kijken/denken over geluid. Conceptueel of filosofisch zoekend naar een waarheid. Het zelfde probeer ik ook in mijn patches. Ook buiten het geijkte kader van modulaire klanksynthese.
En nu.........koffie, goedemorgen! :koffie:
 
Hier een plaatje waarin je duidelijk de amplitudes in een sinesweep ziet veranderen. Het is wel maar 1 slot patch geluid omdat ik het G2Demo geschikt wilde maken. Ik ga wel deze patch uitbreiden naar 4 slots DSP ruimte voor een 'echte zaal'. Nu is het een badkamer :)
 

Attachments

  • feedforward convulsion.jpg
    feedforward convulsion.jpg
    63,8 KB · Bekeken: 106
Jazeker wil ik je dit "patchbewijs" met je delen, maar dan wel privé.

als 't privé gaat, komen we binnen dit onderwerp (convolutie) niet verder met de vergelijking van WaveWizard met Clavia. Dat zou ik erg jammer vinden.

Hier een plaatje waarin je duidelijk de amplitudes in een sinesweep ziet veranderen. Het is wel maar 1 slot patch geluid omdat ik het G2Demo geschikt wilde maken. Ik ga wel deze patch uitbreiden naar 4 slots DSP ruimte voor een 'echte zaal'. Nu is het een badkamer

In deze zwiep stijgt en daalt de frequentie niet-lineair. Dat hoeft in principe ook niet, maar een essentiële eigenschap van de frequentierespons wordt daardoor niet goed zichtbaar. (De daling kun je natuurlijk weglaten, want die voegt niets nieuws toe).
Waar zie je nou de eigenfrequentie van de sinuszaal?

Ter vergelijk hier een typisch sinuszaal-sonogram, gemaakt met WaveWizard.

attachment.php



De eigenfrequentie van de sinuszaal is duidelijk te zien. Dit is HET grote onderscheid met een kamfilter.
Een feedback-delay is een repeterend echo-effect dat werkt als een kamfilter met pieken (resonanties).
Een feedforward-delay is een eenmalig echo-effect dat werkt als een kamfilter met dips (anti-resonanties).
Een sinuszaal is een kamfilter met dips en één heel duidelijke resonantie die het maximum bereikt precies op de plaats waar de feedforward-delay (met dezelfde impulsrespons-tijd (dus echo-tijd)) een dip zou hebben.
De sinuszaal laat dus precies één enkele dipfrequentie van de dipkam door en wel op maximale sterkte.
Dit heeft fantastische, ja sensationele consequenties...!
 

Attachments

  • sonogram zwiep in sinuszaal.jpg
    sonogram zwiep in sinuszaal.jpg
    8,6 KB · Bekeken: 111
Goedemorgen WG7,
Op de zoektocht van de vertaling naar het Claviaans ben ik op erg leuke dingen gekomen. Vooral met de Sample Delay - en de Shift register delay module.
In mijn hoofdstuk filters van mijn boek had ik al experimenten met deze geplaatst. Ook qua audio processing bijzondere delay's gemaakt. Nu toch weer een stapje verder. Gisteren zelfs eerst de audio van An naar Dig omgezet en daarna door deze modules gehaald, ben dus verder aan het experimenteren.
 
Sinuszalencomplex

Sinuszalencomplex

Hier zeven Sinuszalen met elk een pulsrespons van 500 samples (= 11,34 millisec).

attachment.php


In zaal 1 past precies 1 periode van een sinusgolf, in zaal 2 passen precies 2 periodes enz.
Links (in blauw) zie je de pulsrespons.
Rechts (in rood) de corresponderende frequentierespons. Daarin valt steeds het maximum op een plaats waar alle andere responsies een totale nul-dip hebben.

Als je nu in deze zalen een zuiver periodieke toon laat klinken (bijv. een zaagtand- of een blokgolf) waarvan de periode gelijk is aan 500 samples (dus grondtoon 88,2 Hz bij CD-sampling frequentie van 44,1 kHz) dan zal elke zaal precies één boventoon doorlaten en alle andere volledig onderdrukken. In elke zaal hoor je dus uitsluitend één enkele sinustoon waarvan de frequentie gelijk is aan die van "de zaal zelf".

Zo'n sinuszaalcomplex vormt dus een exact-harmonische filterbank.
 

Attachments

  • Sinuszalencomplex.jpg
    Sinuszalencomplex.jpg
    33,6 KB · Bekeken: 104
Hier de preset behorend bij bovenstaande Sinuszalencomplex.
Code:
Declareer N; k; c; f; f0; Nfft; GrafiekHoogte

Wis buffers
  Wis buffer (F1...F32, S1, S2, S3)  S1|S2|S3
Wis buffers
  Wis buffer (F1...F32, S1, S2, S3)  F1|F2|F3|F4
Wis buffers
  Wis buffer (F1...F32, S1, S2, S3)  F5|F6|F7|F8|F9

Naam Buffer F1 = Sinuszaal
Naam Buffer F3 = AmpSinus
Naam Buffer F5 = Re
Naam Buffer F6 = Im
Naam Buffer F7 = Fase

!-----------------------------------------------------
! Instel parameters:
N    = 500     ! duur sinustoon in smp; Bijv. als N = 200,
Nfft = 2^16    ! aantal samples FFT venster

!-----------------------------------------------------
f0 = Fs/N      ! duur sinustoon als frequentie in Hz
!                dan is duur N/Fs = 200/44100 = 4,5 msec
Print f0

GrafiekHoogte = 450
FOR k = 1 TO 7                      ! Sinuszaalnummer k
  !-----------------------------------------------------
  ! Maak sinustoon(tje) als pulsrespons van 'Sinuszaal':
  ! k = 4
  f = k*f0      ! frequentie van boventoon k
  c = 2*pi*f*Ts
  Print f
  Bewerk signaal
    n0          0
    n1          N-1
    Bewerking   Sinuszaal[n] = sin(c*n)
  
  
  ! Sinustoontje afbeelden in blauw, grafiek links:
  Grafiekpapier
    Linkerbovenhoek x; y (pix)   10; 10 + (k-1)*(GrafiekHoogte + 10)
    Breedte; Hoogte (pix)        600; GrafiekHoogte
    Domein x1; x2                -1; 2*N
    Bereik y1; y2                -2; 2
    Rooster x; y                 N/4; 1/2
  
  Pen
    Kleur   blauw
    Dikte   3
    Modus   continu
  
  Grafiek van functie met 1 variabele
    f[x]     Sinuszaal[x]
    Domein   0; N
    Modus    continu
    Stap     auto
  
  
  !-----------------------------------------------------
  ! Ampspectrum
  FFT
    In Re                Sinuszaal[0]
    In Im                nvt
    Out Re               Re[0]
    Out Im               Im[0]
    Amp                  AmpSinus[0]
    Fase                 Fase[0]
    Venster (in smp)     Nfft
    Hann? ('j' of 'n')   n
  
  Print (Fs/N)
  ! Fs/N is de afstand in Hz tussen twee nulpunten in het spectrum.
  ! Alle harmonischen van een toon met frequentie (Fs/N) Hz zullen
  ! worden tegengehouden BEHALVE die met boventoonnummer k.
  
  Grafiekpapier
    Linkerbovenhoek x; y (pix)   620; 10 + (k-1)*(GrafiekHoogte + 10)
    Breedte; Hoogte (pix)        600;450
    Domein x1; x2                0; 12*Fs/N    ! in Hz
    Bereik y1; y2                0; 2
    Rooster x; y                 Fs/N; 1/8
  Pen
    Kleur   rood
    Dikte   5
    Modus   continu
  
  ! De buffer AmpSinus bevat Nfft amplitudewaarden die moeten
  ! worden afgebeeld op het frequentiebereik 0 tot Fs Hz, dus:
  ! f(x=0)  = AmpSinus[0] en
  ! f(x=Fs) = AmpSinus[Nfft]
  ! Als c = Nfft/Fs, dan is
  ! f(c*Fs) = AmpSinus[c*Fs]
  !         = AmpSinus[(Nfft/Fs)*Fs] = AmpSinus[Nfft]
  
  c = Nfft/Fs
  Grafiek van functie met 1 variabele
    f[x]     2*AmpSinus[c*x] * (Nfft/N)
    Domein   0; 1200
    Modus    continu
    Stap     auto
  
NEXT k       ! volgende zaal
 
Animatie Sinuszalen

Animatie Sinuszalen

Je kunt de opeenvolging van Sinuszaal-plaatjes ook als animatie laten zien. Daarvoor hoef je slechts twee maal een uitroepteken in te voegen in de twee codeblokken voor Grafiekpapier, en wel in de y-waarde van 'Linkerbovenhoek'. Daar staat nu:


Code:
    Linkerbovenhoek x; y (pix)   10; 10 + (k-1)*(GrafiekHoogte + 10)

Voeg een uitroepteken in als volgt:
Code:
    Linkerbovenhoek x; y (pix)   10; 10     ! + (k-1)*(GrafiekHoogte + 10)

Omdat WaveWizard alles wat rechts van een uitroepteken staat negeert, is de Linkerbovenhoek van de grafiek nu onafhankelijk geworden van het Sinuszaalnummer. Nu worden alle zaal-grafieken snel achter elkaar op dezelfde plaats afgebeeld, elk plaatje overschrijft het vorige.

Vaak is het ook heel instructief om een aantal grafieken samen in een plaatje af te beelden. Dan plaats je het codeblok van Grafiekpapier voorafgaand aan de lus, zodat het grafiekpapier maar één keer wordt aangemaakt.

In beide gevallen ontstaan animaties op het hoofdscherm van WaveWizard. Die kun je eventueel ook exporteren met screen video capture software (ik gebruik de uitstekende freeware Active Presenter) als mpeg- of avi-filmpje.
 
Vraagje.. Ik krijg WaveWizard niet geinstalleerd.

Als ik de executable heb gedownload en hem execute krijg ik :

Error 81
WaveWizard_NLT_001.exe.cm was not found.
 
Hoi demian, ga naar http://muziekexact.nl/download/NLT.htm
daar vind je uitleg over de installatie en twee andere bestanden die je daarbij moet downloaden, waaronder dat cm-bestand. Plaats die in dezelfde map als het WaveWizard .exe bestand.

Het exe-bestand dat je op de download-pagina aantreft is de versie uit oktober 2010 die op dit moment door scholen wordt gebruikt. Hier in deze draad gebruiken we een nieuwere versie (aug j.l.) , die je kunt downloaden via de link in de handtekening (http://muziekexact.nl/WaveWizard_2012_BETAVERSIE_augustus.exe)

Tussen haakjes, je kunt de code uit post #376 (https://www.synthforum.nl/forums/showpost.php?p=1568998&postcount=376) met de muis selecteren, kopieren en droppen in het Commandovenster (rechtsboven, lichtgeel). Klik op Start en de grafieken verschijnen (in veel hogere resolutie dan hierboven)

Je kunt ook de preset in de bijlage openen en dan op Start klikken
 

Attachments

  • Frequentierespons SinusSinuszaalcomplex.txt
    3 KB · Bekeken: 124
Back
Top