[yoshimi] Re: Significant changes to the Engine? -- Re: Yoshimi V 1.5.10

  • From: Ichthyostega <prg@xxxxxxxxxxxxxxx>
  • To: Will Godfrey <willgodfrey@xxxxxxxxxxxxxxx>, yoshimi@xxxxxxxxxxxxx
  • Date: Tue, 18 Dec 2018 07:38:29 +0100

Am 17.12.18 um 18:50 schrieb Will Godfrey:

I'm still not hearing any issues on an ordinary debian stable, nor devuan 
is based on a slightly older deb. Also, spectrum analysers seem to see similar
distribution for both this build and Yoshimi However, I'll change the
type from unsigned int to uint32_t which *should* ensure we are definitely
using 32bit values.

Hello Will,

now I've spent the whole night to investigate the problem, have to go to the
office soon, duh. Anyway --

I don't think we have a malfunction. Rather we have an artistic problem.

You replaced the random number generator. The new generator just *sounds*
different. The mathematical quality of the random numbers does not tell
us anything about how they sound and feel, in a musical context.

From what I've observed, the new PRNG makes the sound significantly brighter,
also tighter, and it is way more smooth. In my observations, it makes the
7th, 8th 9th and 10th partial stand out more accentuated.

The old PRNG had a brittle, uneven quality, which I exploited excessively,
with lots of usage of the SubSynth. I leveraged that quality to create
some voices with a distinct presence and personality. Now, after the
change, those voices sound superficially the same, but the presence
of the personality is gone. In the new version, I find my voices repulsive
after playing them some time. I never would have built them this way, not
even remotely. And, speaking as an artist, I know what I am aiming at.

Maybe I would have build all my instruments differently, based on the
new PRNG, but now I have put literally several months of work, over the
last years, into the existing version, which relied on the old PRNG.

This evening, I did various tests, both on my desktop and on my laptop
(which runs Ubuntu 18.04) and with several DA converters.

Basically I narrowed down the culprit. When I remove the changesets

    Revert "Prng behaviour now confirmed and reseeds removed"
    This reverts commit 4a2b6f03eab2540a1c26cef838ebb1cf67fd6955.

    Revert "Final tweaks to prng - I think!"
    This reverts commit 21aba1e0bc374d6e707a6b9fc5686479e6128696.

    Revert "Further refinements to prng"
    This reverts commit 3556e81662023b4173b8cbdce1468234e0137992.

    Revert "Some corrections and improvements to new prng"
    This reverts commit 421de825883d9403ff5fa44b28873f100eef13fc.

    Revert "Inplemented a new prng with no external libraries"
    This reverts commit 5ff7a65f1ddcf747098ca1f28741428236f37af0.

...then matters feel and sound basically as they used to be.

But even when I add only the first changeset 5ff7a65f1dd, ("Implemented a new
prng.."), then the bulk of the audible change is there. Removing the re-seed
also brings a significant change, it changes the texture somehow, but I can
not grasp how precisely. But really the big leap comes with the changed

Of course I also looked at the numbers. Could not see any obvious problems.
Also compared spectral plots, could not spot any relevant difference. Not
surprising. You can not see the difference between an old Stradivari and a fine
newly build Violin in the spectral plot. Or the difference between the
interpretation of two capable violin players. (Of course the differences are
somewhere in the numbers, just we do not know where to look. But it is easy to
hear the difference for a musically trained ear).

Will, I understand well that we've got some kind of a situation here. I see
you put a lot of effort and dedication into those optimisations. You digged
up a suitable random number algorithm, which is really short, sweet and tidy and
certainly does not sound bad. And I put months of work into my instruments,
which are now somehow evaporated and shattered to pieces. Of course I can
easily maintain my own private version and continue to do my stuff, but I
somehow hoped that my work could also inspire other people.

-- Hermann

Yoshimi source code is available from either: 
Or: https://github.com/Yoshimi/yoshimi
Our list archive is at: https://www.freelists.org/archive/yoshimi
To post, email to yoshimi@xxxxxxxxxxxxx

Other related posts: