DSD (SACD) FIR based software crossover

Status
This old topic is closed. If you want to reopen this topic, contact a moderator using the "Report Post" button.
Guys!
I want to introduce you to my recent development - software crossover for offline processing of the SACD DSD streams.
Its core based on a FIR filter and provides direct filtering for delta-sigma streams, without any intermediate conversion into the PCM.
Stereo DSD stream (inside a DSDIFF container file) on the crossover's input processed into the multichannel frequency-divided DSD stream (and also stored into the DSDIFF container) for further playback through the multi-way multi-amped speakers.
DSD offline crossover is absolutely free and can be downloaded on my site: dePhonica sound labs. in "Downloads" section.
Your feedback is very interesting for me, because now I'm starting development of the real-time DSD crossover (as a part of the xDSP2 software crossover project).

0003.png
 
Last edited:
Hi, what programming language did you used to create the software? Currently I'm interested to do such thing on windows system. I'm looking into Visual Basic capability to do such thing. Today I bought a book related to Visual Basic programming and first pages related to micro controller. Seems not what I'm looking for.
 
Hi, what programming language did you used to create the software? Currently I'm interested to do such thing on windows system. I'm looking into Visual Basic capability to do such thing. Today I bought a book related to Visual Basic programming and first pages related to micro controller. Seems not what I'm looking for.

Hi, Jay!
The crossover has C++ filtering backend, C# core and C#+WPF user interface.
VisualBasic for micro controller it's a something new, you know :)
 
VisualBasic for micro controller it's a something new, you know :)

Yes I know. They even removed port programming functionality in vb dot net. And especially for the plc part, VB is completely useless.

Its always a hassle "supporting" Microsoft product. Recently I had a hard time to choose between windows7 or windows8 (after they discontinued XP). None is preferable but I think I'll stick with windows8 :(
 
Yes I know. They even removed port programming functionality in vb dot net. And especially for the plc part, VB is completely useless.
IMO, the arduino ide with its c++ based syntactic sugar is easy enough to implement logic for home-brew devices. And I really think, the basic for mcu programming it's not the best choice. Except if the single led blinking firmware required :)

Its always a hassle "supporting" Microsoft product. Recently I had a hard time to choose between windows7 or windows8 (after they discontinued XP). None is preferable but I think I'll stick with windows8 :(
It seems, windows 7 is more preferable one for the advanced user.
And windows 8 is a step towards to the phone/pad-like UI style.
 
I am intrigued. I thought that to apply EQ and so on to DSD it first had to be converted to PCM (or its mathematical equivalent). If it's not giving away any secrets can you explain how direct frequency selective filtering of DSD works?
Well, briefly it's not a rocket-science. Subtleties in the implementation. :)
FIR filter works as "analog" filter with sample rate equal to DSD sampling frequency. The signal on the filter's output increases its significant bits from 1 to 5-8-10 and more, depends on the filter's cut frequencies, but holds its sample rate at DSD bit rate. After the filter, output is restored back to DSD stream by the delta-sigma modulator.
 
So you basically convert to high-sample-rate PCM (at the DSD bit rate) and then back to 1-bit?
Yes, you partially right.
Pulse density on the filter's input transforms to the signal amplitude samples. But unlike the regular PCM, difference between the following two samples (after the filter) never exceeds the LSB value - due to the high frequency rate. So, the delta-sigma modulator restores DSD stream with a maximum available quality (someone can name it 'bit-perfect').
 
Yes, you partially right.
Pulse density on the filter's input transforms to the signal amplitude samples. But unlike the regular PCM, difference between the following two samples (after the filter) never exceeds the LSB value - due to the high frequency rate. So, the delta-sigma modulator restores DSD stream with a maximum available quality (someone can name it 'bit-perfect').

OK, so technically it is PCM that encodes the amplitude difference instead of the absolute value - I guess pretty much precisely like "DSD-wide", as used by some digital editing / workstation software.
 
IMO, the arduino ide with its c++ based syntactic sugar is easy enough to implement logic for home-brew devices.

Yes I have an arduino module here but I'm not familiar with C++. But it is part of DOTNET so I think I may switch to it, but for application user interface I think I still need other language.

It seems, windows 7 is more preferable one for the advanced user.
And windows 8 is a step towards to the phone/pad-like UI style.

When I used Windows7 I had problems with networking, printing, etc. I thought it might have serious incompatibility issues (so I went back to XP).

I really don't like the user interface of Windows 8, but I think it shouldn't be difficult to "customize" the OS. The operation is smooth enough until now (only a few days). But I have used Windows Server 2008 R2 or 2012 which does not accept Windows 8 as a client. And if you think Windows7 is okay then I may look at it again.

Regarding software based DSP, what is your experience regarding the audibility of latency in the audio stream?
 
but for application user interface I think I still need other language.
I think c# is a reasonable choice at this moment.

Regarding software based DSP, what is your experience regarding the audibility of latency in the audio stream?
Of course, there are latency. Phase-linear filters requires as larger block of data for processing as the higher frequency resolution for cut frequencies required. Measurements for the first version of xDSP shows in->filter->out latency about 15-20 ms for ASIO version and FIR filter with 1024 taps.
For the directsound version latency is about 150-400 ms due to system input/output latency.
 
Latency is noticable when there is an event to compare with - e.g. video (synclip), pushing a MIDI keyboard button or watching a DAW displaying the currenty played clip. Of course all DSP'd channels must preserve the same delay.
You absolutely right!
It seems, playback start latency is not the most important parameter for the music listening (if delay not exceeds 0.5-1 seconds).
 
It seems, playback start latency is not the most important parameter for the music listening (if delay not exceeds 0.5-1 seconds).

Not the most important parameter, for sure. But I think I asked the wrong question because I'm sure I'm more critical than most regarding the audibility of things. I have little experience with this DSP latency but with group delay in loudspeakers I tend to feel that group delay makes music not interesting. But it is hard to set a "standard" of maximum delay allowable, when there are too many compromises at stake.

But your xDSP's 15-20ms is just perfect I would say.
 
I have little experience with this DSP latency but with group delay in loudspeakers I tend to feel that group delay makes music not interesting.
Group delay that varies with frequency it's a property of non-linear phase filters (IIR) without additional phase correction.
Since a FIR filter is a linear phase filter and has constant group delay, all frequency components have equal delay times.
 
Status
This old topic is closed. If you want to reopen this topic, contact a moderator using the "Report Post" button.