Bilinear Transform For IIR Filter Design Explained Intuitively [AudioFX

✅ Check out the full article on TheWolfSound.com: www.thewolfsound.com/bilinear...
✅ Sign up for WolfSound's newsletter: thewolfsound.com/newsletter/
✅ Please subscribe to WolfSound to let the little Wolf 🐺 grow:
kzread.info...
🎧 Listen to my music: thewolfofficial.com/
Hi, my name is Jan Wilczek and I am an audio programmer and a researcher. Welcome to WolfSound!
WolfSound's mission is to provide high-quality, informative, and entertaining videos, articles, and courses on how to process sound by exploring mathematics, applying algorithms, and creating code in various programming languages. Topics include sound synthesis, digital signal processing, programming languages for audio (C, C++, Python, Rust), and audio effects. I am also sharing tips on how to learn fast and effectively. Make sure to visit www.thewolfsound.com/.
WolfSound enables everybody to learn about audio programming!
ABOUT THE VIDEO
In this video, you will learn how to digitize analog music systems with the bilinear transform. The bilinear transform is a change of variables, mapping the jω frequency axis of the s-plane to the unit circle of the z-plane. It converts stable analog systems into stable digital systems so it is useful for the design of IIR digital filters from analog filters. However, it distorts the frequencies (frequency warping) what can be counteracted with prewarping. The video contains the derivation and properties of the bilinear transform. It also shows you an example of a bilinear transform of the second-order analog Butterworth lowpass, which results in an IIR filter.
In case of any doubt in understanding, please, refer to the article above or ask a question in the comments 🙂
Video edited by Jorge Jimenez and Jan Wilczek.
ABOUT ME
My name is Jan Wilczek. I am an audio programmer, a researcher in the field of music technology, and a musician. Through articles and videos from WolfSound, you will easily understand the main concepts of sound processing using software. My full story: • How I Got Started With...
FOLLOW WOLFSOUND ONLINE
✅ Blog: www.thewolfsound.com/
✅ LinkedIn: / jan-wilczek-audio-prog...
✅ Twitter: / wilczek_jan
✅ Facebook: / janwilczekwolfsound
✅ Instagram: / janwolfwilczek
✅ Pinterest: / jawitrle
TIME CODES
00:00 Introduction
00:37 Recap
01:05 Digitization goal
01:25 Bilinear transform definition
02:20 Bilinear transform derivation
09:43 Properties of the bilinear transform
11:38 Frequency warping
12:29 Prewarping
13:49 Example: second-order Butterworth lowpass digitization.
15:01 Summary
#dsp #filters

Пікірлер: 20

  • @WolfSoundAudio
    @WolfSoundAudio2 жыл бұрын

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

  • @StefanRinger
    @StefanRinger2 жыл бұрын

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

  • @WolfSoundAudio

    @WolfSoundAudio

    2 жыл бұрын

    Danke, gleichfalls!

  • @velvetsound
    @velvetsound2 жыл бұрын

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

  • @WolfSoundAudio

    @WolfSoundAudio

    2 жыл бұрын

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

  • @Pusga2
    @Pusga2 Жыл бұрын

    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

    Жыл бұрын

    Great, I'm happy to hear that!

  • @WolfSoundAudio

    @WolfSoundAudio

    Жыл бұрын

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

  • @Pusga2

    @Pusga2

    Жыл бұрын

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

  • @WolfSoundAudio

    @WolfSoundAudio

    Жыл бұрын

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

  • @velvetsound
    @velvetsound2 жыл бұрын

    Having watched a lot of your videos, and others from Phils Lab and Guitars.AI, I think what’s missing on KZread 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 жыл бұрын

    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 жыл бұрын

    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 KZread 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 жыл бұрын

    @@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
    @v1n3g4r79 ай бұрын

    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

    9 ай бұрын

    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

    9 ай бұрын

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

  • @v1n3g4r7

    @v1n3g4r7

    9 ай бұрын

    @@finnheijink8152 thanks mate!

  • @v1n3g4r7

    @v1n3g4r7

    9 ай бұрын

    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

    9 ай бұрын

    @v1n3g4r7 I think your explaination is spot on