that was actually a really good example thank you very much. I was looking for an actual audio sample example of a fir filter and from what I understand you basically made a subwoofer crossover or it will for crossover correct? FIR vs IIR should be pretty simple to understand in layman's terms but so far I haven't been able to really grasp it since I haven't really heard anybody who doesn't or who couldn't possibly want a rocket ship in the space actually explain it. this is really my own shortcomings but it sure would be cool if I could one day wrap my head around the real differences of it since so far what I understand is that from an audio perspective each realtor has its strengths and weaknesses in different bands for example a f i r filter is actually more accurate in the higher Faith Francie's but can produce a type of ringing that you don't get when you use an IIR filter in the lower frequencies . you know I know what good sound sounds like and I know what I like to listen to but I sure would love to know more about the science behind it. I can understand why people stick to analog crossovers but even then I still have a little bit of trouble understanding the differences between Castle Chevy Chase and Link with Riley
Hello! I have a question please, after I upload the audio signal into the STM32, how exactly do I filter it? how do I link the two codes: the uploading of the audio code and the IIR filtre code??
Hi, does STM32 cortex M4 or M7 capable of implementing the DSP based audio equalizer (stereo in stereo out)? How can filter banks be implemented and what type of EQUALIZER suitable with this hardware setup (graphic or parametric)?
Hi there, first of all thank you very much for the very instructive video series von DSP topics. I just recently started to develop an interest for digital signal processing and your videos are very clear and not to flashy and hectic to desperately gain more subscribers. Do you think a stm32 is powerful enough to be used for implementing e.g. a stomp box type impulse response loader acting as a cabinet simulator (the planned impulse response length would be approx. 20ms, the audio signal would be a 48kHz mono signal). Cheers
Ok, I was about asking the exact same thing in a comment and then I noticed yours. Did you make any progress on this? I'm planning to build a IR loader too for embedding it in an (analog) guitar amplifier I'm building (or using it as a stompbox while playing using headphones). I'd be very interested in knowing about that, I'm quite new with embedded systems but I took some signal processing courses..
@@amimaster I will use a teensy board 4.0..thats a pretty powerful board using a cortex m7 soc, it's cheap and can be programmed in the Arduino IDE. hope this helps you
Hello, I adapted your code for ESP32 and tried to use more than 180 taps (impulse response guitar cabinet), the sound dissipates more noticeably, the higher the value. Not enough processing power? Have you tried over 180 taps?
Hello,is there any chance you could help me with some advice in a project related to filtering audio with a ESP32. This work can be paid, let me know if you are interested!
Hello There I was wondering if there is a way to generate the IIR or even FIR filter Coefficients dynamically in run time on STM32 ? did you try something like this before ?
@@YetAnotherElectronicsChannel you said in video that it is not possible to achieve of course 500 tabs using FIR with STM I am trying to build a graphical audio EQ using STM using 80MHz. 1-So which filter shall I use FIR or IIR ? (I know IIR will do phase shift but I can't calculate 500 tabs using STM , Can I !!) 2- if I decide fixed freq bands and want just to manipulate gain of each freq band, shall I store only each band coefficients and just multiply each band filtered output by a gain or shall I have Coeff. for every gain in the band stored in ROM?
Hanna Nabil something like this is realized normally with IIR filters. And all the filters are working in series. Well the frequency and the width of the filters are fixed but the gain is variable. So for every gain change u have to recalculate all the IIR parameters for that specific filter block
Hanna Nabil mainly because of the long group delay of FIR. The FIR taps get more the lower the frequency you want to process. Worst case u would have to deal with thousands of tabs leading to couple of hundred ms of delay
Wow, your videos are very informative and well presented- well done!!! In your FIR filter you mentioned that if I want to get better understanding about the calculation itself of the Calc_FIR function (in particularly to the "firptr" array pointers), I can use the "How it works" file in the github channel- I didn’t' find it... can you add link to the file location? (I'm kind of new in STM32…). Thank you very much (for all the videos).
Hi, just have a look into the video-description. There I have shared the link to my github repository. There is a .zip package which is actually the complete STM32 code-project and then just open the main.c file :)
Let's see if I'm getting things right. At 48k/24b sampling, new sample will arrive every 20.8us. For F407 at 168MHz single cycle is ~6ns. Based on the C code given at t-filter.engineerjs.com/ my estimation is some 6 cycles per tap are needed (but could be wrong). That gives ~36ns per tap and max ~570 taps for real time execution if there is nothing else on mcu, just dsp and eventually volume control. So 2x~200 taps or 4x~130 taps filters could fit in this mcu regarding processing power, but not accounting for dma transfer. I'd like to know if my math regarding mcu load is correct. I also do not know will 192k SRAM will be enough (really 64k CCM), or could FPU and/or DPS instructions help in increased filter quality or reducing mcu load. Nice channel btw, You're doing a great work here.
4 роки тому
For memory requirements it would be (#taps +1)*sizeof(int) bits? So for 570 taps that is 18272 b (2284 B)?
such a useful video. Explaining the basics of IIR from scratch! lovely.
Thanks for your video, It's very useful.
Great ✌️, end of the best 👍
that was actually a really good example thank you very much. I was looking for an actual audio sample example of a fir filter and from what I understand you basically made a subwoofer crossover or it will for crossover correct?
FIR vs IIR should be pretty simple to understand in layman's terms but so far I haven't been able to really grasp it since I haven't really heard anybody who doesn't or who couldn't possibly want a rocket ship in the space actually explain it.
this is really my own shortcomings but it sure would be cool if I could one day wrap my head around the real differences of it since so far what I understand is that from an audio perspective each realtor has its strengths and weaknesses in different bands for example a f i r filter is actually more accurate in the higher Faith Francie's but can produce a type of ringing that you don't get when you use an IIR filter in the lower frequencies .
you know I know what good sound sounds like and I know what I like to listen to but I sure would love to know more about the science behind it. I can understand why people stick to analog crossovers but even then I still have a little bit of trouble understanding the differences between Castle Chevy Chase and Link with Riley
Hello! I have a question please, after I upload the audio signal into the STM32, how exactly do I filter it? how do I link the two codes: the uploading of the audio code and the IIR filtre code??
Hi, does STM32 cortex M4 or M7 capable of implementing the DSP based audio equalizer (stereo in stereo out)? How can filter banks be implemented and what type of EQUALIZER suitable with this hardware setup (graphic or parametric)?
Hi there, first of all thank you very much for the very instructive video series von DSP topics. I just recently started to develop an interest for digital signal processing and your videos are very clear and not to flashy and hectic to desperately gain more subscribers.
Do you think a stm32 is powerful enough to be used for implementing e.g. a stomp box type impulse response loader acting as a cabinet simulator (the planned impulse response length would be approx. 20ms, the audio signal would be a 48kHz mono signal).
Cheers
Ok, I was about asking the exact same thing in a comment and then I noticed yours. Did you make any progress on this? I'm planning to build a IR loader too for embedding it in an (analog) guitar amplifier I'm building (or using it as a stompbox while playing using headphones). I'd be very interested in knowing about that, I'm quite new with embedded systems but I took some signal processing courses..
@@amimaster I will use a teensy board 4.0..thats a pretty powerful board using a cortex m7 soc, it's cheap and can be programmed in the Arduino IDE. hope this helps you
@@matrud_bass I will look into it. Thanks a lot!
Hello, I adapted your code for ESP32 and tried to use more than 180 taps (impulse response guitar cabinet), the sound dissipates more noticeably, the higher the value. Not enough processing power? Have you tried over 180 taps?
Great job!
Wow, Such an amazing video, thank you so much, it helps me alot,
by the way can we control the volume of an audio digitally?
Hello,is there any chance you could help me with some advice in a project related to filtering audio with a ESP32. This work can be paid, let me know if you are interested!
Hello There
I was wondering if there is a way to generate the IIR or even FIR filter Coefficients dynamically in run time on STM32 ?
did you try something like this before ?
Yes is possible - see the formulas in hereraw.githubusercontent.com/shepazu/Audio-EQ-Cookbook/master/Audio-EQ-Cookbook.txt
@@YetAnotherElectronicsChannel you said in video that it is not possible to achieve of course 500 tabs using FIR with STM
I am trying to build a graphical audio EQ using STM using 80MHz.
1-So which filter shall I use FIR or IIR ? (I know IIR will do phase shift but I can't calculate 500 tabs using STM , Can I !!)
2- if I decide fixed freq bands and want just to manipulate gain of each freq band, shall I store only each band coefficients and just multiply each band filtered output by a gain
or shall I have Coeff. for every gain in the band stored in ROM?
Hanna Nabil something like this is realized normally with IIR filters. And all the filters are working in series.
Well the frequency and the width of the filters are fixed but the gain is variable. So for every gain change u have to recalculate all the IIR parameters for that specific filter block
@@YetAnotherElectronicsChannel so using the IIR due to hard processing of FIR
Or Just it is more related to Graphical EQ
Hanna Nabil mainly because of the long group delay of FIR. The FIR taps get more the lower the frequency you want to process. Worst case u would have to deal with thousands of tabs leading to couple of hundred ms of delay
Wow, your videos are very informative and well presented- well done!!!
In your FIR filter you mentioned that if I want to get better understanding about the calculation itself of the Calc_FIR function (in particularly to the "firptr" array pointers), I can use the "How it works" file in the github channel- I didn’t' find it... can you add link to the file location? (I'm kind of new in STM32…).
Thank you very much (for all the videos).
Hi, just have a look into the video-description. There I have shared the link to my github repository. There is a .zip package which is actually the complete STM32 code-project and then just open the main.c file :)
You are the man
Any chance you know anything about granular dsp. Such as how to implement the sample window and pitch shifting?
At least about pitch-shifting I did already a video. Check out my video overview of my channel!
@@YetAnotherElectronicsChannel My bad cheers buddy! Keep it up, really great content here.
ty for the grat content
Big like..!
Let's see if I'm getting things right.
At 48k/24b sampling, new sample will arrive every 20.8us. For F407 at 168MHz single cycle is ~6ns. Based on the C code given at t-filter.engineerjs.com/ my estimation is some 6 cycles per tap are needed (but could be wrong). That gives ~36ns per tap and max ~570 taps for real time execution if there is nothing else on mcu, just dsp and eventually volume control. So 2x~200 taps or 4x~130 taps filters could fit in this mcu regarding processing power, but not accounting for dma transfer.
I'd like to know if my math regarding mcu load is correct. I also do not know will 192k SRAM will be enough (really 64k CCM), or could FPU and/or DPS instructions help in increased filter quality or reducing mcu load.
Nice channel btw, You're doing a great work here.
For memory requirements it would be (#taps +1)*sizeof(int) bits? So for 570 taps that is 18272 b (2284 B)?