5 ms·
Digital sound processing tutorial
- W0lf 6y agoI did develop a proof-of-concept for a client recently which involved some digital sound processing on mobile devices and used this[1] book as a reference to refresh some (advanced) basics again. Can recommend this to anybody who is interested in digital signal processing as I really liked the style and density in this book [1] Discrete-Time Signal Processing: Pearson New International Edition
- crshults 6y agoCrazy. I was just shopping for this book last night but got hung up on different editions. This one[1] also claims to be the 3rd Edition but looks to have an early publish date. I guess go with whatever's newest? [1] Discrete-Time Signal Processing (Prentice-Hall Signal Processing Series) 3rd Edition
- ExcavateGrandMa 6y agolooks like entirely written in a text mode! Epic!
- jcims 6y agoFor what it's worth, most of these concepts directly map to radio as well.
- willis936 6y agoThis is off topic but I’m assuming difficult-to-gather DSP peers will be in this comments section. I have run into the limit of double precision floating point when making high order (20+) IIR filters in MATLAB. My solution in the past has been FIR filters and waiting a long time. I recently experimented with alternative forms of IIR representation. I found that converting from transfer function (B,A) to zero-pole-gain (z,p,k) form, then to second order sections (sos,g) form, then using the MATLAB filter function, the issues with double floating point precision go away in my use cases. Is this a well known trick that I just stumbled upon?
- mtb2718 6y agoThis is a well known trick. See “Filter Realization” section here: https://en.m.wikipedia.org/wiki/Digital_filter https://en.m.wikipedia.org/wiki/Digital_filter High-order polynomials are very sensitive to small deltas in the coefficients of their high-order terms. Representing the same function as the product of low-order factors is much more stable numerically.
- colanderman 6y agoYes, second-order/biquad sections are less sensitive to coefficient quantization than high-order filters. I think they benefit from interleaving zero+pole stages as well. You can even ask MATLAB to generate the (z,p,k) form directly rather than (b,a) form when using its filter-design functions, saving a step (just ask for a three-argument result instead of a two-argument result). (I am not an expert but I just so happened to have run across this feature and explanation last week, after vaguely remembering from college that biquad sections are "better" for some reason.)
- qppo 6y agoMatlab has a helper function for this exactly, tf2sos. It's also covered in most applied DSP texts.
- mikewarot 6y agoI'm no DSP expert, but I did run into a problem in GNU Radio which I think applies because it happens to floating point numbers in general. GNU radio has a component called "DC Block" which has a length of N samples... it averages those samples, and subtracts that average from the input... giving an output. If you exceed the dynamic range of floating point by mixing inputs of lets say 1e12 and 1e-12... the filter can develop a permanent output bias. The reason is performance... the samples are stored in a ring buffer, and they subtract the value when it leaves the buffer, and add the new value as it goes it. This is N times faster than adding up all the values, and subtracting. However... this bug can happen. I suspect you have similar behavior occurring due to the smaller coefficients at the tails of the function. That's my 2cents, I hope it made sense, and helps explain what you've encountered.
- leafac 6y agoShameless self-promotion: I’ve been in a similar journey of learning DSP and I’ve been sharing my findings as well: https://youtube.com/channel/UC_R-6HcHW5V9_FlZe30tnGA https://youtube.com/channel/UC_R-6HcHW5V9_FlZe30tnGA
- lapinot 6y agoFor any newcomer looking for reference material on this topic, look at https://ccrma.stanford.edu/~jos/filters/ https://ccrma.stanford.edu/~jos/filters/ and his other books which are quite thorough.
- mikewarot 6y agoIf you're interested in this topic, and want to play. I highly recommend GNU Radio. It lets you build flowcharts that can actually do I/O with your soundcard, as well as File I/O, etc.
- cunidev 6y agoMissed this comment, but will surely do! Still quite inexperienced with it, yet this tutorial looked quite well done