Numerical issues in SL

The unmixed Layers do not add up to the original.
Here is an example

  • Take a song and unmix it
  • Than save all layers seperately
  • Load the original song in (for instance) Audacity or Wavelab
  • invert the original song
  • add the three unmixed layers (Vocals, Drums and Other)
  • Than add all four tracks (“inverted original”, “Vocals”, “Drums” and “Other”) and save this file “residuum.wav”
  • load the file “residuum.wav” and normalize it in order to see (and hear), what has been left.
    → residuum.wav is not all zero. It contains some information.

→ Therefore I conclude, that the unmix-process has some numerical issues.

→ Is there any explanation (well, yes on a scientifc point of view, I can understand the trouble with finite FFT and calculation, but I would like to know what happens exactly on an algorithmical standpoint. Rounding errors always happen) or documentation on this issue? Are there any bounds or estimations for the known errors?

(anyway, this does not mean, that the results are bad or so. I love SL. But just the numerics…)

It also came to me, that the frequency or time transformation is subject to numerical issues. Take for instance a selection and do a frequence shift for 1000 Hz up and than 1000 Hz down… and up and down again for some number. The result will become more and more distorted rapidly. Wonder what happens there.

1 Like

There’s a much simpler way to test that : open a file, duplicate the layer, unmix the copy, and invert the polarity of the original. Then activate the Composite Layers View toggle at the bottom of the Layers panel : this will show you the sum of every layers in the project.

I can’t repro the issue here using the same instruments as you, it sums to null - see before activating Composite Layers View, and after :

1 Like

Hi Robin,

pls try it with a different programm and exporting the layers.

I also noted a difference when using GPU or CPU calculations with unmix.

The differences are not audible at first, but will accumulate when using more unmixing or other modules -and than they might become audible as unwanted artifacts.

1 Like

I exported the unmixed layers, opened them all 3 in a WaveLab montage, then added an extra “Null Test” track in WaveLab where I added the original song, and played them : the playback is null, as seen in the screenshot with the LevelMeter and SpectroMeter below :

1 Like

Hi Robin, I disagree.
Not zero.pdf (398,8 KB)
not_zero.zip (1,1 MB)
unmix.zip (3,4 MB)

1 Like

Ah wait, you mean after normalization of the null ? Of course there will always be imprecisions (float 32 bits as great as it is is never perfect !) but they are totally negligible, really.
Just zoom vertically in Audacity at Step 6 of your pdf (before normalization), and see how far you need to zoom to be able to see “errors” like that - if you can ever zoom far enough to see them.

1 Like

Yepp!
Yes, it’s fine, they are minuscule numerical errors here. But they may accumulate when using more and more modules.

… SL is just so good, that it invites so many experimentations with all kind of stuff.
Those issues are not of high priority, imho :slight_smile:

Thx!

Spectral Layers is just like a Google Earth for music - so awesome

2 Likes

I understand your concern, but in that case it’s “float 32bits level of error”, meaning even accumulating thousands of errors like that with thousands of successive process passes, it would still remain at a negligible level.

2 Likes