Комментарии:
USE BROADER GRAPH LINES FOR US TO SEE THE COLORS.
ОтветитьSo if we put 2 LowPass filters behind each other we can make a 2nd degree low pass filter? And then if we combine a low pass and high pass filter you can make a band pass filter?
ОтветитьIt would be nice to see a performance comparison of the two representations of the equation:
1. y_n = alpha * x_n + ( 1 - alpha ) * y_n-1
2. y_n = y_n-1 + alpha * ( x_n - y_n-1 )
Because the first equation uses two multiplication operations and one summation, but the second equation uses one multiplication operation and two summations.
It would be nice if you could add this to your planned projects. Digital filter with stm32 that will work like MSEGQ7 ic and drive addressable led strips.
ОтветитьThanks! Could elaborate on higher order filters? What can we achive by going 2nd through 5th order? They are not hard to implement . If u can implent the 1st order then u can impent the 5th order as well. Can i get a really steap ripple-free high-pass filter by going a few orders higher? Thanks again
ОтветитьGreat video!
ОтветитьThanks you very much for detailed and focus video. Really cool! Best regards
Ответитьand now in assembly while using the dsp/simd commands of the cortex and storing the IFE_EMA in the TCM ;-)
ОтветитьDo you think EAGLE better than KiCAD?
ОтветитьIt has been pointed out to me that you don't need buffers, circular arrays, double buffering, DMA or even interrupts to process a realtime audio stream. I refused to believe it, but I tried it and... block reading and block writing 1 stereo sample at a time still leaves you PLENTY of time to process each sample through the filters. Zero latency. No sample rate conversion either, that happens automatically when you trigger off the cadence of the output. Also, the SAI blocks are worth looking into. They can be easily used as basic I2S interfaces as normal, but can do way more, including the support for 8 octet unblocking FIFO.
ОтветитьHi Phil, (this relates to all of your projects you design and make) I would like to know how you effectively document a project. From start to finish. What software do you use to actually do this? I see you do alot of work which is very impressive. Some projects, such as the xilinx one isn't straightforward. So how do you do project management so effectively.
ОтветитьI have used these filters for years in simple digital filtering applications. And this video treats the subject very well. The one thing I would disagree with is that these filters are bad at separating frequencies. They’re not, you just have to use them within the range of their effective capability.
For a low pass filter of this form, A = Fc/Fs where Fc the cutoff frequency and Fs is the sample frequency. BUT… the effective capability limit is that A <= 1/2pi, and the lower A the more faithful the response. The video focuses on A values close to zero and one, neither of which are particularly useful as practical filters, and values above 1/2pi, which are beyond the effective capability of the filter.
The filter is simple and effective, but the trade off for this simplicity is that you need a high sampling frequency compared to the cutoff frequency. Such a simple filter needs a lot of samples to work with. And if your application is capable of supporting that restriction, i.e. you can take at least 6.28 samples per filter time constant (and preferably plenty more than that), and you have sufficient math resolution (hence floating point) then it will do what you need.
Cool
ОтветитьGreat video! The technical aspect is well explained, but I was wandering how do the filter sound on common waveforms and a real world example.
ОтветитьHey Phil, great content as ever.
I would love to see a video that shows the usage of CORTEX-M4F DSP features.
using this feature with DMA would be very delicious for many applications(especially kalman filtering :)
I Phil good with these videos.
ОтветитьGreat video Phil, your hardware setup is really clean. It would interesting if you explored linear phase FIR filters. Those filters enable finer control over magnitude and phase response while offering constant group delay. Very important in many applications. A DSP board like yours could implement some reasonably long filters
ОтветитьHi Phil, great video as always. I noticed you defined a filter structure in section .audiobuffer. Is that section defined in a linker script? Would be interesting to see any linker script tutorial from you!
Ответитьgreat stuff. Nice to see an actual implementation in C , not just a bunch of theory. Can you show some higher order filters as well , maybe 2'nd and 3'rd order.
ОтветитьNever would have though I'd be implementing filters on stm32 for fun, thank you for the guide!
ОтветитьTks! can you show a tutorial on designing a board for the f1c100s/ f1c200s?
I think this SOC is a beast for its price
Could you make a video with the goertzel algorithm?
ОтветитьGreat content as always!
ОтветитьHi! As always excellent video. Is there a chance to show hot to use CMSIS DSP library on STM32?
ОтветитьHi Phil, as always your DSP videos are pure quality. Loving this content. Perhaps in future you could also do videos on Digital Control Systems. A lot of DSP theory overlaps with digital control.
ОтветитьI recently tried Platform IO to compile for ESP32 and it is so much faster than Arduino IDE.
ОтветитьNice vid as usual. One minor point though: it may be better to compute 1-alpha once and store it in the struct rather than compute it for every sample. Mind you, the compiler might do that optimisation for you anyway. It would be interesting to see the assembler code it produced.
ОтветитьThis makes me think of the filter I used to implement in flash games when I was a kid to smooth out motion. It worked out to something like Yₙ = Yₙ₋₁ + (Xₙ - Yₙ₋₁) * α. In practice it was current_position += (target_position - current_position) / how_sluggish_I_want_it_to_move because it was easier for me to visualise the motion increment as dividing up the line between current_position and target_position. Later I changed the last part to a multiply when I learn about how expensive division can be. Though in fixed-point, a lot of the time, the division does get optimised out. Don't use it for much these days except lazily removing zipper noise from level controls, but it's a handy one-liner nonetheless.
ОтветитьExcellent video and a filter I will use in my video, but I will probably dumb it down for my audience. I will be using an accelerometer for robotic balancing applications (spikes occur if there are abrupt vibrations, whether from abump, or from the vibration from a servo), but I was also thinking of using gyro and adding angular velocity (in some way) to improve the angle measurement. I will try the filtering first to see how well it works. I may need to use a filter that considers more samples as well. When I get to this video, I will make sure to mention this video so viewers can get more detail.
ОтветитьGreat as always mr.phil! Have you tried the SigmaDSP from analog devices?
ОтветитьPhil - nice video. A unique thing about alpha = 0.5 for the low pass case is that it can be solved with just shifting the input by one bit (divide by 2) and adding it to the previous solution shifted by one bit (divide by 2). This is math any low end micro can achieve.
ОтветитьGlad to find your channel! There seems to be incorrect sign at the Sigma operator on the high pass block diagram. According to the block diagram, it is x(z) + x(z-1).
ОтветитьIs this true that the alpha means a reduction ratio at a freq nykvist/2? I can see that alha 0.1 means -20dB at f/2, and alpha 0.5 means -6dB at the same freq.
ОтветитьI've started using STM32 from st32f401 (blackpill board). And its ADC upset me much, because even with noise very low noise levels on oscilloscope that thing gave me 6-7 stable bits out of 12bit mode. Some people said pcb design is bad, others that chip itself has pretty bad ADC. But nevertheless I started to search noise canceling technics and found pretty good method in AN4073 which is basically median filter + moving average filter. But I think it can be improved even more with EMA filter. Thanks.
ОтветитьGreat content, as always! I'd be interested in seeing how you set up double buffering with DMA on an STM32H7. It seems that folks have had problems with that in the past.
ОтветитьVery professional and clear. Thanks.
ОтветитьI found this low-pass filter in a flash game over 10yrs ago and have been using it everywhere since, it's so useful!
Although the one I found was in the form: smoothed += (raw - smoothed) / factor; // Where factor is 1 or more
Great 👍
ОтветитьGreat video as always! Would love to see an implementation of a Chorus effect. It utilizes LFO, delays, and can easily be switched between vibrato and chorus by changing the wet and dry mix.
Keep it up, Phil 👍
Awesome
ОтветитьBrill as always Phil, very clear explanation. Wish I had these when starting out.
I remember the aha moment when I "implemented" a moving average filter in excel (of all software..). But the cells helped me think of the z domain, and individual samples.
Pls make a video on quaternions
ОтветитьAwesome! I always love these digital filter videos and I'll have to really start doing some digital filter hardware design projects myself! Thank you for the great content as always! I just wanted to ask as well about the status of the advanced hardware design course, can't wait for it to come out. Thank you again Phil
ОтветитьCool, I ❤ your videos
ОтветитьThe H723 has a built-in FMAC, ever consider covering this as a topic? Many of these higher end units have these features and would be a great series to compare them to roll your own types.
Ответить👍🙏❤
ОтветитьThank You for Sharing !!
Ответить