Wow, this got me a little confused. I certainly will have to take the lesson some more times to grab the whole thing. There's a lot of information here. I'll dive in it. Thanks!
Amazing lecture, Andrew! I always wanted a starter guide to DSP filters. You taught exactly what I wanted to know. 4 pole and 2 pole filters mean the order N of the IIR filter? Now I want to get deeper into these Z-transforms, want to learn how to find from the frequency-response equation what kind of filter it is... The bug bit. Thank you!
I am really enjoying this series of videos, thanks Andrew and the Bela team. Would Bela be suitable for implementing background noise removal from a voice recording, using a second microphone further from the speaker to sense ambient noise?
can someone explain to me why his input is: "float in = 0.5 * gPlayer.process()" and not just a audioRead(context, n, ch), line 87 at 26:58, is it as a result of changing the stereo to mono to process the data?
Q values higher than 0.707 may increase the peak value of the signal. By reducing its amplitude before processing it through the filter you reduce the chance of the signal clipping. An alternative option would be to use a limiter after the filter.
I sat here for a while wondering why my program wouldnt output sound, then I tried changing the equation where you add the coefficients for ak*y[n-k] to -(ak*y[n-k])... it made all the difference sadly. Why? I don't understand why it would make nothing come out.
This is a common point of confusion with IIR filters, because there are two different mathematical conventions for specifying the coefficients. Depending on how the equations were defined, sometimes they are added, sometimes they are subtracted. Pragmatically, just try it both ways! If it's wrong, then the filter becomes unstable which means that the value will quickly spiral off to infinity, which is why you don't hear anything.
@@apm414 Then that is exactly why I didn't hear anything. I figured it was something of the sort, and I should of suspected that.I suppose I often forget that this program is doing many thousands of operations before I even know it's begun. Thanks for the response :]
Best explanation I have ever found. Thanks!
Thanks, that's tremendously helpful! Finally understood how to translate filters math from textbooks to practical applications.
Wow, this got me a little confused. I certainly will have to take the lesson some more times to grab the whole thing. There's a lot of information here. I'll dive in it. Thanks!
Amazing lecture, Andrew! I always wanted a starter guide to DSP filters. You taught exactly what I wanted to know. 4 pole and 2 pole filters mean the order N of the IIR filter? Now I want to get deeper into these Z-transforms, want to learn how to find from the frequency-response equation what kind of filter it is... The bug bit. Thank you!
Thank you for these, incredibly helpful.
I am really enjoying this series of videos, thanks Andrew and the Bela team. Would Bela be suitable for implementing background noise removal from a voice recording, using a second microphone further from the speaker to sense ambient noise?
can someone explain to me why his input is: "float in = 0.5 * gPlayer.process()" and not just a audioRead(context, n, ch), line 87 at 26:58, is it as a result of changing the stereo to mono to process the data?
Q values higher than 0.707 may increase the peak value of the signal. By reducing its amplitude before processing it through the filter you reduce the chance of the signal clipping. An alternative option would be to use a limiter after the filter.
very nice and very clear but just wonder if you can do this easily with a mic input signal in real time with little latency.
yes, definitely; latency is typically 1.5ms but can go below 1ms.
just use audioRead() instead of reading from the file
I sat here for a while wondering why my program wouldnt output sound, then I tried changing the equation where you add the coefficients for ak*y[n-k] to -(ak*y[n-k])... it made all the difference sadly. Why? I don't understand why it would make nothing come out.
This is a common point of confusion with IIR filters, because there are two different mathematical conventions for specifying the coefficients. Depending on how the equations were defined, sometimes they are added, sometimes they are subtracted. Pragmatically, just try it both ways! If it's wrong, then the filter becomes unstable which means that the value will quickly spiral off to infinity, which is why you don't hear anything.
@@apm414 Then that is exactly why I didn't hear anything. I figured it was something of the sort, and I should of suspected that.I suppose I often forget that this program is doing many thousands of operations before I even know it's begun. Thanks for the response :]