Bilinear Transform For IIR Filter Design Explained Intuitively [AudioFX

Поделиться
HTML-код
  • Опубликовано: 12 сен 2024

Комментарии • 20

  • @WolfSoundAudio
    @WolfSoundAudio  2 года назад +3

    Have I helped you with this video? If yes, please, consider buying me a ☕ coffee at www.buymeacoffee.com/janwilczek
    Thanks! 🙂

  • @StefanRinger
    @StefanRinger 2 года назад +2

    Thanks for the flashbacks to the evenings in the kellermann dsp lecture. Wish you much success with this channel, Jan!

  • @velvetsound
    @velvetsound 2 года назад +1

    Thank you. Just watching it for the second time. I appreciate how quickly you got on it. Another coffee coming up!!

    • @WolfSoundAudio
      @WolfSoundAudio  2 года назад +1

      Thanks Jason, that means a lot to me! I'm happy that you found the video useful :)

  • @Pusga2
    @Pusga2 2 года назад +1

    Brilliant channel, this is great to watch along with reading The art of VA filter design for someone like me who's getting acquainted with the math

    • @WolfSoundAudio
      @WolfSoundAudio  2 года назад

      Great, I'm happy to hear that!

    • @WolfSoundAudio
      @WolfSoundAudio  2 года назад

      Have you seen my Ultimate Audio Plugin Developer Checklist? You can find it at TheWolfSound.com/checklist 🙂

    • @Pusga2
      @Pusga2 2 года назад +1

      @@WolfSoundAudio I subscribed to it. Hope there's good stuff :)

    • @WolfSoundAudio
      @WolfSoundAudio  2 года назад

      Oh, trust me, there is :) And more is coming!

  • @velvetsound
    @velvetsound 2 года назад +3

    Having watched a lot of your videos, and others from Phils Lab and Guitars.AI, I think what’s missing on RUclips are videos that go from theory, to math, to Z domain, to code in C/C++.
    Where everyone seems to stop is at the math and Z transform. Phils Lab has 1 video that covers an RC filter in C, but he cuts and pasted the code from a website. So it’s not complete from theory to working DSP code.

    • @WolfSoundAudio
      @WolfSoundAudio  2 года назад +3

      Hi Jason, thanks for the feedback! I really admire Phil's Lab so that's a nice comparison for me :) To fill the gap that you mention, I will be providing A to Z tutorials on filter design (including derivation and implementation). How does that sound? :)

    • @velvetsound
      @velvetsound 2 года назад +1

      That sounds awesome! I’m looking forward to it. The missing part has always converting it to C.
      Phil has 2 videos that do that but that’s all I’ve found online across RUclips and Udemy.
      The other gap I’ve noticed is modeling analog circuits from theory to math to code. Most examples only cover simple RC circuits and stop there.

    • @WolfSoundAudio
      @WolfSoundAudio  2 года назад +1

      @@velvetsound thanks for the feedback. Virtual Analog modeling is my favorite field of audio research ;) But I can't promise the videos on it soon. If you have any specific questions, maybe you can contact me personally?

  • @v1n3g4r7
    @v1n3g4r7 11 месяцев назад +1

    Nice video, thanks! I have one question though - why do we need to use the bilinear mapping instead of just using the mapping z = e^sT or s = (log z) / T ?

    • @finnheijink8152
      @finnheijink8152 11 месяцев назад +2

      If I would have to guess: you would get very nasty z-transforms which would be very hard to create using digital hardware, how would you even go about defining the order of a function of log(z)? Using the bilinear transform gives you the property that filter order and that stability remains, and while you do get some frequency warping (high omega scales a lot quicker than low omega, think of the relation omega_a ~ tan(omega_d) indicating that omega_a -> infinity means omega_d = pi) you can counteract this by transforming the frequencies between the domains and design it in this way. I am not really that experienced in the field of filter design but I hope this helps.

    • @finnheijink8152
      @finnheijink8152 11 месяцев назад +3

      @v1n3g4r7 in addition, the first order Padé approximant of a logarithm is the bilinear transform, so your intuition is correct!

    • @v1n3g4r7
      @v1n3g4r7 11 месяцев назад +1

      @@finnheijink8152 thanks mate!

    • @v1n3g4r7
      @v1n3g4r7 11 месяцев назад +1

      If anyone is curious I came up with an explanation that makes sense to me.
      A digital signal can be interpreted as a continuous signal with impulses at integer multiples of the sampling period. In this sense, replacing z=e^sT is basically equivalent to interpreting the continuous filter as a digital filter. But this is only possible if the continuous filter has an impulse response that is an impulse train with a frequency equal to the sampling frequency. In other words, you cannot use the mapping z=e^sT unless your continuous signal is already sampled!
      Therefore, in order to use this mapping, you need to first sample the impulse response of the continuous filter. Then you can simply interpret the filter as a digital filter. This is an established method for converting continuous filters to digital ones and it is called impulse invariance.
      The reasons you might avoid impulse invariance and would instead use the bilinear transform is that the impulse invariance method is susceptible to aliasing and is flat out impossible to use for a high pass filter.

    • @finnheijink8152
      @finnheijink8152 11 месяцев назад

      @v1n3g4r7 I think your explaination is spot on