FLAC to DSD Tutorial: From Lossless PCM to DSD64/128
FLAC is a lossless container for PCM — it is not DSD. Converting FLAC to DSD (DSF/DFF) requires the full resampling + noise shaping + modulation pipeline. Here are ready-to-run commands.
1. What actually happens when you convert FLAC to DSD
A FLAC file contains PCM data (typically 16/24-bit, 44.1–192 kHz). Converting to DSD means:
- Decompress: FLAC → raw PCM samples
- Resample: PCM rate → DSD rate (44.1 kHz × 64 = 2.8224 MHz / DSD64)
- Noise shape: multi-bit → 1-bit quantization, pushing quantization noise to the ultrasonic band
- Package: output as DSF or DFF
The conversion maps a lossless source to a high-precision target — all information in the FLAC is preserved (resampling changes representation, not data), but no extra detail is conjured out of thin air.
2. Option A: direct command-line conversion (single file, full control)
# FLAC → DSF (DSD64, default 7th-order IIR)
DpdoEngine -i track.flac track.dsf --oversampling 64
# FLAC → DFF (DSD128, 11th-order IIR, in-band noise floor pushed furthest)
DpdoEngine -i track.flac track.dff --oversampling 128 --order 11
# FLAC → DSF (DSD256 + OpenCL acceleration + album metadata + report)
DpdoEngine -i track.flac track.dsf --oversampling 256 \
--opencl --report --artist "Artist" --album "Album" --year "2026"
Parameter quick reference:
- --oversampling N: oversampling ratio (64=DSD64, 128=DSD128, 256=DSD256)
- --order N: IIR noise shaping order (3/5/7/9/11, default 7)
- --opencl: GPU acceleration (OpenCL 1.2+)
- --report: generate an analysis report
- --metadata-from-input: auto-extract metadata from the source file (overridable by explicit flags)
- --reverse: reverse direction (DSD → PCM)
3. Option B: batch conversion (whole album, one command)
Use the convert batch script shipped with the release (requires ffmpeg + DpdoEngine):
# Enter the directory containing FLAC files, batch-convert to DSF (DSD64)
cd album-directory
bash convert flac2dsf
# Specify output rate (example: DSD128)
bash convert flac2dsf 128
Supported conversion types:
PCM/PCM: wav2flac, flac2wav, m4a2flac
DSD/PCM: dsf2flac, dsf2wav, dff2flac, dff2wav
PCM→DSD: wav2dsf, wav2dff, flac2dsf, flac2dff
PCM→DXD: wav2dxd_w64, wav2dxd_wav, wav2dxd_flac, flac2dxd_*
4. Verifying the result
# Measure distortion and noise floor of the output DSD file (THD+N)
thdn track.dsf
# Compare in-band performance of different noise shaping orders
dsp_bench --input test.flac --order 9 --order 11
What to check: - In-band (20 Hz–20 kHz) noise floor meets expectations (DSD64 theoretical SNR is on the order of 120 dB; actual depends on shaping order) - Frequency-response consistency with the original PCM (did the resampling filter introduce audible deviation?) - Actual listening through your DAC/player (the playback chain is the final judge)
5. FAQ
Does the FLAC source rate matter? 44.1 kHz sources convert perfectly well; 96/192 kHz sources are even more comfortable at DSD128+ (less interpolation error).
Can the output go straight into SACD authoring? Yes. Feed the DSF/DFF output directly to DpdoPackSACD to build a SACD ISO (see the authoring tutorial).
Batch conversion is slow — what can I do? Enable --opencl (GPU acceleration), or lower the order (7th-order IIR is real-time friendly on modest hardware).
Written by Dpdo. Commands verified against DpdoEngine 6.68 and the release convert script.