Wat is DSP nu eigenlijk precies?

Allicht, van de massa's boeken over DSP ben ik er nog geen enkele tegengekomen waarin men niet met differentialen of integralen begint te worstelen.
Het opmerkelijke van DSP is dat er, als het puur gaat om discrete, "gesampelde" signalen gaat, niet één differentiaal in voor komt!! Van differentialen en differentiaalvergelijkingen is louter sprake bij continue signalen en systemen. Bij DSP gaat het voornamelijk om differenties en differentievergelijkingen.
Zoals al eerder opgemerkt (bericht #5) gaapt er een diepe kloof tussen "analoog" en "digitaal" (we spreken liever, of beter, over "discreet" en "continu"). En die kloof is een van de belangrijke onderwerpen in de DSP-theorie, maar je hoeft daar bij een eerste kennismaking niet wakker van te liggen.
 
Zolang dit op geen eenvoudiger manier kan uitgelegd worden, zal dit onderwerp een niche product blijven. Dat is blijkbaar niet jou bedoeling WaveGuide7 en tot hiertoe vind ik jou werk daarrond ook reeds het best geslaagde resultaat. Toch, ook dan ga je nog op zoek om het beter te kunnen d.m.v. deze topic('s). Mooi.
Ben benieuwd waar het toe gaat leiden... (alzo)
Dank voor het compliment, maar kennelijk ben ik dan niet in mijn opzet geslaagd, want ik heb juist in Sound Design aan leerlingen willen duidelijk maken dat dit wel degelijk "dit op een eenvoudiger manier kan uitgelegd worden". Dat is wat vooral in H3 en H4 gebeurt. Waar het op neer komt is dat die "moeilijke" differenties van DSP zo'n mooie en directe akoestische interpreatie hebben:
in Audio-DSP gelden de volgende stellingen:

(1) een differentievergelijking is niets anders dan een korte, slimme beschrijving van een echo-effect.

(2) een echo-effect is altijd tevens een filter-effect. En omgekeerd: een filter-effect is onmogelijk zonder echo-effect.


Als we dat goed scherp kunnen krijgen in deze draad hebben we de kern van de DSP-theorie helemaal te pakken!
 
Nog heel even kort over de boeken: ik heb zelf het boek "achter" dspguide.com: Digital Signal Processing van Steven Smith. Ik ben er bijzonder blij mee; het is volledig, duidelijk en legt echt _alles_ uit. Een grondige wiskunde basis is wel vereist. Nadeel ervan - en eigenlijk van alle "algemene" DSP-boeken - is dat zaken die nogal specifiek zijn voor muziek-synthese er niet voldoende in aan bod komen. Denk daarbij met name aan zelf oscillerende filters, filter distortion en allerlei algemene smerigheden die bij meer wetenschappelijk DSP-werk juist zeer ongewenst zijn en bij het maken van muziek juist wel.
 
Nog heel even kort over de boeken: ik heb zelf het boek "achter" dspguide.com: Digital Signal Processing van Steven Smith. Ik ben er bijzonder blij mee; het is volledig, duidelijk en legt echt _alles_ uit. Een grondige wiskunde basis is wel vereist. Nadeel ervan - en eigenlijk van alle "algemene" DSP-boeken - is dat zaken die nogal specifiek zijn voor muziek-synthese er niet voldoende in aan bod komen.

Welkom bij de club!:) Hèt DSP-boek over computermuziek bestaat natuurlijk niet. En een boek dat "alles" duidelijk uitlegt, ben ik ook nog nooit tegengekomen. Ik vind een boek pas goed als ik nà lezen meer vragen heb dan ervóór. Wat je nodig hebt zijn enkele flinke planken met DSP-boeken, deels geschreven door hard-boiled DSP-wetenschappers, zoals Steiglitz, Proakis, Oppenheim, Orfanidis, Vaidyanathan, Moon & Stirling, Smith (ik bedoel hier Julius O!), Papoulis, Markel & Gray, of V.D. Enden &Verhoeckx (om in vredesnaam ook maar 2 Hollandse namen erbij te zetten) die algemene DSP-boeken schrijven; deels geschreven door meer audio- en spraak- en muziek-georienteerde auteurs/editors, zoals Richard Moore, Gold&Morgan, Beauchamp, Kahrs & Brandenburg, Zölzer, De Poli.

En dan in die laatste categorie, maar tevens in de categorie inleiders ook vooral "onze eigen" Stan Tempelaars (bij wie ik afstudeerde) wiens toegankelijke boek (Signal Processing, Speech and Music) nog steeds veel wordt gebruikt, ik geloof op dit moment ook door Peter Pabon bij sonologie in Den Haag. Het voordeel en tevens grote nadeel van Stan's boek is dat hij, juist om zijn talrijke muziekstudenten (onder wie ooit Curtis Roads!) tegemoed te komen, geen gebruik maakt van complexe getallen.

Denk daarbij met name aan zelf oscillerende filters, filter distortion en allerlei algemene smerigheden die bij meer wetenschappelijk DSP-werk juist zeer ongewenst zijn en bij het maken van muziek juist wel.
 
Zelf-oscillerende filters? Bedoel je IIR filters? Wat is daar smerig of speciaal aan? Dat is toch gewoon schoolboek-DSP? Zie voorbeeld hierboven; hier kun je de lengte van de impulsresponsie, dus de mate van "zelf-oscillatie", instellen met slechts één enkel getalletje: BandBreedte.
En wat versta je onder filter distortion? Bedoel je daar iets anders mee dan "gewoon" filteren?
 
 
Laatst gewijzigd:
Zelf-oscillerende filters? Bedoel je IIR filters? Wat is daar smerig of speciaal aan? Dat is toch gewoon schoolboek-DSP? Zie voorbeeld hierboven; hier kun je de lengte van de impulsresponsie, dus de mate van "zelf-oscillatie", instellen met slechts één enkel getalletje: BandBreedte.
En wat versta je onder filter distortion? Bedoel je daar iets anders mee dan "gewoon" filteren?
 

Zelfoscillerende filters: filters die ook zonder input een signaal blijven genereren na een enkele puls. Dat zijn inderdaad vast gewoon IIR-filters, maar hoe je zo'n ding configureert om dat te doen, is iets wat in reguliere DSP-boeken zelden aan de orde komt omdat dergelijke instabiele filters eigenlijk alleen bij synthese gewenst zijn.

Maar inderdaad, het is vast gewoon een kwestie van de invuloefening doen. Volgens mij doet het voorbeeld hierboven dat trouwens ook niet; als de ruis stopt, stopt de resonantie uiteindelijk. Ik snap het voorbeeld ook niet helemaal; wat doet "Duur" precies? Vertelt die via "n1" aan WaveWizard om hoeveel samples het gaat? In het echte algorithme zelf komt ie niet terug toch?

Met filter distortion bedoel ik de manier waarop je omgaat met het clippen (van de resonantie piek) in een gewoon filter. Dat is ook iets wat in reguliere DSP-taken nooit gebeurt en eigenlijk alleen bij synthese aan de orde komt. Het is wellicht ook niet helemaal DSP-materie, maar je loopt er wel tegenaan.

Edoch, dank voor de boeken-tips. Eerst even mijn huidige boek helemaal doorwerken (daar ben ik nog lang niet:P) en dan eens verder kijken.
 
Zelfoscillerende filters: filters die ook zonder input een signaal blijven genereren na een enkele puls. Dat zijn inderdaad vast gewoon IIR-filters, maar hoe je zo'n ding configureert om dat te doen, is iets wat in reguliere DSP-boeken zelden aan de orde komt omdat dergelijke instabiele filters eigenlijk alleen bij synthese gewenst zijn.

IIR dus, inderdaad. Maar een IIR-filter hoeft niet perse instabiel te zijn! Je spreekt uitsluitend van een instabiel filter als de amplitude van de output (al dan niet oscillerend) exponentieel toeneemt (divergeert). Een stabiel IIR-filter is heel goed te ontwerpen. Bij een stabiel filter gaat de output snel of langzaam naar nul, maar wordt nooit gelijk aan nul! Zie verder Hoofdstuk 3 van Sound Design.

Hoe je zo'n impulsresponsie maakt, is ook in het voorbeeld hierboven te zien. Vervang gewoon de ruis door een enkele puls.

Maar inderdaad, het is vast gewoon een kwestie van de invuloefening doen. Volgens mij doet het voorbeeld hierboven dat trouwens ook niet; als de ruis stopt, stopt de resonantie uiteindelijk. Ik snap het voorbeeld ook niet helemaal; wat doet "Duur" precies? Vertelt die via "n1" aan WaveWizard om hoeveel samples het gaat? In het echte algorithme zelf komt ie niet terug toch?

De resonantie "stopt" in principe nooit (IIR = Infinite Impulse Response), maar wordt geleidelijk zo zacht dat verder rekenen geen zin meer heeft.

Duur = 20 seconde = 20*Fs = 20 * 44100 = 882000 (samples).
Dus, inderdaad, de formule S2[n] = C*S1[n] + A*S2[n-1] + B*S2[n-2]
wordt 882000 maal, dus voor elke geluidssample, berekend.

Met filter distortion bedoel ik de manier waarop je omgaat met het clippen (van de resonantie piek) in een gewoon filter. Dat is ook iets wat in reguliere DSP-taken nooit gebeurt en eigenlijk alleen bij synthese aan de orde komt. Het is wellicht ook niet helemaal DSP-materie, maar je loopt er wel tegenaan.

Ik zou dat beschouwen als twee verschillende problemen en die van elkaar gescheiden houden.
Filteren = filteren en daarbij moet de output braaf binnen de max. amplitude van 16-bits samples blijven.
distorsie = distorsie en kan zowel op de in- als op de output van het filter worden toegepast, maar moet uiteraard ook binnen de max amp. van 16-bits samples blijven.
 
verzanden (1)

verzanden (1)

zmooc vindt het maar arrogant van me als ik opmerk dat veel discussies op synthforum verzanden. (Dus niet alle! En dit terwijl ik toch een boel argumenten noem die de geachte forumleden grotendeels of volledig excuseren en uit de wind houden; zie bericht #1.) Maar goed. Laat ik dan af en toe een voorbeeld noemen van de noodzaak van helder, exact taalgebruik - en dus DSP-theorie.
 
voorbeeld 1: zinloos taalgebruik
Dit is een goed voorbeeld van taalgebruik waarmee niets wordt gecommuniceerd:

(Yoozer)
Als je dat pow5 ook nog aanpasbaar weet te maken heb je iets wat lijkt op een non-resonante lowpassfilter . De Novation Nova, AN1x, Audjoo Helix e.d. hebben ook zo iets - voor de daadwerkelijke filter nog harmonischen verwijderen, maar volgens mij werken die met een soort FFT-trucje.
(Zie draad).
 
Als je dat pow5 ook nog aanpasbaar weet te maken
Even aangenomen dat onder "pow5(x)" wordt verstaan: de vijfde macht van x, wat versta je dan in vredesnaam onder "aanpasbaar maken" van een zo exact gedefinieerde, pure, rekenkundige bewerking? Wat is "aanpasbaar maken" van optellen? En van delen? Waarom noemde Descartes de wiskunde ook al weer de enige mogelijke, zinvolle taal in de natuurwetenschappen?
 
heb je iets wat lijkt op een non-resonante lowpassfilter .
"sinus-in / sinus-uit"
Gelijkenis? Welke?
De bewerking pow5(sin(x)) is een niet-lineaire bewerking. Daardoor verwijder je geen harmonischen, maar voegt ze juist toe!
Schoolboek-DSP begint met uit te leggen dat dit dus nooit en te nimmer een filterbewerking kan zijn, want een filter is een puur lineaire bewerking (de sinus is een eigenfunctie van elke filterbewerking: zoals ze in de audio-studio plegen te zeggen: in een filter is het "sinus-in sinus-uit"-beginsel van toepassing).
 
De Novation Nova, AN1x, Audjoo Helix e.d. hebben ook zo iets - voor de daadwerkelijke filter nog harmonischen verwijderen, maar volgens mij werken die met een soort FFT-trucje.
Aan welke signaalbewerking, afgezien van dat "daadwerkelijke" filter dan, denk je bij dat "harmonischen verwijderen"? Wat bedoel je met een "soort FFT-trucje"? De FFT is een filter!!
 
verzanden...

verzanden...

Veel discussies op het synthforum zijn gedoemd om te verzanden...
Hoe zou dat toch komen ?

WaveGuide7, dan mag je er al veel van kennen, daar twijfelt elk 'niet-kenner' nog aan. Dat je daardoor in staat bent om het aan 'niet-kenners' uit te leggen, is weer een heel andere zaak. Eigenlijk jou zaak, zoals je hier vermeld. Toch, veelvuldig laat je horen dat is gewoon 'Schoolboek-DSP'... dan weer is wiskunde de enig mogelijke zinvolle taal in de natuurwetenschappen... (en de kleur wit, een natuurproduct dat enkel bestaat uit rood, groen en blauw... :stupid). Wiskunde is blijkbaar de enige taal waarin jij nog kan en wil communiceren. Als DSP dan niet zonder wiskunde verklaard kan worden, zul je dit toch nog in 'een niet zinvolle taal' moeten meedelen. Mogelijk verzand de topic dan niet en tref je enkel gelijkgezinde.
Als dat is wat je wil ?

... in Audio-DSP gelden de volgende stellingen:
(1) een differentievergelijking is niets anders dan een korte, slimme beschrijving van een echo-effect.
Dan toch eerst nog de domme beschrijving van een echo-effect.
... in de ervaringswereld van Jan Modaal en z'n grootmoeder gelden de volgende stellingen:
Een echo-effect is het al of niet herhaaldelijk weerklinken van een geluid, nadat de klankbron is opgehouden met het geluid voort te brengen. Nagalm is vergelijkbaar maar wordt reeds opgewekt voordat de klankbron is opgehouden met geluid voort te brengen. Iedereen herkent deze omschrijvingen ook zonder enige kennis van DSP !
Om een echo-effect digitaal te simuleren heb je een grote geheugenplaats nodig, een lus van uitgang naar ingang (feedbackloop) en een filter om de demping, die in natuurlijke omstandigheden ontstaat, na te bootsen. Nu is in dit digitale proces het enige DSP verschijnsel die filtering (hoewel dit alles ook analoog kan uitgevoerd worden) ! De rest is niet meer dan die meeneem-Chinees die papiertjes doet doorsturen (naar de keukenchinees = de filter of dsp).

(2) een echo-effect is altijd tevens een filter-effect. En omgekeerd: een filter-effect is onmogelijk zonder echo-effect.
Ja, en een differentievergelijking is helemaal geen echo-effect vandaar de naam 'differentie of verschillend'.
Het slaat (ook) op niets maar klinkt beter.

Als we dat goed scherp kunnen krijgen in deze draad hebben we de kern van de DSP-theorie helemaal te pakken!
Ik heb hierboven geprobeerd iets terug scherp te krijgen wat je helemaal onscherp maakte.
En toch, denk ik te begrijpen wat je bedoeld...

Zonder enige formule te hoeven gebruiken kan ik aan elke muzikant uitleggen hoe FM werkt (DX7 etc.) en die persoon leren hoe hij/zij zelf klanken kan maken op die toestellen, en niet enkel met twee operators, maar met alle zes in elke opstelling (algoritme) !

Iets uitleggen doe je vertrekkend vanuit de kennis of visie van 'het slachtoffer'...
Als die mens altijd op droog zand heeft gezeten, moet je niet beginnen met waterboarding, hé. :smeris:
Zoiets bouw je op...
 
Zonder enige formule te hoeven gebruiken kan ik aan elke muzikant uitleggen hoe FM werkt (DX7 etc.) en die persoon leren hoe hij/zij zelf klanken kan maken op die toestellen, en niet enkel met twee operators, maar met alle zes in elke opstelling (algoritme) !

En dat is net de kern van de zaak. Iemand kan intuitief leren om met FM te werken, maar wil hij weten welke harmonischen er toegevoegd worden, zal hij een paar (simpele: enkel plus en min) wiskundige berekenigen moeten maken, wil hij weten waarom, dan zal hij Bessel functies moeten beheersen.
Om verder met de FM analogie tegaan: hoe leg je phase modulatie uit, zonder de basisformule van een sinusoide te kennen. Ik heb in deze thread bijv. nog geen uitleg gezien van het Z-1 (feedback) principe.

Hierbij wil ik voorstellen om het (ondertussen freeware programma) SyncModular te gebruiken om voorbeelden te geven. Dit zou het makkelijker maken om de concepten te tonen en kan misschien een brug zijn naar Waveguide's programma en mathematische aanpak?

Een ander punt is het gebruik van DSP schema's om formules voor te stellen.

Dus, inderdaad, de formule S2[n] = C*S1[n] + A*S2[n-1] + B*S2[n-2]

Persoonlijk vind ik de visualisatie (van bovenstaande formule bv) in het begin zeer belangrijk, en als je dan de stap kunt zetten van de visualisatie naar de formule en de bijbehorende achtergrond, ben je al een heel eind op weg.

Allicht, van de massa's boeken over DSP ben ik er nog geen enkele tegengekomen waarin men niet met differentialen of integralen begint te worstelen.
Zolang dit op geen eenvoudiger manier kan uitgelegd worden, zal dit onderwerp een niche product blijven. Dat is blijkbaar niet jou bedoeling WaveGuide7 en tot hiertoe vind ik jou werk daarrond ook reeds het best geslaagde resultaat.

Als je niet de moeite wilt doen om deze wiskunde te leren, zal dit inderdaad een niche-markt voor jou blijven. Zie mijn vorige opmerking. Je kan er tot op een bepaald nivo intuitief mee omgaan, maar wil je verder, dan kost het moeite. (disclaimer: niet dat ik al zover ben, maar mocht ik tijd hebben, oh ja:))
 
Laatst gewijzigd:
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:P 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:halleluja

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 :):geslaagd::mexico:8o)
 

Attachments

  • violin_waveform.gif
    violin_waveform.gif
    5,1 KB · Bekeken: 181
jugjug:
Ik heb in deze thread bijv. nog geen uitleg gezien van het Z-1 (feedback) principe.
Je bedoelt de delay-operator in de Z-domeinbeschrijving van een systeem. Zie het door jouzelf aangeprezen boek van Steiglitz: A Digital Signal Processing Primer, H4.5 "delay as an operator" pag. 69.
Je kunt in deze draad natuurlijk altijd wat meer specifieke vragen daarover stellen.
jugjug:
Persoonlijk vind ik de visualisatie (van bovenstaande formule bv) in het begin zeer belangrijk, en als je dan de stap kunt zetten van de visualisatie naar de formule en de bijbehorende achtergrond, ben je al een heel eind op weg.
Zelfde boek H5.4 "resons" geeft hiervan een analyse; de visualisatie kun je gemakkelijk afleiden uit Fig. 1.1 van de eerste paragraaf van dat hoofdstuk, pag 81.

@zmooc: ik zie je bericht net pas staan. Nog niet gelezen!
 
@zmooc: ik zie je bericht net pas staan. Nog niet gelezen!

Ok. Ik ben benieuwd wat je van mijn uitleg vindt, ik heb het hier ook maar ter plekke met een kotsend kind op schoot uit mijn mouw geschud:P
 
Het opmerkelijke van DSP is dat er, als het puur gaat om discrete, "gesampelde" signalen gaat, niet één differentiaal in voor komt!! Van differentialen en differentiaalvergelijkingen is louter sprake bij continue signalen en systemen. Bij DSP gaat het voornamelijk om differenties en differentievergelijkingen.
Zoals al eerder opgemerkt (bericht #5) gaapt er een diepe kloof tussen "analoog" en "digitaal" (we spreken liever, of beter, over "discreet" en "continu"). En die kloof is een van de belangrijke onderwerpen in de DSP-theorie, maar je hoeft daar bij een eerste kennismaking niet wakker van te liggen.
Differentiaal- en integraalvergelijkingen zijn helemaal niet zo verschillend van differenties en differentievergelijkingen: (voorkomens van) de laatste kun je vaak prima zien als gediscretiseerde versies van (voorkomens van) de eerste. Soms is de gediscretiseerde versie makkelijker om mee te werken, m.n. als je moet gaan rekenen, maar soms is de continue versie makkelijker om mee te werken en dat zal meestal de reden zijn dat ze in die DSP-boeken voorkomen.

Die diepe kloof is dus helemaal niet zo diep en wordt overbrugd door bijv. fouttermanalyse die ook nog 'ns heel mooi uitlegt waarom zaken in het discrete domein anders werken dan in het continue. Hoe je het ook went of keert: je begint met een continue signaal, dat vervolgens gesampled wordt (discretisatie-slag) en waar vervolgens een DSP-algorithme overheen gehaald wordt, voordat het weer een continu signaal van gemaakt wordt. Je hele doel is dus een continu signaal en die discretisatie doe je vooral om hele praktische redenen. Het is dus handig om het continue karakter in de gaten te houden.
 
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:halleluja

Dit is echt complete onzin: het is eerstejaarsstof in de studie Wiskunde om die identiteit af te leiden :stupid Euler is trouwens allang dood.
 
Dit is echt complete onzin: het is eerstejaarsstof in de studie Wiskunde om die identiteit af te leiden :stupid Euler is trouwens allang dood.

Ik bedoelde ook niet dat de formule moeilijk is af te leiden. Wat wel moeilijk is, is doorgronden wat ie betekent; wat is het verband tussen pi, e en i? Volgens mij is dat nog altijd een groot raadsel. Maar mochten we daar inmiddels achter zijn, dan zie ik je uitleg graag tegemoet:)

Ene Benjamin Peirce zei ooit: It is absolutely paradoxical; we cannot understand it, and we don't know what it means, but we have proved it, and therefore we know it must be the truth.

Maar die is ook allang dood:mexico:
 
Laatst gewijzigd:
reactie (1) op zmoocs DSP-in-vogelvlucht

reactie (1) op zmoocs DSP-in-vogelvlucht

Wat is DSP nu eigenlijk precies?
(...)

Je enthousiaste verhaal werkt aanstekelijk, zmooc! :halleluja
En je snijdt nogal wat aan!

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.

recursieve en niet-recursieve filters
Met dat laatste: "Maar de formule blijft in feite hetzelfde." suggereer je dat de werking van een filter wordt beschreven door slechts één type formule en dat suggereert dan weer dat er, in principe, slechts één type filter bestaat. Maar dat is niet het geval. Er bestaan twee soorten filters: recursieve en niet-recursieve. Van beide typen hebben we inmiddels al een voorbeeld gezien.

(1) Het reso-filter:
S2[n] = C*S1[n] + A*S2[n-1] + B*S2[n-2]
is een recursief filter.

(2) Jouw voorbeeld:
output = 0.33*inputsample + 0.33*vorige_inputsample + 0.33*inputsample_daarvoor
is een niet-recursief filter.

Beide typen hebben heel kenmerkende verschillen.

IIR en FIR
Het belangrijkste verschil: een recursief filter kenmerkt zich (zoals het woord al min of meer aangeeft) door een oneindig lange uitklinktijd. Dat wil zeggen: als je op de input van een recursief filter een enkele puls zet, dan zal de output tot in lengte van dagen samples blijven produceren waarvan de (absolute) waarden groter dan nul zijn. Vandaar de meest gebruikte DSP-benaming voor dit type: IIR: (Infinite Impulse Response).
Een niet-recursief filter daarentegen is dan een FIR-filter: Finite Impulse Response. Als je een puls op de input van een FIR-filter zet, dan zal de output op zeker moment abrupt en definitief stoppen - d.w.z. samples gaan genereren die allemaal amplitude 0 hebben.
Een voorbeeld van een akoestisch FIR-filter is een echo tegen een bosrand.
Een voorbeeld van een akoestisch IIR-filter is het "eeuwige" reflectiepatroon in een trappenhuis. Dat de reflecties daarbij steeds zachter worden (uitdempen) doet niets af aan de oneindigheid ervan.

resonanties en anti-resonanties
Met resursieve filters kun je resonanties (pieken in het spectrum) maken, met niet-recursieve kan dat alleen met afgrijselijk veel rekenwerk. Dat is wat Steiglitz bedoelt als hij zegt: "IIR gives you more bang for the buck". Dit is het type filter dat je doorgaans in synth's tegenkomt, maar ook in delay-feedbacklijnen.
Anderzijds kun je met niet-recursieve filters weer heel gemakkelijk "anti-resonanties" (dips in het spectrum, zie figuur) maken, die met resursieve filters onmogelijk zijn. Daarom zijn FIR's nodig als je bepaalde spectraallijnen helemaal wilt wegknijpen, wat IIR niet kan. Bijv. de Fourieranalyse in discrete vorm (DFT) is te beschrijven als een gespecialiseerd FIR filter (kwadratuurfilter-bank). (De Fourieranalyse is een berekening die alle harmonischen van een gegeven periodieke trilling op één na elimineert; van die ene overgebleven harmonische boventoon weet je dan de sterkte en de fase).


Hoe herken je IIR en FIR aan hun formules?
Bij IIR vind je rechts van het =-teken naast vorige inputs ook vorige outputs. Bij FIR daarentegen vind je alleen maar inputsamples.

IIR-(on)stabiliteit
een ander heel belangrijk praktisch punt is dat IIR-filters onstabiel kunnen zijn. Bij een onstabiel filter neemt de output exponentieel in amplitude toe. Bij audio-toepassingen (en de meeste andere toepassingen) moeten IIR-filter stabiel zijn. En dat kun je, afgezien van het allereenvoudigste (1ste orde) filter niet onmiddellijk zien aan de filtercoëfficiënten! Daarvoor moet een analyse plaats vinden die bekend staat als de Z-transformatie. Daarmee kun je de zg. polen en nulpunten van een filter berekenen. De poolposities vertellen of een IIR-filter al dan niet stabiel, en dus bruikbaar is. Je bent die term pool vast wel eens tegengekomen in de specificatie van een filter. Daarover later meer.

verder lezen
Meer over IIR en FIR lees je in Sound Design H3.
 
Helaas is het verband tussen filtercoëfficiënten en het gedrag van een filter heel moeilijk te doorgronden

In Sound Design H4 wordt het filtergedrag van het door jou genoemde filter
output = 0.5*input + 0.5*vorige_input
wiskundig afgeleid. De tekst is bedoeld voor leerlingen van VWO 5. Dus in elk geval voor een eenvoudig filter is dat geen enkel probleem. De analyse van filters van hogere orde maak je gebruik van de Z-transformatie. Die vraagt inderdaad om wat meer theoretische achtergrond dan die van de middelbare school.

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

Is DSP een vorm van nieuwerwetse mystiek?
Ik ben bang dat je hiermee een beetje de indruk wekt dat de signaalverwerkingstheorie zich op hetzelfde speculatieve niveau zou bevinden als bijvoorbeeld de snaartheorie in de huidige zoektocht naar de Heilige Graal van de natuurkunde: de theorie-van-alles.
Maar de Z-transformatie is toch echt niets meer dan hapklare, koel geserveerde eerstejaars stof voor alle studierichtingen die DSP in het curriculum hebben, zie Meinte37 hierboven.

Over een decennium kun je met dat kindje dat nu nog "kotsend op je schoot zit" geen fatsoenlijke conversatie meer voeren als je de Z-transformatie niet tot in de puntjes beheerst - mark my words! ;)

Tot zover even. Het belangrijkste van je DSP-vogelvluchtverhaal heb ik nog niet besproken: de betekenis van de FFT (of liever: de DFT) ib de filtertheorie. Misschien morgen.
:walker:
 
Laatst gewijzigd:
Ik ben bang dat je hiermee een beetje de indruk wekt dat de signaalverwerkingstheorie zich op hetzelfde speculatieve niveau zou bevinden als bijvoorbeeld de snaartheorie in de huidige zoektocht naar de Heilige Graal van de natuurkunde: de theorie-van-alles.

Um. Het is wiskunde, daar is per definitie niks speculatiefs aan:P
 
Back
Top