• WANTED: Happy members who like to discuss audio and other topics related to our interest. Desire to learn and share knowledge of science required. There are many reviews of audio hardware and expert members to help answer your questions. Click here to have your audio equipment measured for free!

Beta Test: DISTORT - audibility of distortions

Good questions Paul ? :)
In fact I need to do some research before. "Noise Floor Modulation" verbiage of some DAC designers is puzzling me.
Eventually, @March Audio may help us since he started a thread a few years back here.
Distort software can turn a good tool for easily checking such claims

I've seen claims that some Sigma-Delta DACs (and chips) produce signal-modulated noise floor. Amplitude modulation seems irrelevant as it will simply sum with the actual signal, unless it's out of phase. FM or convolution of noise with the signal seems like a possible scenario, but I'd like to see some references, as this is a much more complex and slower process to add to Distort.
 
Last edited:
New version of Distort, v1.0.11 is now available for experimenting!

Some bug fixes and new features:
  • Added Jitter distortion (random, correlated, close-in and multi-frequency sine-modulated)
  • Added RPT function to repeat playback from start
  • Volume control now applies separately (and is remembered) for Bypass and non-Bypass playback, so each can be controlled independently
  • Fixed Mains frequency to display at 50 and 60Hz, previously displayed as a 3x multiple
  • Added a few more test frequencies useful for testing harmonics and jitter
  • App will load faster after it’s used for the first time now. Previously took a long time load each time it was started.
  • (EXPERIMENTAL) added Sone scale (perceptually-weighted). This will likely disappear in the next release

Jitter, Harmonic distortions, and Noise settings can all be combined together and applied to any desired test music track.

Jitter is recomputed for each sample.
Close-in jitter is the same as 1/f noise-modulated jitter​
Random is currently modulated with white noise​
Correlated is jitter modulated by the signal itself​

In addition, you can add any desired number of frequency-modulated jitter components in the table below. For each, specify frequency, peak-to-peak magnitude and units of time. You can see the preview of the settings using the test signal by pressing the Apply button:

distort4.png


Test signal can be chosen from any of the available options, including a multi-tone one:
1575850129547.png
 
Last edited:
@digitalfrost , can you please test v1.0.11 with your DS sound driver? I made one change that may help.

If it doesn't, please go to Distort Help->Loging menu and select Debug option. Then start playing a file to the DS driver. You can stop it quickly, if you want, then go to Help->Logging->View Log menu and copy and post the last page or so of output. It should have additional details that might hint as to why the sound isn't coming out.
 
Hi Paul,

As expected ;), I performed some Jitter tests with Distort.
Well done, nothing much to notice:

  • From time to time the Units selector (arrow) is disappearing as per pictures but we are allowed to directly type s/ms/us/ns/ps/fs.

1576074561359.png
1576074814156.png


  • For Wander guys, will it be possible in future releases to apply individual frequency components lower than 1 ?
Rgds.
 
Hi Paul,

As expected ;), I performed some Jitter tests with Distort.
Well done, nothing much to notice:

  • From time to time the Units selector (arrow) is disappearing as per pictures but we are allowed to directly type s/ms/us/ns/ps/fs.

View attachment 42196View attachment 42197

  • For Wander guys, will it be possible in future releases to apply individual frequency components lower than 1 ?
Rgds.

Thanks, Arpiben! Strange that the arrow disappears. I'll take a look.

So you want to be able to select frequencies that are lower than 1Hz? That should be easy.
 
Thanks, Arpiben! Strange that the arrow disappears. I'll take a look.

So you want to be able to select frequencies that are lower than 1Hz? That should be easy.

Correct Paul, less then 1 Hz for long term drift.
Thanks.
 
While a 20dB increase represents a 100x increase in power, it is perceived as (roughly) 4x louder
What do we mean by "this sound is twice as loud as that sound"? It's a purely subjective concept, actually meaning nothing at all.

In any case, the perceived loudness of various sounds is dependent upon several factors other than how far up the knob happens to be.
 
What do we mean by "this sound is twice as loud as that sound"? It's a purely subjective concept, actually meaning nothing at all.

In any case, the perceived loudness of various sounds is dependent upon several factors other than how far up the knob happens to be.

I’m not sure what you’re getting at here. It’s more of an average based on how human sensory organs work. The actual power required to achieve a 10dB increase is 10x, but the perception is “about twice as loud.”
 
My point is simply that "twice as loud", "four times as loud" are meaningless concepts which different listeners will interpret differently, therefore best avoided.
 
My point is simply that "twice as loud", "four times as loud" are meaningless concepts which different listeners will interpret differently, therefore best avoided.

Averages based on decades of research are not meaningless. They may not be precisely correct for every individual, but give some point of reference. I think people in this forum are interested in how physics relates to human perception.
 
@pkane

1.0.12 when switching from default test signal (1kHz) to multitone 32 and back again, it stays on multitone!

I can't seem to get the L/R//Mono/Stereo control to do anything unless the program is restarted. My problem or yours?

Suggestions:
  • Could a double click on the volume control reset it to 0dB?
  • When opening the "custom" panel, an option to inherit the current settings into that table? BTW what does "extrapolate" do? I would suggest options to save and load the contents of the custom panel within that panel
Great work in the making. For future consideration, how about the ability to hard set individual bits within a sample to 1 or 0 to examine the effect of missing (or stuck) bits or, more simple stuff such as truncating the sample size down to, say, 8 bit and then adding noise (i.e. dither) to restore beauty.
 
@pkane

1.0.12 when switching from default test signal (1kHz) to multitone 32 and back again, it stays on multitone!

I can't seem to get the L/R//Mono/Stereo control to do anything unless the program is restarted. My problem or yours?

Suggestions:
  • Could a double click on the volume control reset it to 0dB?
  • When opening the "custom" panel, an option to inherit the current settings into that table? BTW what does "extrapolate" do? I would suggest options to save and load the contents of the custom panel within that panel
Great work in the making. For future consideration, how about the ability to hard set individual bits within a sample to 1 or 0 to examine the effect of missing (or stuck) bits or, more simple stuff such as truncating the sample size down to, say, 8 bit and then adding noise (i.e. dither) to restore beauty.

Hmm, switching to anything other than the 1kHz test from multitone works just fine. How did I manage to screw that up? ;)

L/R/Stereo is a bug. If you select another file, it'll go into effect, but with the same file, it assumes you've already loaded it, so it doesn't try again :(

Could a double click on the volume control reset it to 0dB?
Yep, good idea!

When opening the "custom" panel, an option to inherit the current settings into that table? BTW what does "extrapolate" do? I would suggest
Also a good idea. I had it working this way automatically for a while, but this would override previously selected harmonics.

Extrapolate was meant to calculate additional harmonics from the example of a few initial ones by doing curve fitting. Doesn't quite work that way yet :)

Great work in the making. For future consideration, how about the ability to hard set individual bits within a sample to 1 or 0 to examine the effect of missing (or stuck) bits or, more simple stuff such as truncating the sample size down to, say, 8 bit and then adding noise (i.e. dither) to restore beauty.
1576098569369.png
 
Could you please check the operation of the LP filter control to see if it does what you intend? Can't seem to hear it in real time!
 
Could you please check the operation of the LP filter control to see if it does what you intend? Can't seem to hear it in real time!

That's a documented "feature" :)

If desired, you can also pick a low pass filter frequency. This is to eliminate the effect of harmonic distortion beyond audible frequencies, say above 20kHz. This filter is applied only when saving a file, not when playing it.
 
Fractional frequencies are
1576101912638.png
.
Thanks Paul.

1 kHz signal jittered @ 0.0122 Hz / 1 ns ( 64 bits Python Time Domain generated) Yellow vs Distort applied to file Blue.
1576101787940.png
 
Fair enough, but would it be an unacceptable addition to the CPU load if it was available in real time?

That's just me being lazy. At some point I'll rewrite the FIR filter routine to be real-time. For now I'd have to pre-process the whole file before starting playback, resulting in a delay and also adding more memory pressure.
 
Folks, an update with fixes and changes you've suggested is now available: v1.0.13
  • Fixed multitone display not switching to 1kHz test signal
  • Fixed L/R/Stereo selector not having an effect until after a restart
  • Validating the # of allowed Harmonics to be 7..500 instead of 1..500
  • Added clear and reset buttons to Custom Harmonics screen
  • Extrapolate button should work now in Custom Harmonics screen to fill in missing values
  • Double-click on volume control now resets it 0dB


Here's how Extrapolate is supposed to work. Let's say I want to enter 100 harmonic values, decreasing 1dB from one to the next. I'd start by entering the first few values, then highlight the ones I want to use as the basis for extrapolation, and press Extrapolate:

Enter the first few values and select them:
1576163292478.png


After pressing extrapolate, DISTORT will fill in the rest of the harmonics using the pattern defined by the ones I highlighted:
1576163336092.png


Press Undo if you don't like the result. This feature is using a polynomial fitting, so if there are 5-10 values that fit some simple curve, highlight them and Extrapolate will fill in the rest using an approximation to the curve defined by the initial values.
 
Version 1.0.14 is now available with the following changes:
  • Added custom sine-wave components to the Noise settings window. Supports frequencies into MHz and beyond
  • Improved quality of the close-in (1/f) jitter generator
  • Added 1kHz square wave and 7kHz sine wave to the list of test signals
  • Double-click on the either of the two vertical sliders (alpha and beta) resets them to the initial setting of 1000
  • Quicker reaction to user-initiated changes to settings, even while a computation is already in progress
  • Improved frequency plot resolution from around -180dB to better than -280dB
  • Added clipping indicator when combined noise/jitter/waveforms exceed -1..1 sample range
  • Improved THD+N calculation accuracy
The custom sine-wave noise components table allows the addition of arbitrary sine wave frequency to the signal. Frequencies less than 1Hz and more than 100MHz are possible. This can be used to see the IMD interaction of very high frequencies with the audible range, for example.

For ease of entry, the table supports scientific notation (1e-5 or 1.001e6 for example):

1576471511456.png


Clipping indicator is shown only when the resulting test signal exceeds -1..1 sample size. Simply change the Test Signal dB level to a lower number until clipping is gone:

1576471735711.png


As always, bug reports, ideas and comments are welcome!
 
Back
Top Bottom