Hi Will,
Just managed to get the EQ graph switched over to the new system!!
So, up to now, the Heffalumps seem to be rather friendly and tame
and only slightly stubborn at times...
This change involves a trade-off; while the original code directly called
into the core with a frequency precisely fitting the current pixel, now,
for the push-update version I built a LUT and interpolate linearely between
the pre-rendered points. This may lead to unsharp and "wobbly" behaviour
especially on peak/notch filters with high q (sharp peak). Obviously,
the more points we pre-render, the larger the memory consumption for the
"slots" in GuiDataExchange, where we store the data block until the GUI
is able to pick it up. Currently we reserve 64 such slots.
When I set the number of points in the LUT to 300, it seems reasonably
smooth in most cases, even when I scale the window up. On the other hand,
I could not see any delay or excess UI load, even when turning around the
knobs very fast (you can see in the DUMP messages on stdout that a lot
of push-updates are sent in that case).
The number of slots can be controlled by the constant EQ_GRAPH_STEPS
defined in Effect.h. A typical small window has an x-resolution of ~170
pixel on my system, so 300 points are somewhat in excess. When looking
at the old version prior to the change, in fact it does also "dance"
when using such extreme peak filters. However, the old version did not
actually connect the previous and next point by a line, but rather drew
only a horizontal line (not sure if this was a bug or intentional?).
I have changed that, and this made the line more continuous and thus
makes these inconsistencies somewhat more visible.
-- Hermann
PS: have not looked yet into the UI-start for LV2,
so very likely this does not come up correct yet for that case.
_______________________________________________
Yoshimi-devel mailing list
Yoshimi-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/yoshimi-devel