DirectStream Max PCM Rate


There’s room for a lot of confusion. In general you don’t want take a huge step in sample rate ratios when upsampling: the bigger the step the more resources it takes to do the filter well. But taking multiple steps to get there isn’t good for other reasons. Everything is a compromise.

When using external upsamplers you are limited to a maximum top rate and hence you’ll need a two step process in aggregate to use one with the DS. On the other hand since Huron all PCM first goes to 352.8k or 384k then to 20 x (64 x 44100). (Before that PCM went to 176.4k or 192k and then to 10 x (64 x 44100).)

So doing an external step to 352.8k is not evil from the too-many-steps perspective.

As to quality - HQPlayer and the DS (and some others) do quality processing that is better than DAC chips or even most SRC chips just because software upsamplers can have a lot more resources at the ready and don’t have to save multiplies (or whatever) by hook or by crook like hardware often does.

I use more resources that most external upsamplers and I use more precision than most (my internal registers are > 64 bits long when needed compared to 64 bit floating point which only supports 52 bits of precision of the form that’s needed for upsampling.) That doesn’t mean that no one else is taking care when upsampling, but many just presume that 64bit floating point is enough…

Most upsamplers out there (NOT HQPlayer) choose less than optimal filters, at least if you want to preserve the waveform shape. I think preserving waveform shape is important, but not everyone agrees. With HQPlayer and some others you can make your own choices of what filter design you like best.


Hi Ted, and thanks, as always, for dropping so much knowledge! Are you saying that by doing an external upconversion of 44.1k to 352.8k ahead of the DS(J), the DS(J) would only perform one upconversion step as opposed to two? If so, that is very interesting, as I had assumed the DS(J) converted 44.1k (and every other sampling frequency) directly to 20xDSD in one step. Also, it sounds as if a pre-DS(J) upconversion to anything less than 352.8k would result in ‘too many steps,’ as you describe it. Thanks again.


When you take a big step instead of a few smaller steps, you need to do the filtering at the highest rate and you need many more coefficients… The two step upconversion of lower rate PCM is a compromise, but not much of one. The early DS releases used a 2 : 1 upsampler to take 44.1 (or 48) to 88.2 (or 96), then another 2 : 1 upsampler to go from 88.2 -> 176.4, then the big step to 10 x 60 x 44.1k. When I used a single step to 176.4 (or 192) for Pikes Peak people definitely noticed. The single step to 352.8 or 384 in Huron and Redcloud is even better.

When going from 352.8 (or 384) to 20 x 64 x 44.1k the antialiasing filter can be very gentle so it doesn’t hurt the sound quality much.



I hope this is my last set of questions on this topic.

I can use HQPlayer to upsample PCM to 352.8 or I can upsample PCM to DS128 and then send it to the DS. Is one way better or worse than the other? Does one method result in more work for the DS or cause the DS to make more noise? Does the DS handle PCM better than DSD or DSD better than PCM? Or is not that simple?



You know my first answer: it depends. :slight_smile:

I don’t personally know the quality of their DSD sigma delta modulator. I have no reason to assume it doesn’t work well, but if you are going to process the sound (including upsampling, etc) I’d go to 352.8k. 352.8k doesn’t make noise with the PCM upsampler and makes just about the same noise as DSD. I kind of doubt that HQPlayer does their processing at the DSD128 rate (and then just modulates to DSD128) so 352.8k should be fine.