KSTR
Major Contributor
Hi,
Some of you might have followed my thead Measurements: "ESS Hump" revisited (Khadas Tone Board V1.3) where I investigated the infamous "ESS hump" in close detail. It turned out that the distortion can be very precisely emulated with a simple static non-linearity (which is not the root cause, tough, rather it is less than optimal circuit and OpAmps used which gives an equivalent error pattern). I could achieve an almost perfect fit of model to measurements for the KTB, both in frequency and time domains, at any signal level. This offers a way to investigate the audibility of this very special distortion pattern in true isolation, free from other factors. Simply testing with files. Plus it allows for variations, that is the level of the distortion can be increased at will.
This is a simple command-line tool for Windows (source code is supplied in case you want to compile it for Linux etc) and I'm hoping you are familiar with this mode. If not, easiest way is to create a directory, put the program there as well as the audio files you want to process. Then open a command shell by pressing WindowsKey+R, type in "cmd" and execute. Then navigate to the directory using "cd" command (copy the path in Explorer with Ctrl-C and paste it with Ctrl-V).
Usage:
A typical call would look like this:
humpify "NORTH COUNTRY II.wav" test.wav 30
Note the quote-characters (") surrounding the file name here, this is required when the name contains spaces and other reserved characters.
No file format checking etc is done by the program, I'm blindly assuming you are feeding proper .WAV files in 24 bit resolution (3-byte packed integer format), stereo or mono, with no frills like extra metadata etc. Sample rate does not matter. If you have regular 16-bit files you need to convert them to 24 bits first.
The "-r" option allows to get the added distortion in isolation rather than imposed on the input file so you can listen to it directly. The zoom factor is applied here as well (use 100 for maximum level -- which will be -8dBFSpeak)
If you have well recorded music with a lot of dynamic range, that is, containing rather quiet passages, preferably in a hi-res format (24bit, and higher than 44.1kHz is useful as well here) then you will probably notice the distortion immediately with zoom factors of 40dB and more. That's the easy part ;-)
Once you go below -30dB it's going to be a lot harder to tell the files apart in an controlled blind listening test (like with foobar's ABX plugin). The real question now is whether we have members that can identify the distortion at the actual true distortion levels? Or to make it a little easier, at zoom factors not larger than 10...20dB?
We have to keep in mind that the playback DAC is also important here. When it sports the hump itself it makes little sense to use the program with 0dB zoom factor because then the contribution from the program is too small compared to the baseline error. But at 10dB or more the generated distortion should dwarf any similar distortion in the playback DAC.
Obviously, the emulation does not mimic the complete behavior of a DAC because only the specific distortion mechanism which is responsible for the hump is modelled but nothing else, still I think it can be very useful to evalute basic audibility thresholds.
Some of you might have followed my thead Measurements: "ESS Hump" revisited (Khadas Tone Board V1.3) where I investigated the infamous "ESS hump" in close detail. It turned out that the distortion can be very precisely emulated with a simple static non-linearity (which is not the root cause, tough, rather it is less than optimal circuit and OpAmps used which gives an equivalent error pattern). I could achieve an almost perfect fit of model to measurements for the KTB, both in frequency and time domains, at any signal level. This offers a way to investigate the audibility of this very special distortion pattern in true isolation, free from other factors. Simply testing with files. Plus it allows for variations, that is the level of the distortion can be increased at will.
This is a simple command-line tool for Windows (source code is supplied in case you want to compile it for Linux etc) and I'm hoping you are familiar with this mode. If not, easiest way is to create a directory, put the program there as well as the audio files you want to process. Then open a command shell by pressing WindowsKey+R, type in "cmd" and execute. Then navigate to the directory using "cd" command (copy the path in Explorer with Ctrl-C and paste it with Ctrl-V).
Usage:
Code:
Usage: humpify in_file out_file zoom_factor_db [-r]
in_file : WAV input file, must be 24bit packed integers format
out_file : generated WAV output file, 24bit packed integers
zoom_factor_db : zoom factor in dB for the generated distortion, 0 ... +100
-r : optional, output file is residual only (not added to input file)"+
A typical call would look like this:
humpify "NORTH COUNTRY II.wav" test.wav 30
Note the quote-characters (") surrounding the file name here, this is required when the name contains spaces and other reserved characters.
No file format checking etc is done by the program, I'm blindly assuming you are feeding proper .WAV files in 24 bit resolution (3-byte packed integer format), stereo or mono, with no frills like extra metadata etc. Sample rate does not matter. If you have regular 16-bit files you need to convert them to 24 bits first.
The "-r" option allows to get the added distortion in isolation rather than imposed on the input file so you can listen to it directly. The zoom factor is applied here as well (use 100 for maximum level -- which will be -8dBFSpeak)
If you have well recorded music with a lot of dynamic range, that is, containing rather quiet passages, preferably in a hi-res format (24bit, and higher than 44.1kHz is useful as well here) then you will probably notice the distortion immediately with zoom factors of 40dB and more. That's the easy part ;-)
Once you go below -30dB it's going to be a lot harder to tell the files apart in an controlled blind listening test (like with foobar's ABX plugin). The real question now is whether we have members that can identify the distortion at the actual true distortion levels? Or to make it a little easier, at zoom factors not larger than 10...20dB?
We have to keep in mind that the playback DAC is also important here. When it sports the hump itself it makes little sense to use the program with 0dB zoom factor because then the contribution from the program is too small compared to the baseline error. But at 10dB or more the generated distortion should dwarf any similar distortion in the playback DAC.
Obviously, the emulation does not mimic the complete behavior of a DAC because only the specific distortion mechanism which is responsible for the hump is modelled but nothing else, still I think it can be very useful to evalute basic audibility thresholds.