TUTORIAL CONVOLUTIE
TUTORIAL CONVOLUTIE
Hoi Roland. Ja, tijd is inderdaad altijd een lastig punt. Daarom hier een tutorial voor de convolutie.
Ik blijf even bij dat yoghurt-bakje en de weerman. Je kunt daar zelf gemakkelijk iets anders van maken.
De volgende handelingen moeten worden uitgevoerd:
(1) open wav pulsrespons;
(2) zet pulsrespons op spoor S3 d.m.v. Preset 1;
(3) open wav van een of ander geluid;
(4) doe convolutie d.m.v. Preset 2.
Preset 1: de pulsrespons op spoor S3 zetten
Open het wav-bestand dat de pulsrespons (de "tik") bevat. Dit is meestal een signaal van slechts enkele tientallen milliseconden en in het meest extreme geval, bijvoorbeeld de galm in een kerk, een seconde of 7 - 10.
Als je een geluid opent, komt dat automatisch op sporen S1 en S2 te staan. Neem aan dat de pulsrespons mono is (stereo kan ook, maar dat wordt ietsje ingewikkelder). We moeten die pulsrespons verplaatsen voordat we het te bewerken geluid (weerbericht) kunnen openen.
Je moet WaveWizard dus eerst vertellen hoeveel samples verplaatst moeten. Dat aantal hangt af van twee dingen:
(1) de duur van de pulsrespons in seconden; de pulsrespons van yoghurt-bakje is 0,013 sec. (dat getal geeft WaveWizard door met de rechter muis te klikken op het puntje van de "staart" van de golfvorm)
(2) de sampling frequentie. In WaveWizard geef je die aan met 'Fs' dat een default-waarde heeft van 44100.
Er moeten dus 0,013 X 44100 samples worden verplaatst. Uiteraard ga je dat niet zelf uitrekenen, maar laat dat over aan WaveWizard door in te typen: 0,013*Fs
Het verplaatsen van de samples doe je met een heel simpele en uitermate krachtige instructie: "Bewerk signaal". Daarmee kun je niet alleen een signaal verplaatsen, maar ook versterken, verzwakken, mixen met een ander signaal, echo's toevoegen; je kunt er zelfs, met een extreem korte formule, Karplus Strong mee doen, of resonantiefilters mee maken. In modulair zou je vele verschillende modules nodig hebben voor wat je hier realiseert met een enkele, zeer eenvoudige instructie. In dit geval doen we er niks anders mee dan wat samples op een ander spoor zetten. De code luidt:
Code:
!********************************************
! Preset 1: de pulsrespons op spoor S3 zetten
!********************************************
Bewerk signaal
n0 0
n1 0,013*Fs ! 0,013 seconden
Bewerking S3[n] = S1[n]
Nu de pulsrespons op spoor S3 staat, kun je het te bewerken geluid openen. Neem even aan dat ook dit mono is. En dat het 14 seconden duurt.
Nu kun je de convolutie doen d.m.v. onderstaande code. De laatste parameter, 'Schaalfactor coef's', moet je experimenteel vaststellen. Dat doe je door te beginnen met bijv. '1' in te vullen. Als 'FIR-filter' klipt, dan krijg je een melding (in Memo, dat is het grijze veld, links boven in het scherm) en weet je dat 'Schaalfactor coef's' kleiner moet worden. Maak 'm maar gelijk 10 of 100 of 1000 keer zo klein.
Als je eenmaal een waarde hebt gevonden die niet tot klip's leidt, dan kun je met 'Schaalfactor coef's' het volume van de output fijnregelen.
(Merk op dat ook hier de precizie orden van magnituden groter is dan bij NM, nl. zoals altijd bij WaveWizard, 14 cijfers achter de komma.)
Tussen haakjes, van de code-blokken hoef je altijd alleen maar de rechter kolom zelf in te vullen; de namen van de parameters, zoals 'Input'
of 'Additief ('j' of 'n')' worden automatisch geprint in Commando-venster als je een betreffende menu-functie hebt aangeklikt. Bij bijna alle menu-functies is de rechter kolom ook al ingevuld, bij wijze van voorbeeld.
Code:
!************************************
! Preset 2: de eigenlijke convolutie:
!************************************
FIR-filter
Input S1[0]
Output S2[0]
coef's S3[0]
M 0,013*Fs ! duur puls
Duur (ook 'sec') 14*Fs ! duur geluid
Additief ('j' of 'n') n
Schaalfactor coef's 4*10^(-6) ! 4 X 0,000001
Dus alles bij elkaar realiseer je deze universele signaalbewerking (die met NM onuitvoerbaar is) in WaveWizard door slechts 12 regels tekst....