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

Reply via email to