Hi Yoshimi-developers,
just a status update
On 10.03.2022 18:28, Ichthyostega wrote:
This makes me think into another direction: Maybe just the innards of
the PADnote are too cohesive? We could think of the wavetable
interpolation (which executes the innermost loop) as a distinct
component.
This approach seems to work out well.
I have now extracted a new class WaveInterpolator and noteout()
invokes the actual interpolation through a virtual function. Surprisingly,
this had no tangible effect on the observable runtime; seemingly the additional
overhead for that virtual call is totally dwarfed by the effort of calculating
the actual interpolation for one buffer full of data. So the plan is then
to exchange that Interpolator by a cross-fading Interpolator just for the
duration of the cross-fade, which means I do not need to touch the actual
interpolation code, and the cross fade logic remains cleanly separated.
However, I am still in the middle of sorting out some further complications.
- the testsuite indicated a Wave difference, and focussed investigation
unveiled a bug in my changed implementation + a (non-critical) bug in the
old implementation as well.
- but I also added more detailed timing measurements, and these show
a slow-down (degraded performance) on short notes, seemingly caused somewhere
within the "padthread" refactorings. The very broad changes to FFT memory
management can not be the reason, since these are also shared with all
OscilGen + ADDSynth, and these show same (even slightly better) timings.
So bottom line, I made good progress, but have still to clarify some details.
-- Hermann
_______________________________________________
Yoshimi-devel mailing list
Yoshimi-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/yoshimi-devel