Skip to main content

Notice

Please note that most of the software linked on this forum is likely to be safe to use. If you are unsure, feel free to ask in the relevant topics, or send a private message to an administrator or moderator. To help curb the problems of false positives, or in the event that you do find actual malware, you can contribute through the article linked here.
Topic: Patched foo_input_sacd version for high-quality DSD->PCM (88.2/96 k (Read 30557 times) previous topic - next topic
0 Members and 1 Guest are viewing this topic.

Patched foo_input_sacd version for high-quality DSD->PCM (88.2/96 k

Hi guys!

This plugin (foo_input_sacd_hq) is patched version of Super Audio CD Decoder plugin v0.5.11 with added high-quality DSD->PCM 88.2/96 kHz conversion.

http://dl.dropbox.com/u/18475891/foo_input_sacd_hq.zip

Technical details of patched version:

- single-pass double precision processing;
- 24-bit dithering;
- SSE2 required;
- 88.2 kHz sample rate support (32x downsampling);
- 96 kHz sample rate support (5/147 polyphase filter);
- 2.8 mHz DSD stream support;
- filters were selected by ear.

Removed functionality in patched version:

- DSD stream output (PCM only);
- 44.1 kHz support (doesn't make sense);
- 176.4 kHz support (my audio interface doesn't support it);
- 5.6 mHz DSD stream support (didn't find any to check);
- all another DSD->PCM algorithms (BTW, only double precision multistage
one sounded good for me).

Conclusion:

New filters added depth and feel of SACD in PCM output. I can't say that sound of converted PCM stream is better then native SACD player one but results are really comparable.

PS. Also this plugin capable to play 5.1 with 55%/61% load on my CPU (Athlon 7750 2.7 GHz).

PPS. Also single-precision version with lower CPU load available in "bonus\single-precision-version" directory of archive.

Patched foo_input_sacd version for high-quality DSD->PCM (88.2/96 k

Reply #1
- 24-bit dithering;

Just a question, why the dithering? In foobar the dithering (if so desired) is done in the output stage. Not to mention that 24bit doesn't seem to benefit from dither.
In theory, there is no difference between theory and practice. In practice there is.

Patched foo_input_sacd version for high-quality DSD->PCM (88.2/96 k

Reply #2
- 24-bit dithering;

Just a question, why the dithering? In foobar the dithering (if so desired) is done in the output stage. Not to mention that 24bit doesn't seem to benefit from dither.


It sounds better (checked with foo_abx for blind testing).

Also in Vista/Seven foobar dithering is disabled.

--------
YirkhaDec 31 2009, 06:41
Using DirectSound output, the output format should be fixed only for Windows Vista and later, to avoid unnecessary conversions when the data will be processed by the main system mixer later anyway. The mixer uses 32-bit floating point samples, so that's what the option is fixed to. Also for floating point data, dither doesn't make sense, therefore it's disabled as well.
---------
http://www.hydrogenaudio.org/forums//lofiv...php/t77399.html

Patched foo_input_sacd version for high-quality DSD->PCM (88.2/96 k

Reply #3
All this "selected by ear" and "sounds better" makes me ask: Are you a sound engineer? What is your equipment? Also, I prefer higher samplerates as my equipment supports them. Also also, quoting "Direct Sound" sounds kind of fishy, WASAPI should be the output of choice when playing SACD. Thanks.

Patched foo_input_sacd version for high-quality DSD->PCM (88.2/96 k

Reply #4
All this "selected by ear" and "sounds better" makes me ask: Are you a sound engineer? What is your equipment? Also, I prefer higher samplerates as my equipment supports them. Also also, quoting "Direct Sound" sounds kind of fishy, WASAPI should be the output of choice when playing SACD. Thanks.


Echo AudioFire 8 -> KRK VXT6 in threated home studio room. And also Marantz SA7001 KI SACD player to check.

I'm the author of "Limiter No6" mastering limiter plugin and "Molot" compressor plugin.
http://www.pluginboutique.com/manufacturers/37-VladgSound

Echo AudioFire drivers don't support WASAPI :-( I use ASIO output.

Patched foo_input_sacd version for high-quality DSD->PCM (88.2/96 k

Reply #5
Just a quick feedback that the modifications sound great! Any chance to put back in what you took out before? (Especially higher sample rates)

Patched foo_input_sacd version for high-quality DSD->PCM (88.2/96 k

Reply #6
Just a quick feedback that the modifications sound great! Any chance to put back in what you took out before? (Especially higher sample rates)


Thanks!

About stuff removed:
- DSD output. If you have DSD capable DAC you don't need this patched version :-)
- 44.1 support. I don't think it's usable to listen SACD on 44.1
- all another algorithms of PCM conversion. Again, if you like them you don't need this patched version.
- 176.4 support. That's what you want for! :-)

About 176.4. I have idea to add both 176.4 and 192 support (add to 88.1 and 96 that already supported). But I don't have any >96 kHz capable audio interface around me to check! As soon as I can find it I'll add it!

Hmm. Maybe I should add them blindly and ask to check somebody else...

 

Patched foo_input_sacd version for high-quality DSD->PCM (88.2/96 k

Reply #8
About 176.4. I have idea to add both 176.4 and 192 support (add to 88.1 and 96 that already supported). But I don't have any >96 kHz capable audio interface around me to check! As soon as I can find it I'll add it!  Hmm. Maybe I should add them blindly and ask to check somebody else...


Yup, those samplerates are what make me happy  Most people use HDMI to send the output to their digital receiver and most digital receivers can at least do 192 (mine can also do 176).

Patched foo_input_sacd version for high-quality DSD->PCM (88.2/96 k

Reply #9
Cool, thanks for this! Looking forward to trying it out. Will you be updating it alongside foo_input_sacd updates?
(As an aside, I can't for the life of me find a changelog for foo_input_sacd on the website; I'd love to know what changes between versions!)

Slightly unrelated to what you're doing with the component, but one of the things concerning tagging of SACD .ISO files using foo_input_sacd is that an XML file containing the tags is stored in foobar2000 appdata's /sacd-metabase using a long string of numbers... this makes copying/moving a SACD release with its tags particularly annoying, as you have to go into /sacd-metabase and search for the file containing the tags. As a feature request, would you be able to make the .xml be stored in the .iso's directory, and read from there? I asked the author about this and he said not having a main folder to store the .xml files would be "not good," but didn't specify why...

Thank you

Patched foo_input_sacd version for high-quality DSD->PCM (88.2/96 k

Reply #10
I noticed now that Max has updated his original sacd decoder to include selectable FIR filters. Has anybody compared results yet?

Patched foo_input_sacd version for high-quality DSD->PCM (88.2/96 k

Reply #11
not having a main folder to store the .xml files would be "not good," but didn't specify why...

I guess that is because there is no way for the SACD plug in to inquire foobar about the actual location of the file... If is in the play list, it plays; probably only foobar knows where it "comes" from.

Patched foo_input_sacd version for high-quality DSD->PCM (88.2/96 k

Reply #12
(As an aside, I can't for the life of me find a changelog for foo_input_sacd on the website; I'd love to know what changes between versions!)


check the readme.txt inside the plugin zip, the changelog is there.

Patched foo_input_sacd version for high-quality DSD->PCM (88.2/96 k

Reply #13
I guess that is because there is no way for the SACD plug in to inquire foobar about the actual location of the file... If is in the play list, it plays; probably only foobar knows where it "comes" from.


That would make more sense.


check the readme.txt inside the plugin zip, the changelog is there.


Thanks!

Patched foo_input_sacd version for high-quality DSD->PCM (88.2/96 k

Reply #14
- 44.1 support. I don't think it's usable to listen SACD on 44.1
Because?
I’m still waiting…

I don’t really know where to start with applying TOS #8 to this thread, but I just binned one especially obvious case. If you’d all like to provide some evidence for all this ‘sounds better wow high resolutions’ stuff, or at least stop talking about it, that’d be great.

Patched foo_input_sacd version for high-quality DSD->PCM (88.2/96 k

Reply #15
- 44.1 support. I don't think it's usable to listen SACD on 44.1
Because?
I’m still waiting…


Hmm, I'll try to explain.

If you want to listen high-quality audio records (24/96 for example and DSD too) you should have high-quality audio gear. In another case you can listen lossy encoded files because there's no hearable difference. High-quality audio interfaces support high sample rates (more than 48 kHz).

Support of 44.1 kHz requires very steep filter with roll-off starting from about 20.5 kHz to 22.5 kHz. This filter will contain big number of taps and it will lead to increased CPU load but the sound won't be better. Also high number of taps will increase quantization errors in FIR multiplication.

Now check this well-known DSD dynamic range picture:
http://www.positive-feedback.com/Issue59/i...SD_figure_2.jpg

The DSD 1-bit quantization noise slowly rising more and more and starts to dominate above audio harmonics around 30-40 kHz.

The task of DSD->PCM conversion is to filter out 1-bit quantization noise. If I set my low-pass filter around 30-40 kHz, it'll be okay. But if I set my low-pass filter around 21 kHz, I will filter out some audio harmonics.

Next, I can say that gently sloping filter curves have more natural sound. It's common audio-processing knowledge. I think it's related with less ringing artifacts and maybe less FIR taps (and less quantization errors and so on). To filter out 1-bit quantization noise I can use gently sloping filter. Why? Because sound above Nyquist frequency is just a noise. And after downsampling this noise will be "mirrored" back and act as "dithering (shaped) noise", e.g. psychoacoustically will enhance depth (dynamic range).

If I apply such filter to area of 21 kHz, harmonics of audio signal will be "mirrored" back and if you familiar how aliasing sounds it will sounds in this way (e.g. "dirty")

So my conclusion is:
1. Support of 44.1 kHz requires different type of filter.
2. This type of filter has greater CPU usage than high-sample rate filters
3. This type of filter has more quantization errors, which reduces sound quality.
4. This type of filter drops artifacts of SACD sound, which enhance percepting depth of audio image (high-frequency noise). If you listen to SACD, they all have great depth. Look also at the picture of DSD dynamic range.
5. People, who prefer high-quality audio records (24/96 for example) will not listen to them downsampled at 44.1.

That's why there's no 44.1 support. :-)

I don’t really know where to start with applying TOS #8 to this thread, but I just binned one especially obvious case. If you’d all like to provide some evidence for all this ‘sounds better wow high resolutions’ stuff, or at least stop talking about it, that’d be great.


The quesion is about why this mod is better than original?

1. Support of 96 kHz (original had not).
2. Less CPU usage (about 1.5 times).
3. Single-pass 64-bit internal processing with dithering the result to 32-bit.

Some comments about output dithering. As you know, dithering can psychoacoustically increase depth (dynamic range). For example, for 16-bit it can be increased from 96 dB to around 115 dB. As I said SACDs have great dynamic range so why don't try to increase dynamic range above 24-bit. It's also common knowledge that human ear has dynamic range about 120 dB, but also human ear can adapt to sound volume, so even in quieter parts of record we can hear reverberation tails.

Patched foo_input_sacd version for high-quality DSD->PCM (88.2/96 k

Reply #16
Question about the dithering: Does the plugin use foobar own dither process (with noise shaping) or tpdf?

Patched foo_input_sacd version for high-quality DSD->PCM (88.2/96 k

Reply #17
I'd have a noob question about SACD conversion:

does this patched decoder at 96kHz produce generally more faithful audio than original SACD plugin with multistage FP double precission at 88.2 kHz

and

is the quality of 96kHz output better quality than 88.2kHz or is that only upsampled 88.2kHz output? I'm curious because SACD 2822400 bits/second can't produce higher output than 88.2kHz.

Patched foo_input_sacd version for high-quality DSD->PCM (88.2/96 k

Reply #18
Probably 96k it will sound worse than 88.1k. At the best case scenario it will sound equal. This is because the fact that SACD/DSD samplerate is a 64 multiple of 44.1kHz, so the conversion to 88.2 or 176.4 leads to better estimated PCM values (less distortions). 96kHz needs to make use of supplemental polyphase FIR filters. Those might not be "heard" by somebody that already uses a sigma-delta DAC that employs internally that kind of filters, but if somebody use a true multibit DAC, that doesn't use any FIR filters inside, then it might hear the difference.

And BTW, based strictly on information capacity, DSD is equal either to 32 bit 88.2kHz PCM or 16 bit 176.4kHz PCM.
Because the state-of-the-art DAC's have only 22bit of actual output resolution (even the ones that claim 32 bit capability), I favor the conversion of DSD to 24bit 176kHz PCM.

Patched foo_input_sacd version for high-quality DSD->PCM (88.2/96 k

Reply #19
Probably 96k it will sound worse than 88.1k. At the best case scenario it will sound equal.


What's the 96kHz target samplerate in patched build good for then?
Then if I decide for decoding target PCM at 88.2kHz, does the patched decoder still provide a quality lead over the original decoder (using multistage double prec)?

Patched foo_input_sacd version for high-quality DSD->PCM (88.2/96 k

Reply #20
Well, there are many sound cards that work nativelly only at 48/96 kHz, because they have just one clock on-board. Windows will upsample automatically the 44.1 to 48 via DirectSound, but it doesn't do a good job. Only using ASIO or WASAPI you can be sure of the real capabilities.

Patched foo_input_sacd version for high-quality DSD->PCM (88.2/96 k

Reply #21
Unfortunatelly neither WASAPI nor ASIO seems to be supported with my audio card for 88.2kHz rate streams.
If my desired input for conversion of SACD is PCM at 96kHz / 24-bit / 2 channels, what of listed ways is the less lossy (ie. retains the most of SACD dynamics for converter)?

1. Use patched foo_input_sacd with target set to 96kHz
2. Use patched foo_input_sacd with target set to 88.2kHz, then upsample by SoX with dithering to 96kHz
3. Use standard foo_input_sacd with multistage double precission and output 88.2kHz, then upsample by SoX with dithering to 96kHz
4. Use standard foo_input_sacd with multistage double precission and output 176.4kHz, then downsample by SoX with dithering to 96kHz (this method probably narrows the stream to 16 bit samples)

Not sure which methods retain 24 bits and which not.

Patched foo_input_sacd version for high-quality DSD->PCM (88.2/96 k

Reply #22
I personally like the job done by SoX upsampling.

There is not a "retaining 24 bit" per se, DSD is 1 bit stream. Conversion at 176kHz is done with full 24 bit. Now, I am not sure how much real information you get in those 24 bit at the top end of the spectrum (over 50-60 kHz of analog) versus the 88kHz (that limits the analog BW at 40-42kHz). SNR for DSD drops drastically past 50kHz.
But... probably is not enough to make a difference, especially when a lot of my SACD's, from classic rock albums, don't go past 18kHz in musical program (probably the original analog tapes limit).

Patched foo_input_sacd version for high-quality DSD->PCM (88.2/96 k

Reply #23
Hi guys!

This plugin (foo_input_sacd_hq) is patched version of Super Audio CD Decoder plugin v0.5.11 with added high-quality DSD->PCM 88.2/96 kHz conversion.

http://dl.dropbox.com/u/18475891/foo_input_sacd_hq.zip

Technical details of patched version:

- single-pass double precision processing;
- 24-bit dithering;
- SSE2 required;
- 88.2 kHz sample rate support (32x downsampling);
- 96 kHz sample rate support (5/147 polyphase filter);
- 2.8 mHz DSD stream support;
- filters were selected by ear.


The quesion is about why this mod is better than original?

1. Support of 96 kHz (original had not).
2. Less CPU usage (about 1.5 times).
3. Single-pass 64-bit internal processing with dithering the result to 32-bit.


Can you clarify please?

Is the 64-bit wordlength dithered at 24 bit or at 32 bit?
Or maybe dither noise is added at the 24th bit but the data truncated at 32 bit?


Patched foo_input_sacd version for high-quality DSD->PCM (88.2/96 k

Reply #24
Aside from your question which I cannot answer either the patched plugin is not working in recent foobar versions. I tried it out because I wanted to carry out some research about the plugin's quality but foobar refused to install it.

Does anybody have some advice which is the proper (most "audiophile") setup for the offline conversion of DSD->PCM with the original foo_input_sacd plugin (not taking into account CPU load).

I am not interested in an answer regarding the (re-)sample rate (which I will chose dependent on the highest *usable* frequencies in the DSD material, which oftentimes does not go beyond 22kHz). I am interested in answers about the best sounding cut-off filters - and/or the theoretically best ones. And is there a single answer to the question if double precision or floating point math is sounding better (and again: should be theoretically better)?

Thanks for all contributions - theoretical and practical ones

/audiogene
Very early adopter - now grown old audiophile.