HISE Filter Display Inconsistencies
-
@ustk I'm currently toying around with a new way of handling this - basically it keeps the old behaviour of approximating the graph with IIR coefficients for all the two pole filter types, but you can override it with a custom function that can calculate any filter response.
// Return the magnitude (or phase) value for the given frequency double getPlotValue(bool getMagnitude, double normedXAxis) { return someValue; }
If the filter type overrides that function it will prefer this for calculating the plot. Now with my limited filter knowledge I figured out how to write the transfer function for the one pole filter and the result is promising:
but to figure out the transfer function for the other filter types (ladder, moog, etc) would require me to actually understand this paper lol...
-
@Christoph-Hart what does chatgpt say?
-
@aaronventure tried it already got only gibberish…
-
@Christoph-Hart I got it working without the Q for the ladder filter but now I‘m stuck.
-
@Christoph-Hart sorry, what is normed x axis? You're passing in the frequency and then you're taking the return somewhere down the line and doing the log scaling?
-
@aaronventure I think
normedXAxis
means a 0-1 linear value for freq (log), to be confirmed...@Christoph-Hart Zavalishin's VA paper, aka THE paper...
I got a grasp on VA filters from some DSP popularising books. Now, to understand the original paper is a whole different story -
@Christoph-Hart said in HISE Filter Display Inconsistencies:
but to figure out the transfer function for the other filter types (ladder, moog, etc) would require me to actually understand this paper lol...
Yeah that things a nightmare _ i've tried a bunch of times, and struggle to get past the first section....
-
Alright, I've pushed the new filter graph API and also added support for creating custom filter curves using a SNEX node! You can now create your custom filters and then add a function to your SNEX class
double getPlotValue(int getMagnitude, double fNorm) { return 1.0f; // calculate the filter response here }
I've added a example to the snippet browser that implements the one pole filter including the filter graph creation entirely in SNEX.
https://docs.hise.dev/tutorials/scriptnode/index.html#snex-one-pole-filter
Let me know if you hit any issues. Maybe now that we've levelled the playing field and anybody can create those filter graphs, we can tackle the ladder filter response together...
-
@Christoph-Hart said in HISE Filter Display Inconsistencies:
we can tackle the ladder filter response together...
Maybe you can find some clues here?
https://github.com/grame-cncm/faustlibraries/blob/master/filters.lib
The ladder filter (as well as the filters.ladder node) currently in HISE is somewhat busted:
- Frequency parameter only does something until 7k, past that it does nothing
- Q only works from 0.6 to 8.0
-
@Christoph-Hart I could probably help with this. I'm calculating transfer functions all day
-
@aaronventure May I ask if you're building Hise in a specific manner to get it to work as an FX plugin, essentially with PluginDoctor?
This is something I did a lot in the past but now the plugin is not recognised (AU & VST3). Tried in Live and PluginDoctor. I'm out of solutions...
-
HISE_BACKEND_AS_FX=1
But you have to load Metaplugin in the doctor, and in there you should load the VST3i of HISE built with this flag, as Metaplugin will let you plug audio in into a plugin like a proper host.
-
Mmmm... I have this flag but it still doesn't work...So you mean[PD] <= [MetaPlug as FX] <= [Hise as Instrument]
?EDDIT: it seems to work, I had an error message but Hise seems to launch