<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[[DEVLOG] Pro EQ]]></title><description><![CDATA[<p dir="auto">Over the last year, I've been doing heavy R&amp;D to design <strong>the perfect EQ</strong>.<br />
My initial goal was to "beat" Fabfilter's ProQ4 product.</p>
<p dir="auto">I was successful,<br />
and I'd like to share some of my findings!</p>
<hr />
<p dir="auto">First of all, what's this all about? Why do I want to make a better EQ than ProQ? What's wrong with ProQ?</p>
<p dir="auto"><em>a few things</em>.</p>
<ol>
<li>ProQ's frequency response gets warped near nyquist (high frequencies)</li>
<li>ProQ cannot be modulated for synthesis (the modulation is full of artefacts)</li>
</ol>
<p dir="auto">But before correcting these issues,<br />
I wanted to first create an EQ that at least <em>matches</em> with ProQ.<br />
After I've achieved that, then I can create the technology to improve upon it. Right?</p>
<p dir="auto">Well, I was not expecting this first step to be so difficult!</p>
<p dir="auto">The first thing I did was analyze the ProQ shapes (minimum phase mode) and I discovered instantly that none of them are "standard" EQ shapes. They are all custom shapes, even the normal bell shapes are not what we call "cookbook" shapes. They are all unique shapes that Fabfilter invented. So right off the bat, we can cross off using normal EQ filter shapes that can be found on the internet.</p>
<p dir="auto">It makes sense that ProQ would be using custom shapes though.<br />
If you look at ProQ, the shapes can get super wild. No normal EQ is capable of such high Q!</p>
<p dir="auto"><em>freaking steep!</em></p>
<p dir="auto"><img src="/assets/uploads/files/1786273576363-7af99685-8ecd-4f22-bb9c-79d96e0a3f94-image.png" alt="7af99685-8ecd-4f22-bb9c-79d96e0a3f94-image.png" class=" img-fluid img-markdown" /></p>
<p dir="auto">And so the first thing I tried was stacking multiple minimum phase filters in series, to try and get the same shapes. Basically I created a cascade of bells, slopes, etc.<br />
And this paid off, I managed to create a decent "sloped bell" shape and other steep shapes, by combining filters in series.</p>
<p dir="auto">However - as soon as I moved the cutoff of all these filters together, we got artefacts. Little inconsistencies would appear, and it turned out that cascading minimum phase filters is actually a little bit delicate. The shape gets warped subtly at different cutoffs, and so the overall filter ended up having weird spikes and nasty shape issues at different cutoffs...!</p>
<p dir="auto">ProQ actually does have this issue too - but to a smaller degree compared to my filter cascade.</p>
<p dir="auto">The solution was a little devious. This is how I believe ProQ works:</p>
<hr />
<p dir="auto">The EQ is essentially an "analog-prototype digitizer".<br />
When a Bell is created, the DSP constructs what is called an "Analog Prototype".<br />
This is an "ideal frequency response" target. In other words it imagines the shape it<br />
wants to create.</p>
<p dir="auto">It then digitizes each part of the shape separately so that we get a cascade of filters<br />
that match the target when ran in series (same as my initial idea).<br />
But the important part is that it gives extra weight to "perceptually important points"<br />
on the filter frequency response target. The solver that creates the matching filters, makes sure<br />
that the filters will pass through the most important points. This prevents wobble and weird spikes.<br />
Basically, every time you move the cutoff, the DSP recalculates the entire shape, it creates the<br />
Analog Prototype frequency response target, and creates the fitted filters that match that shape as close as possible.</p>
<p dir="auto">Basically it's adjusting the cascade of filters every time you touch a parameter. Self-correcting itself every time to try and match the "target" frequency response.</p>
<p dir="auto">An amazing advantage of this technique is that you can then reduce the amount that you fit to "impossible" parts of the target frequency response. For example doing filtering near <strong>nyquist</strong> (the top end of the sample rate) you can reduce the amount that you weight towards those parts (trying to fit a filter to ultrasonic frequencies will cause the rest of the filter response to warp and bend) meaning we fit only to the important audible parts and keep the filter response stable.</p>
<p dir="auto">The side effect of this, is that you can't really do <em>true modulation</em>. Because you're recalculating the filters every time. So ProQ does crossfades instead, when it recalculates the filters it crossfades from the old ones to the new ones.</p>
<hr />
<p dir="auto">After doing the above, my own EQ filter could match with ProQ4:</p>
<p dir="auto"><img src="/assets/uploads/files/1786272357939-0a2d532f-017e-41eb-a247-015a3c1734bb-image-resized.png" alt="0a2d532f-017e-41eb-a247-015a3c1734bb-image.png" class=" img-fluid img-markdown" /></p>
<p dir="auto">That was much more complex than I'd imagined!<br />
They are definitely worthy of the name "Fabfilter" with this kind of effort.</p>
<p dir="auto">But...<br />
<img src="https://forum.hise.audio/assets/plugins/nodebb-plugin-emoji/emoji/android/1f3b5.png?v=fba14f4754a" class="not-responsive emoji emoji-android emoji--musical_note" style="height:23px;width:auto;vertical-align:middle" title=":musical_note:" alt="🎵" />I want to be the very best, like noone ever was <img src="https://forum.hise.audio/assets/plugins/nodebb-plugin-emoji/emoji/android/1f3b5.png?v=fba14f4754a" class="not-responsive emoji emoji-android emoji--musical_note" style="height:23px;width:auto;vertical-align:middle" title=":musical_note:" alt="🎵" /></p>
<p dir="auto">So I set out on my year long journey to invent a better EQ.<br />
The final solution involved creating a solver that can be modulated at audio rate, doesn't ever use crossfades, and matches the analog response target as closely as possible. Making the realtime solver <em>smooth</em> so that changing frequency didn't create inconsistencies was the hardest challenge. I present the end result of my research:</p>
<hr />
<p dir="auto"><strong>GriffinFilter matches Fabfilter for all the "easy" shapes:</strong></p>
<p dir="auto"><img src="/assets/uploads/files/1786277161560-e2d9b2bd-9a42-4f92-b277-7d3f6199932c-figure-resized.png" alt="e2d9b2bd-9a42-4f92-b277-7d3f6199932c-figure.png" class=" img-fluid img-markdown" /></p>
<hr />
<p dir="auto"><strong>Where Fabfilter warps, GriffinFilter does not:</strong></p>
<p dir="auto"><img src="/assets/uploads/files/1786275175257-91df47a5-cc72-4c9d-bd90-b6be75b6eddd-image-resized.png" alt="91df47a5-cc72-4c9d-bd90-b6be75b6eddd-image.png" class=" img-fluid img-markdown" /></p>
<p dir="auto">--</p>
<p dir="auto"><strong>100Q anyone?</strong><br />
That's twice as steep Q as Fabfilter can manage.</p>
<p dir="auto"><img src="/assets/uploads/files/1786277322591-3a30032f-03f1-4eeb-a36f-00df84fa100d-figure-resized.png" alt="3a30032f-03f1-4eeb-a36f-00df84fa100d-figure.png" class=" img-fluid img-markdown" /></p>
<p dir="auto">--</p>
<p dir="auto"><strong>And we can modulate cleanly, at audio rate</strong><br />
Here's the printed specs:</p>
<p dir="auto"><img src="/assets/uploads/files/1786284380104-aeaff815-ae79-498b-a6fa-2a468e06d68a-image.png" alt="aeaff815-ae79-498b-a6fa-2a468e06d68a-image.png" class=" img-fluid img-markdown" /></p>
<p dir="auto">CPU usage is currently higher for GriffinEQ.<br />
But the good news is that the GriffinEQ project is still under development!<br />
This is the next obstacle for me to tackle. The aim is to get GriffinEQ performance matched with ProQ4.</p>
<hr />
<p dir="auto">And now, for the all important question:<br />
Q: <strong>Do these EQ improvements really matter?</strong><br />
A: In some ways, no, not really!</p>
<p dir="auto">Musicians already use multiple EQ bands. They stack whatever number of bands they want, to get the sound that they want.<br />
You mix with your ears, not with your eyes.<br />
And for <strong>ordinary EQ situations</strong> ProQ4 matches the ideal shape really closely. It only gets warped at the highest frequencies, which are practically inaudible.</p>
<p dir="auto">So why go through this enormous effort to improve it?<br />
The answer is <strong>synthesis</strong>.<br />
I love using EQ to create new sounds. And I commonly stack lots of EQ bands ontop of each other and modulate them around like crazy to make wild phasing effects!<br />
And so the limits of ProQ started to matter to me. I wanted something that was as precise as ProQ, capable of those really steep filter shapes, but I also needed it to modulate <strong>smooth and consistent</strong>, so that I can do big modulated sweeps that reach right up into the high frequencies! Without unintentional weird spikes or warping. Which is an issue that ProQ still suffers from.</p>
<p dir="auto">In scientific terms it's <strong>better</strong>, and in musical terms it's <strong>different</strong>.</p>
<p dir="auto">Maybe it doesn't hurt to have <em>just one more</em> EQ to choose from? : )</p>
<hr />
<p dir="auto">I plan to make this DSP available in the upcoming Hise Asset Store <strong>for free</strong>.</p>
<p dir="auto"><img src="/assets/uploads/files/1786286361346-a2bea007-b44f-44a0-9e3f-9b7ba26926f8-image.png" alt="a2bea007-b44f-44a0-9e3f-9b7ba26926f8-image.png" class=" img-fluid img-markdown" /></p>
]]></description><link>https://forum.hise.audio/topic/14987/devlog-pro-eq</link><generator>RSS for Node</generator><lastBuildDate>Sun, 09 Aug 2026 19:36:39 GMT</lastBuildDate><atom:link href="https://forum.hise.audio/topic/14987.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 09 Aug 2026 14:06:36 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to [DEVLOG] Pro EQ on Sun, 09 Aug 2026 14:51:49 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="https://forum.hise.audio/uid/3542">@griffinboy</a> Just wow...</p>
]]></description><link>https://forum.hise.audio/post/122425</link><guid isPermaLink="true">https://forum.hise.audio/post/122425</guid><dc:creator><![CDATA[lalalandsynth]]></dc:creator><pubDate>Sun, 09 Aug 2026 14:51:49 GMT</pubDate></item><item><title><![CDATA[Reply to [DEVLOG] Pro EQ on Sun, 09 Aug 2026 14:45:55 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="https://forum.hise.audio/uid/3542">@griffinboy</a> Great job! Fabfilter eq's are currently my go-to's in my workflow.  This is a crazy accomplishment! Respect! <img src="https://forum.hise.audio/assets/plugins/nodebb-plugin-emoji/emoji/android/26a1.png?v=fba14f4754a" class="not-responsive emoji emoji-android emoji--zap" style="height:23px;width:auto;vertical-align:middle" title=":zap:" alt="⚡" /></p>
]]></description><link>https://forum.hise.audio/post/122424</link><guid isPermaLink="true">https://forum.hise.audio/post/122424</guid><dc:creator><![CDATA[Chazrox]]></dc:creator><pubDate>Sun, 09 Aug 2026 14:45:55 GMT</pubDate></item><item><title><![CDATA[Reply to [DEVLOG] Pro EQ on Sun, 09 Aug 2026 14:21:19 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="https://forum.hise.audio/uid/3542">@griffinboy</a> That's incredibly impressive! <img src="https://forum.hise.audio/assets/plugins/nodebb-plugin-emoji/emoji/android/1f44f.png?v=fba14f4754a" class="not-responsive emoji emoji-android emoji--clap" style="height:23px;width:auto;vertical-align:middle" title=":clap:" alt="👏" /></p>
]]></description><link>https://forum.hise.audio/post/122421</link><guid isPermaLink="true">https://forum.hise.audio/post/122421</guid><dc:creator><![CDATA[dannytaurus]]></dc:creator><pubDate>Sun, 09 Aug 2026 14:21:19 GMT</pubDate></item></channel></rss>