On Tue, 16 Nov 2021 16:25:10 +0100
Kristian Amlie <krist...@amlie.name> wrote:

>On 13.11.2021 00:58, Ichthyostega wrote:
>> 
>> Hi Will,
>> Hi Kristian,
>> 
>> last week I was rather busy, and moreover, the AnalogFilter turns out
>> to be challenging with respect to getting reproducible numbers on different
>> compilers. For Investigation, I've added several more test cases to cover
>> the various filter types and frequency responses. Running on the same
>> plattform/compiler, the waveform is 100% reproducible. But GCC-7 or
>> GCC-6 on older Ubuntu versions produce non-trivial differences, often
>> even just -50dB RMS (which means, the residual is even faintly audible).
>> 
>> My tests and investigations with the debugger indicate that the
>> discrepancies
>> happen already when computing the /filter coefficients/. And, as we all
>> know,
>> filters can be quite sensible to minute changes on those coefficients.
>> 
>> The assembly does the computations in different ways, and esp. allocates
>> things to registers and SSE registers differently, which is fair enough.
>> 
>> The only solution I could find is to switch this computation of filter
>> coefficients over to using doubles. This works, because then the
>> discrepancies
>> happen in a range that does not matter, since I won't change the type of
>> the
>> coefficients as such, i.e. the coefficients themselves are still floats and
>> thus all the actual filter computations also stay on floats. Which also
>> means, there is no tangible impact on performance, as the coefficients are
>> only recomputed on parameter change, which means at most once per puffer.
>> 
>> I have added this change on top of my "power" branch
>> https://github.com/Ichthyostega/yoshimi/compare/power
>> 
>> Moreover, the testsuite has a total of 53 tests now and I have
>> (re)computed the stored baseline waveforms with a Yoshimi from that
>> "power" branch. With that change, the only differences I get on the
>> different plattforms/compiles are some occasional flips at the last bit,
>> especially with the SUBSynth and PADSynth. These discrepancies are below
>> the
>> tolerance for rounding errors built into the testsuite (-120dB), i.e. they
>> will not be reported (unless you use the commandline argument --strict)  
>
>I wanted to try with the updated power functions, but at the end of the
>run I got this:
>
>  Yoshimi-Testsuite failed: Unforeseen state: No rows in DataTable yet
>
>Do you know what it means?
>

Just tried that here and got the same results :(
That's with your latest builds of both testrunner and yoshimi-power

-- 
Will J Godfrey
https://willgodfrey.bandcamp.com/
http://yoshimi.github.io
Say you have a poem and I have a tune.
Exchange them and we can both have a poem, a tune, and a song.


_______________________________________________
Yoshimi-devel mailing list
Yoshimi-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/yoshimi-devel

Reply via email to