Hi Will,
Hi Kristian,
meanwhile, I made quite some progress on reproducible test sounds.
With one exception (Overdrive), I can now completely reproduce the sound
of all further Presets/Instruments I tested.
Basically I followed up on the observation with the LFOs and reset the
LFOtime, monotonicBeat and songBeat in the SynthEngine prior to launching
the test. Besides that, we also need to reset the state of LFOs embedded
in the effects (Alienwah, Chorus, DynamicFiler, Phaser). Another (in
hindsight quite obvious) discrepancy is caused by PADSynth; after reseeding,
it is necessary to rebuild it's Wavetables.
Probably we'll find more bits of hidden state when we proceed towards
a more systematic coverage of all features, but right now there are
only two oddities left that I can not understand yet.
- presets using a chain of insert effects, where the last one is reverb.
My test example is of course Overdrive ;-)
After reseeding, I invoke SynthEngine::shutUp() prior to each test note.
This kills all possibly sounding notes and clears the state in the effects.
However, in the first note, the /reverberant/ sound is not reproducible.
If we invoke shutUp() more than once, however, also the reverberant sound
becomes fully reproducible. So my suspicion is that somewhere in the
chain of effect buffers some residuum of previous calculations even
survives the Effect::cleanup() call.
- also I do not fully understand a strange twist with PAD-Synth.
If we reseed and then PADnoteParameters::applyparameters()
/only for the *enabled* PADSynth-Kititems/, then the sound produced
by the second, third, fourth... PADSynth-Kit-Item is not reproducible.
Which is quite strange, because in my tests, the Kit-Item slots *not*
enabled also do not hold any Instrument definition, i.e. they are
in default/empty state. However, if we reseed and applyparamters()
for all PADSynth-Kit-Items, irrespective if (item.Padenabled == true),
then the sound becomes 100% reproducible.
Basically, both points are not a road block right now, since there is an obvious
workaround (invoke shutUp() twice, rsp. reset also the disabled PAD-Kit-Items).
But non the less, those oddities hint at some unknown behaviour and code paths.
My intended next steps:
* maybe shed some light into the mentioned oddities?
(but don't spend too much additional time on that one)
* complete the CLI arguments, so to make the testing fully controllable
through CLI (right now, various params are still hard wired).
* start with drafting a test runner and a directory layout for a test suite.
-- Hermann
_______________________________________________
Yoshimi-devel mailing list
Yoshimi-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/yoshimi-devel