Playing DSD files without MPD
MPD is a cool server that is able to play DSD files for a while now. But it’s a bit of overkill for those of us who don’t want a complex sound server just to send a DSD /DSF files to an USB DAC. Here’s how you can play those files with ffmpeg and some glue 🙂
To be honest: I don’t like to move files around, refresh servers or create playlists. I am old fashioned. I just type play this or play that and I expect sound to come from my speakers. So far – this works great with FLACs, MP3s or WAVs. Not so good for DSD or DSF files. Quit frankly – I didn’t find anything to work -out of the box- on my little Linux laptop. While ffmpeg is able to decode dsd, it is still missing the crucial part to convert the audio into DOP (dsd over pcm).
Believe me – i tried almost everything. I even sent a “mayday” over the ffmpeg mailing list – but .. to no avail (yet). So – if everything else fails – one has to sit down and find the solution herself.
Here’s what we want:
A converter that converts a DSD file into a DOP file and pushes this DOP data over alsa to a USB dac. Well – there’s DSF2FLAC and this little tools has a neat feature: It allows to pack DOP files into the Flac-Container.
dsf2flac -d -r 176400 -i thedsdaudio.dsf -o thedsdaudio.flac
Cool. Took about another hour or so to be able to play that flac via ffmpeg.
ffmpeg -i thedsdaudio.flac -r 176400 -c pcm_s32le -f alsa hw:1
Voila. The DSD light on my DAC turns on and I am happy. But not happy enough. It takes time to convert a DSD into a flac. And I don’t wont to wait. So – I went ahead and patched dsf2flac to be able to dump the DOP data to stdout.
So, it looks like that now:
dsf2flac -d -r 176400 -i thedsdaudio.dsf -o - 2>/dev/null | ffmpeg -i - -r 176400 -c pcm_s32le -f alsa hw:1
Now we’re talking. No more MPD. Knit yourself a little shell script around it and you are ready to go.
Here’s the replacement main.cpp that you should copy over the original before compiling.
Update: I’ve been told that the original dsf2flac seems not be available anymore. So – here’s the original complete dsf2flac already patched for piping.
That’s all folks. Have fun.
Unfortunately DSF2FLAC project is no longer available. There is fork on GitHub (https://github.com/hank/dsf2flac) but this fork was created before DoP option has been added. Could you publish (or send me) full source code of this DSF2FLAC with DoP option?
I have updated the blog post with the original sources. Have fun 🙂
Michaela