The idea about making such a thing was mine (though, most surely, I wasn't the only one thinking of it) and it was born with the first uses of LTspice, which were around 2002-2003. However, I didn't seriously try to make something until around 2008, when the first, humble approaches of what would become Filter came to be.
Though I had graduated college in 2001 and had a few years practice as a simple designer/tester, I was an absolute beginner in LTspice behavioural modelling (opposed to the real-life cases i did), so when I started working at the (back then) Universal Filter, it was implemented as a real-life Sallen-Key with switches, lots of unneeded elements, it makes me grin now. Still, I proposed the idea to the LTspice Yahoo Group
in 2010 (having worked on and off) and it was then that the turning point was Kendall
(as met on the group), who gave me an alternative to my approach, namely the RLC biquad
. I remember I actually stared blank a few moments when I realized what that simplicity actually means. That was the spark that got me on the right track. The results were still crude, but less so. But, even if I got seriously working on the Universal Filter, bad luck followed when my hard-disk died and, shortly after, my graphic card. Despite wanting to finish soon, I was forced to have a break that lasted one year and a half.
As soon as I had some time for myself, I tried to resume the work with whatever salvaged files there were on the burned hard-disk and from the group. I managed to make the first usable version around 2012, comprised of analog Bessel, Butterworth, Chebyshev I & II and Cauer/Elliptic, supporting low-pass and high-pass only, up to 12th order. From then on, with the same on and off work (as time allowed), the Filter got better and better, until its current version. Tomorrow it may be even better, time only will tell.
Since I am quite stubborn in following my goals, the tips and tricks used in making the Filter
are, in their majority, mine, that is I found them out through practice (I may not be packed with too much theory, but I will compensate with practice). But a few of them are due to the group's members. The first and most important change belongs to Kendall
, with his RLC biquad, which made the first version of the Universal Filter possible (now the configurations are different and they have changed and will probably be changing over time). The second is partly due to analogspiceman
example, about the use of curled braces to assign variables to nodes. I say partly because I had this idea before knowing about his example, but I had only tried it from within LTspice's GUI, which cannot be done. His example made me realize that the file needs to be edited by hand. In rest, the ideas came to me through exercise.
About the references I had in making Filter, well, they're not quite as large as the Internet itself... but, among the most influential:
plus various other papers and such found online, taken as their conditions allow (free for personal documentation, non-profit).
- Digital Filter Design, T. Parks, C. Burrus
- a draft can be found online at Connections.
- Tapio Saramäki's website
- the outlines of his courses are very well explained.
- Digital Signal Processing: Signals, Systems, and Filters, Andreas Antoniou
- slides with formulas can be found on his website.
- there are some very detailed tutorials about classic analog filter approach.
©Vlad, 2008 - 2015