zmooc vindt het maar arrogant van me als ik opmerk dat veel discussies op synthforum verzanden.
Dat heb ik niet gezegd, dat weet je zelf ook. En misschien moet je de discussie eens analyseren om te achterhalen waar ie verzand is

Na drie pagina's vol is nog steeds niet duidelijk wat DSP nou eigenlijk precies is. Dus waag ik zelf maar een poging tot uitleg:
Wat is DSP nu eigenlijk precies?
DSP is een enorm breed vakgebied dat zich bezig houdt met het verwerken van digitale signalen, samples. Je komt het tegen in radarinstallaties, deeltjesversnellers, harddisks, televisies, mp3-spelers, in je auto en natuurlijk in synthesizers. Hoewel alle berekeningen in een digitale synthesizer onder het vakgebied "DSP" vallen, is het gros daarvan niet zo heel verschillend van wat in een analoge synthesizer gebeurt. Neem bijvoorbeeld een sinus-toongenerator; de output daarvan is simpelweg een sinus. Dat is een simpele berekening:
output = sinus(fase)
waarbij de fase bij ieder sample ietsje groter wordt afhankelijk van de toonhoogte. En voor de duidelijkheid: in DSP bedoelt men met een sample 1 enkel getalletje. Wat synthesizer-mannen bv. een drumsample noemen, bestaat voor DSP-mannen uit heel veel losse samples.
Ander voorbeeld: een ringmodulator. Ook deze doet precies hetzelfde als in een analoge synthesizer, namelijk het vermenigvuldigen van twee ingangssignalen. Daar is ook een simpele formule voor te bedenken:
output = input1 * input2
Nog een laatste voorbeeld: fase modulatie (een variant op FM); daarbij beinvloed je de fase van de toongenerator; bij ieder sample schuif je hem een beetje extra op naar voren of naar achter. Allemaal misschien niet heel eenvoudig, maar wel precies hetzelfde als in een analoge synthesizer, maar dan in blokjes - samples - gehakt.
Dat is dus allemaal niet zo interessant en bovendien niet specifiek voor DSP. Het wordt pas echt interessant zodra je gaat kijken naar taken waarvoor je eigenlijk het frequentiespectrum van je signaal moet analyseren of manipuleren. Equalizers, lowpassfilters, echo-feedback, exciters etc. Laten we als voorbeeld een lowpassfilter nemen; hoe zou je een formule schrijven die lage frequenties niet doorlaat en hoge wel?
Neem bijvoorbeeld het signaal wat ik heb geattached (van een viool). De taak van het filter is om bij ieder binnenkomend sample te bepalen wat voor sample ie uit moet sturen. Voor alle eerder genoemde voorbeelden is dat relatief eenvoudig; een beetje optellen en vermenigvuldigen of een sinusje uitrekenen. Maar hoe doe vervul je de taak van een lowpassfilter? Hoe vis je alle signalen met een hoge frequentie uit een redelijk complex signaal? Om die vraag draait DSP: hoe maak je een formule voor zo'n filter?
Nou is een overdreven eenvoudig lowpassfilter zo gemaakt; het signaal (de amplitude) van hoge frequenties beweegt heel snel op en neer en dat van lage frequenties niet. Een lowpassfilter moet dus snel op en neer bewegende signalen wat minder snel laten bewegen. Dat is niet zo moeilijk; neem gewoon het gemiddelde van het huidige sample en het vorige sample en dat wordt de output. De formule daarvoor is heel simpel:
output = 0.5*input + 0.5*vorige_input
En als je het signaal nog meer wil afvlakken, pak je de vorige input er ook nog bij:
output = 0.33*inputsample + 0.33*vorige_inputsample + 0.33*inputsample_daarvoor
Dergelijke formules zijn de kern van DSP: je pakt een hele bak voorgaande samples en die tel je bij elkaar op met een zeker gewicht (hier dus steeds 0.33). Dit lijkt dus een beetje op een delay-effect, vandaar de eerder genoemde vergelijking met een echo. Zo'n truckje noemt men ook wel een "delay line". Je herhaalt in feite voorgaande samples en manipuleert op die manier het frequentie-spectrum. De meer algemene formule daarvoor heeft WaveGuide7 al meermalen genoemd:
S2[n] = C*S1[n] + A*S2[n-1] + B*S2[n-2]
Je kunt een aantal zaken varieren in die formule; zo kun je meer of minder oude inputsamples gebruiken. Hoe meer je er gebruikt, hoe preciezer je filter wordt. Zo heeft een 6dB lowpassfilter maar 1 oude sample in de formule, een 12dB filter heeft er 2 enzovoorts: hoe meer oude samples, hoe "scherper" de cutoff. Dat noemt men ook wel 1e orde filters, 2e orde filters, etc, afhankelijk van hoeveel oude samples er worden gebruikt.
Een andere variatie is dat je ook de outputsamples mee kunt nemen in de berekening. Als je dat doet, heb je in feite een feedback mechanisme en zal het effect van het filter nooit helemaal uitsterven. Dat is het verschil tussen de eerder al genoemde termen IIR (Infinite Impulse Response) en FIR (Finite Impulse Response).
Nou is de truck van DSP dat je door de gewichten in de formule te veranderen allerlei mogelijke frequentie-responses kunt maken. Zo kun je de meest onverwachte filters maken. Bandpassfilters, lowpassfilters, highpassfilters, combfilters etc. Die gewichten heten ook wel
filtercoëfficiënten. Als je op je synthesizer aan de cutoff-frequentie-knop draait, veranderen dus de filtercoëfficiënten. En als je je filter van lowpass omschakelt en highpass, veranderen ze ook. Maar de formule blijft in feite hetzelfde.
Helaas is het verband tussen filtercoëfficiënten en het gedrag van een filter heel moeilijk te doorgronden, bovendien is het berekenen van de filtercoëfficiënten bepaald geen kattepis. Om die reden zal DSP voor velen
black magic blijven. Sterker nog, de berekeningen die eraan ten grondslag liggen, zijn gebaseerd op een hele beroemde wiskunde formule genaamd Eulers' Identiteit. En de grap is dat niemand, zelfs Euler zelf niet, die formule begrijpt. We weten alleen dat ie klopt, maar niet waarom, en we hebben er van alles van harddisks tot digitale synthesizers tot ABS aan te danken
http://en.wikipedia.org/wiki/Euler's_identity
DSP heeft nog een ander aspect; in plaats van frequenties te manipuleren, kun je ze ook analyseren. De formule die daarvoor wordt gebruikt is ook weer erg complex, maar je komt hem nogal eens tegen: de (Fast) Fourier Analyse (FFT). Die gebruik je bijvoorbeeld in een digitale spectrum analyser, maar het wordt bijvoorbeeld ook in een mp3-encoder gedaan. Voor synthesizers is dat echter wat minder interessant, hoewel het waarschijnlijk wel toegepast wordt bij timestretchen van samples e.d.
Dan is er nog DSP-hardware; dat zijn redelijk gewone processors die vooral extreem snel zijn met het rekenen met delay lines. Om die reden worden in digitale synthesizers (die vol zitten met DSP-chips) vaak de eenvoudigere taken (zie boven; toongenerators, ringmodulators etc. etc.) ook in termen van delay lines beschreven. Gewoon omdat het sneller is. De technieken uit DSP-hardware zien we in behoorlijk uitgeklede vorm steeds meer terug in gewone computer-processors; dan heet het vaak MMX, SSE, SIMD of 3DNow. VSTs maken daar veelvuldig gebruik van en zijn dankzij die nieuwe instructies vaak tientallen keren sneller dan zonder.
Maargoed. Wil je echt met DSP aan de slag, dan heb je dus een redelijke achtergrond in wiskunde nodig en kun je in plaats van dit draadje beter een van de eerder genoemde boeken lezen. En wil je behalve het toepassen van DSP ook nog eens doorgronden hoe het werkt, dan moet je echt een hardcore wiskundige zijn die zijn hand niet omdraait voor dit soort grapjes:
http://en.wikipedia.org/wiki/Bilinear_transform
Maar daar snap ik dus ook nog geen zak van



