toongeneratoren en DSP
toongeneratoren en DSP
Altijd jammer als een belangrijke discussie op synthforum dreigt vast te lopen door "gedoe". Daarom maar even slikken en het nieuwe jaar volle goede moed en voornemens openen met een bericht on topic!
Er werd in deze draad beweerd dat DSP pas om de hoek komt kijken als je een filter wilt gaan programmeren en niet bij bijv. oscillatoren of mixers. Aan de hand van een voorbeeld wil ik laten zien dat die stelling, hoewel begrijpelijk, niet is vol te houden en dat DSP betrekking heeft op alle aspekten van de discrete simulatie van typische synthesizerklanken zoals we die kennen sinds de eerste synth's van Moog en Oberheim. DSP geeft een beschrijving en een verklaring van alle technische kanten daarvan; en die heb je nodig als je een sofsynth wilt gaan programmeren.
Als voorbeeld neem ik de digitale (of beter gezegd: discrete) simulatie van een "klassieke", analoge synthesizergolfvorm, de blokgolf. De golfvorm daarvan is simpel en het is kinderspel om die digitaal weer te geven: je maakt een rij getallen die bestaat uit twee segmenten van gelijke lengte: het eerste segment bestaat uit steeds hetzelfde positieve getal. Het tweede segment maak je door de getallen van het eerste te vermenigvuldigen met -1. Bijvoorbeeld +10,+10,+10,+10,-10,-10,-10,-10. Als je die reeks steeds maar herhaalt, krijg je inderdaad een blokgolf. Hoe langer de segmenten, des te lager de toon.
Dit is de manier waarop de blokgolf het vaakst in software wordt vorm gegeven. Het idee heeft iets heel evidents, het is simpel van opzet, gemakkelijk te realiseren en je kunt toch moeilijk beweren dat er diepe DSP-inzichten achter zitten. Vandaar dat het wel begrijpelijk is om te zeggen dat je geen DSP nodig hebt om een blokgolf te programmeren.
Maar wat valt er te zeggen over de klank van deze discrete blokgolf?
Er bestaat een oude en taaie discussie over klank- of karakterverschillen tussen digitaal en analoog. Sommigen vinden dat een achterhoedediscussie, anderen houden stug vol dat analoog veel levendiger, natuurlijker en wamer klinkt dan digitaal. Nu is de vraag: kun je een verschil horen tussen deze digitale blokgolf en een van, laten we zeggen, een Moog synth? Ikzelf kan het antwoord daarop niet geven, want ik heb geen analoge synth. Maar er is veel fundamentelere vraag die ik wel kan beantwoorden. Die vraag luidt: kun je aantonen dat de discrete blokgolf van hierboven anders MOET klinken dan een continue blokgolf?
Het antwoord is verrassend. Ja inderdaad: er bestaat een objectief aantoonbaar en trouwens ook duidelijk hoorbaar verschil tussen klankkleuren van beide tonen. Dat hangt samen met de verschillen in spectra.
In elk inleidend boek over synthesizers vind je het eenvoudige spectrum van een continue blokgolf:
(1) het spectrum is oneindig, d.w.z. een blokgolf heeft oneindig veel boventonen (daarvan hoor je uiteraard slechts het gedeelte tot aan de toongrens, zeg 15-20 kHz); alle boventonen met een even nummer hebben een amplitude gelijk aan 0, dus die hoor je niet. Dat geeft de blokgolf die herkenbare holle, nasale klank.
(2) er bestaat een simpele wiskundige formule (al door Fourier zelf gegeven!) voor de sterkte van elke boventoon; die is omgekeerd evenredig met het nummer ervan; bijvoorbeeld als de grondtoon een amplitude heeft die gelijk is aan 1, dan heeft de 17de boventoon een amplitude van 1/17.
Als je dat vergelijkt met het spectrum van de discrete blok, ontdek je een paar belangrijke verschillen.
(1) het spectrum van de discrete blok is uiteraard NIET oneindig. Volgens de samplingtheorie (stelling van Nyquist) is de frequentie van de hoogste boventoon altijd lager dan of gelijk aan de halve samplingfrequentie.
(2) Net al bij de continue blokgolf bestaat er ook voor het spectrum van de discrete blokgolf een wiskundige formule die vertelt hoe sterk elke boventoon is. Maar die formule is niet dezelfde als die van het spectrum van de continue blokgolf! Met andere woorden: de DSP-theorie voorspelt dat de discrete blokgolf, zoals die wordt opgewekt met de methode van hierboven, anders zal klinken, immers het amplitudespectrum verschilt.
Dit toont al aan dat je niet om DSP heen kunt als je een natuurgetrouwe digitale simulatie van een analoge synthklank wilt maken. Maar er is meer. Een van de belangrijkste producten van DSP is de FFT waarmee je het spectrum van een willekeurig geluid kunt berekenen en die je in heel veel audiosoftware aantreft. Juist door die FFT hoef je die spectrumformule van de discrete blokgolf niet eens te kennen en kun je direct vast stellen dat het spectrum van de continue en de discrete blokgolf duidelijk van elkaar verschillen.
Met de FFT stel je vast dat alle boventonen van de discrete toon ietsje sterker zijn dan die van de continue toon. Dit verschil neemt zelfs toe met de frequentie, zodat de afwijking steeds groter wordt. Het klankeffect daarvan is dat de discrete blokgolf net zo klinkt als een continue NADAT die door een hoogdoorlaatfilter (met een heel geleidelijk verlopende flank) is gehaald. Daarom klinkt de discrete een tikje scherper, minder warm, dan de continue.
Zie nou wel, roepen de Analogen, hier heb je het objectieve bewijs dat analoog warmer en natuurlijker klinkt dan digitaal!
Maar dat is natuurlijk onzin, en de oplossing is simpel en volgt ook direct uit de DSP-theorie: maak een Fouriersynthese van 1 blok periode met daarin alle boventonen exact dezelfde amplitudes hebben als de contine blokgolf, tot aan de halve sampling frequentie. Zo krijg je een discrete blokgenerator die even warm klinkt als een continue!