Fathom Development Thread

VST, AU, AAX, etc. plug-in Virtual Instruments discussion
KVRAF

Topic Starter

1513 posts since 25 Mar, 2017

Post Sun Jun 27, 2021 10:15 am

Most audio values are between -1 and +1 since that is how any signal is recorded.

So any considerations of floating point precision are in that range. Errors will be slightly higher as the signal approaches one and minus one because more of the available digits must be used to store the value. The closer to zero the signal is the more accurately it can be saved.

Computation is a consideration but it is not the primary factor. The primary factor is simply storing numbers in a buffer and pulling them out. If you store numbers as floats to eight decimal places and the human ear can hear to more decimal places of precision you are going to reduce audio quality before you even do any computations.

Computations play a slight role in interpolation but interpolation is all multiply and add so again the primary consideration is simply storing the number. Keep in mind that EVERYTHING in a synthesizer results in values being pulled from a sin wave since that is the only way to generate an alias free signal. So rendering the sin wave is 99.9% of audio quality.

So computations are really sort of beside the point except for interpolation because if you compute a signal such as for detune, distortion, shifting or any other audio function and you get the result and then convert it to sin partials, if the computations are slightly off but the result is stored as doubles then errors in the computation produce a result slightly different than you intended but it will still be high quality because it is rendered with less aliasing.

Think of computations as what you are painting and digits of precision in rendering sin waves as the size of your paint brush.

I've been racking my brains for the last five years trying to figure out why the high quality synths sound better and I'm pretty sure this is it. Fathom uses the most advanced interpolation algorithm of any synth on the market so I don't think that is the issue.

KVRAF
6463 posts since 12 Feb, 2006 from Helsinki, Finland

Post Mon Jun 28, 2021 6:01 pm

FathomSynth wrote:
Sun Jun 27, 2021 10:15 am
Computation is a consideration but it is not the primary factor. The primary factor is simply storing numbers in a buffer and pulling them out. If you store numbers as floats to eight decimal places and the human ear can hear to more decimal places of precision you are going to reduce audio quality before you even do any computations.
Even 32-bit floats can store 24-bit audio exactly and it is physically implausible for a DAC to do much better than 20 bits. Medical data about human hearing doesn't come into play.

Now.. I'm not going to claim 32-bit is always enough. I've written several plugins that wouldn't even work in 32-bits, because the error accumulation with some algorithms (eg. feedback, large enough FFTs) can be quite terrible... but if all you're doing storage and simple mixing of signals, then you should really be able to get the same bits out of the DAC either way.
Preferred pronouns would be "it/it" because according to this country, I'm a piece of human trash.

User avatar
KVRAF
6066 posts since 6 Jan, 2017 from Outer Space

Post Mon Jun 28, 2021 10:49 pm

The big advantage of using floating point computation within a DAW is, that you can go beyond 1.0! If you just level it down before its sent to the DAC you are fine. No clipping no distortion. 32-bit floating point is a 23-bit mantissa 1-bit sign and 6-bit exponent. The resolution for a 24-bit DAC is exactly the 8-digits or 23-bit + sign of an 32-bit float. 24-bit is good for 144 dB signal to noise ratio, way beyond what we can hear… Rounding errors are simply noise and they can add up… This is relevant information for computation of 15 years ago!
Today we deal with 64-bit applications. A float calculation in a 64-bit application has a 52-bit mantissa!
In 32-bit applications we only ran into resolution problems if you wanted to access a sound file of more than 6 minutes with sample accuracy. And we had a denormal problem, when an algorithm went into unhearable soft levels like the tail of a reverb - the CPU demand goes up like crazy. All these problems don’t exist in a 64-bit application as nobody would use anything else than 64-bit floats also called double precision.
In the old times when computers had 8-bit. The compilers needed all these different types of floats to instruct the processor with complicated algorithms to do calculations in a higher resolution. Which would eat CPU for breakfast…
Last edited by Tj Shredder on Mon Jun 28, 2021 10:52 pm, edited 1 time in total.

KVRAF
6463 posts since 12 Feb, 2006 from Helsinki, Finland

Post Tue Jun 29, 2021 3:23 am

Tj Shredder wrote:
Mon Jun 28, 2021 10:49 pm
In 32-bit applications we only ran into resolution problems if you wanted to access a sound file of more than 6 minutes with sample accuracy. And we had a denormal problem, when an algorithm went into unhearable soft levels like the tail of a reverb - the CPU demand goes up like crazy. All these problems don’t exist in a 64-bit application as nobody would use anything else than 64-bit floats also called double precision.
Single vs. double precision floating point has nothing to do with 32-bit vs. 64-bit applications. Denormals also have little to do with either, except as far as single-precision denormals happen before double-precision denormals, but then again many of the problems in legacy code were happening with 80-bit floating point because poor legacy x87 did not have any denormal mitigation in hardware.

Either way, there's like a dozen different things here that you're talking about that have very little to do with each other. Also I happen to know for a fact that single-precision is still used quite a bit, simply because in many cases it happens to be about twice as fast when an algorithm can use SIMD.
Preferred pronouns would be "it/it" because according to this country, I'm a piece of human trash.

KVRAF

Topic Starter

1513 posts since 25 Mar, 2017

Post Tue Jun 29, 2021 7:41 am

DAC's are limited to 20 bits. I thought most DAC's these days were 32 bits?

Also, I think that might be beside the point. If a DAC has a particular bit depth then it means that it can only detect differences in amplitude up to certain discrete levels which means when it converts the digital signal to analog voltage and sends it to the speakers there will be slight rounding errors.

But think about this logically. The DAC rounding errors are ADDED to any errors in the digital signal, they do NOT replace them. So if the VST uses double floating point and generates a digital signal with less aliasing then there will be less aliasing in the output signal from the DAC regardless of the DAC bit depth!

Furthermore, buffer fetches and calculations occur at multiple stages inside the VST and rounding errors compound, so even if it is true that there is limited precision at the output point to the DAC the equality of the signal to the DAC is massively impacted by float vs double precision even if the precision of the DAC is limited.

So maybe, I'm not understanding your point.

KVRAF
6463 posts since 12 Feb, 2006 from Helsinki, Finland

Post Tue Jun 29, 2021 9:20 am

FathomSynth wrote:
Tue Jun 29, 2021 7:41 am
DAC's are limited to 20 bits. I thought most DAC's these days were 32 bits?
The number of bits the DAC presents to the software side of things is one thing. What the DAC can physically output is another thing. So you might have a DAC that seemingly takes a 32-bit signal, but that doesn't change the physics on the analog side of things. In practice it's a bit more complicated, because your average DAC might output only a few bits and use a high oversampling rate together with noise shaping to get the equivalent of about 20 bits, but there's only so far you can go.

Now, it is true that any rounding errors in a DAC might be "additive" in a sense, but at the same time when such "noise" is significantly higher than whatever errors exist in the signal, the noise will almost completely mask the lower level errors.

As for aliasing, that's mostly a matter of interpolation filters and I don't think 32-bit precision really comes into play there either, unless there is some additional numerical issue with the filters. While you can easily see the floating point rounding noise with a double-precision analyzer, it's should usually be pretty flat in terms of frequency spectrum.

That said, I want to clarify further that I'm not against using 64-bit precision at all. There are cases where the differences can be quite significant. I'm just trying to say that 32-bits isn't automatically bad and a well-designed signal path (depending on what you need to do) can produce a high-quality signal with single-precision as well, often at a significantly lower CPU cost. Likewise an algorithm that is sufficiently poor in terms of numerical precision can introduce significant errors even if you use double-precision.
Preferred pronouns would be "it/it" because according to this country, I'm a piece of human trash.

KVRAF

Topic Starter

1513 posts since 25 Mar, 2017

Post Tue Jun 29, 2021 7:27 pm

So let me just make sure I understand you. You're saying DAC errors at a single point which are several orders of magnitude less than the rounding error of floating point precision are going to drown out the cumulative errors of floating point precision compounded by every operation and every buffer fetch within the VST signal path? And you know this even though every system and motherboard has potentially a different DAC? And also you're saying that the analog audio side of the DAC has even less precision, which I imagine is why synths based on pure analog electronics sound so much worse than digital synths?

I've grown a little tired of hearing this argument from every single "expert" on the issue none of whom have actually tried it.

I'm going to actually try it, code it, and see what happens.

KVRAF
8232 posts since 6 Oct, 2004

Post Thu Jul 01, 2021 3:50 am

Here's a few sounds layered and sequenced, from the International folder, which I somehow had missed exploring, lots there to work and play with :hyper:

Fathom-Int-Drums.mp3.zip
You do not have the required permissions to view the files attached to this post.

User avatar
KVRAF
6066 posts since 6 Jan, 2017 from Outer Space

Post Thu Jul 01, 2021 9:07 pm

FathomSynth wrote:
Tue Jun 29, 2021 7:27 pm
And also you're saying that the analog audio side of the DAC has even less precision, which I imagine is why synths based on pure analog electronics sound so much worse than digital synths?
If you ever built analog gear, or just read about it, you should know that even today its hard to get even close to a signal to noise ratio of 120 dB. That corresponds to a resolution of 20-bit and is way beyond what yo can hear, as the sound of your blood streaming through your ears already makes more noise. Don’t forget that the dB scale is a logarithmic scale…
But that is the resolution of levels in the DAC. The resolution of pitch is a different story and more complex. But the number of hair cells in the ear would let me assume that 24-bit is also more than needed. When I play my LinnStrument, it seems even the 14-bit of Midi make me happy enough.
1-bit difference doubles the resolution…

User avatar
KVRAF
2007 posts since 8 Jun, 2018

Post Thu Jul 01, 2021 10:32 pm

Tj Shredder wrote:
Thu Jul 01, 2021 9:07 pm
FathomSynth wrote:
Tue Jun 29, 2021 7:27 pm
And also you're saying that the analog audio side of the DAC has even less precision, which I imagine is why synths based on pure analog electronics sound so much worse than digital synths?
If you ever built analog gear, or just read about it, you should know that even today its hard to get even close to a signal to noise ratio of 120 dB. That corresponds to a resolution of 20-bit and is way beyond what yo can hear, as the sound of your blood streaming through your ears already makes more noise. Don’t forget that the dB scale is a logarithmic scale…
But that is the resolution of levels in the DAC. The resolution of pitch is a different story and more complex. But the number of hair cells in the ear would let me assume that 24-bit is also more than needed. When I play my LinnStrument, it seems even the 14-bit of Midi make me happy enough.
1-bit difference doubles the resolution…
it is indeed true that a 24 bit DAC, 'uses' 20 bit. 120dB. it depends on a DAC, if the noise floor is low enough. but a 96dB, 16bit DAC can also perform as good as a...
and don't forget opamps...

but these are different domains.

C datatypes, math in a soft synt/effect, is something different than the resolution of your DAC, or how your DAC works.
it doesn't concern itself with it, it is not important.

double in C, or java, is 64 bit, but gives 15 significant digits. (or 17 it seems, always thought, o wel..)

the problem is here; talking about bits, you must know the context or better the domain; bits in a DAC, are not bits in C.

and making a project in 32float, in a DAW, does not mean more dynamic, because, even a 32bit integer DAC, i don't know the real resolution of that kind of DAC, but 32float, seems 24 bit....

it means more headroom and less rounding errors. in a DAW you can work with 64float (double precision), if you want to.

and has no connecting with the DAC, it is the inner workings of a DAW, or plugins, mixing engines, etc.

and even if you have a insane DAC, the opamps can't handle it, or your speakers. my can handle it seems, peak 112dB, with a sensitivity of 92dB (at 1 meter). all that matters.
those numbers says nothing about the quality of the speakers of course, the quality is defined another way.
seperate enclosures for each driver, the build of the filters, the build of the enclosures, the build of the drivers. etc. etc.

we tread in a seperate domains, while all is still called 'audio'.

and bits in Midi mean again quite another thing. indeed 1 bit, doubles the resolution, in the Midi domain.. but they aren't 'audio' values, they represent another kind of data.

what is common: representing 'data'. representation. but it all are different domains, how to make the 'best' representation...

the proof is in the pudding, even if a theory can be sound...

sorry, i am no expert..

let's go to work with Fathom Vector, and make some strange sounds...
take me as apple as reed-son as flesh-icon, immediately
shits the wise man. hero and blind. take me as
stick as tongue as dog... Music & Soundscraping

KVRAF
2574 posts since 17 Sep, 2016

Post Fri Jul 02, 2021 3:00 pm

Tj Shredder wrote:
Thu Jul 01, 2021 9:07 pm
If you ever built analog gear, or just read about it, you should know that even today its hard to get even close to a signal to noise ratio of 120 dB. That corresponds to a resolution of 20-bit and is way beyond what yo can hear, as the sound of your blood streaming through your ears already makes more noise. Don’t forget that the dB scale is a logarithmic scale…
But that is the resolution of levels in the DAC. The resolution of pitch is a different story and more complex. But the number of hair cells in the ear would let me assume that 24-bit is also more than needed. When I play my LinnStrument, it seems even the 14-bit of Midi make me happy enough.
1-bit difference doubles the resolution…
You do realize that MIDI has zero audio components whatsoever... :dog:
Last edited by zzz00m on Sat Jul 03, 2021 10:00 am, edited 1 time in total.
Windows10; plugins from AAS, Ableton, AIR, Ample, Arturia, Cakewalk, Cherry, DiscoDSP, Fathom, IKM, Initial, iZotope, KV331, NI, PluginGuru, PreSonus, Surge, TAL, Tone2, Toontrack, Tracktion, u-he, UJAM, UVI, Vital, Waves, XLN ...

User avatar
KVRAF
2007 posts since 8 Jun, 2018

Post Fri Jul 02, 2021 8:14 pm

zzz00m wrote:
Fri Jul 02, 2021 3:00 pm
WasteLand wrote:
Thu Jul 01, 2021 10:32 pm
it seems even the 14-bit of Midi make me happy enough.
1-bit difference doubles the resolution…
You do realize that MIDI has zero audio components whatsoever... :dog:
you are quoting me, it looks, but you are quoting someone else... i did mention, that midi isn't audio, but another kind of data.
take me as apple as reed-son as flesh-icon, immediately
shits the wise man. hero and blind. take me as
stick as tongue as dog... Music & Soundscraping

User avatar
KVRAF
6066 posts since 6 Jan, 2017 from Outer Space

Post Sat Jul 03, 2021 4:56 am

It was me. In a computer audio or Midi is just numbers. “1-bit doubles the resolution” explains the math behind both… we also deal with different properties of audio within any dsp calculation. Levels and frequencies are different things as well…

KVRAF
2574 posts since 17 Sep, 2016

Post Sat Jul 03, 2021 10:01 am

WasteLand wrote:
Fri Jul 02, 2021 8:14 pm

you are quoting me, it looks, but you are quoting someone else... i did mention, that midi isn't audio, but another kind of data.
Apologies. I quoted the wrong post. Fixed!
Windows10; plugins from AAS, Ableton, AIR, Ample, Arturia, Cakewalk, Cherry, DiscoDSP, Fathom, IKM, Initial, iZotope, KV331, NI, PluginGuru, PreSonus, Surge, TAL, Tone2, Toontrack, Tracktion, u-he, UJAM, UVI, Vital, Waves, XLN ...

KVRist
94 posts since 7 Aug, 2018 from Michigan

Post Wed Jul 14, 2021 6:45 am

I'm getting clicks on every new note when I'm running mono and use glide. Losing my mind a bit trying to debug. I have tried screwing with every single setting, and the clicking always persists. I was having a bunch of these problems a year ago and basically stopped using this synth, decided to fire it up again and the clicking is back.. Running Fathom 3.2.0.28 Version 64, Reaper 6.32.

Return to “Instruments”