aboutsummaryrefslogtreecommitdiffstats
path: root/src/pcm/dsd2pcm/info.txt
diff options
context:
space:
mode:
Diffstat (limited to 'src/pcm/dsd2pcm/info.txt')
-rw-r--r--src/pcm/dsd2pcm/info.txt38
1 files changed, 38 insertions, 0 deletions
diff --git a/src/pcm/dsd2pcm/info.txt b/src/pcm/dsd2pcm/info.txt
new file mode 100644
index 000000000..15ff29245
--- /dev/null
+++ b/src/pcm/dsd2pcm/info.txt
@@ -0,0 +1,38 @@
+You downloaded the source code for "dsd2pcm" which is a simple little
+"filter" program, that takes a DSD data stream on stdin and converts
+it to a PCM stream (352.8 kHz, either 16 or 24 bits) and writes it to
+stdout. The code is split into three modules:
+
+ (1) dsd2pcm
+
+ This is where the 8:1 decimation magic happens. It's an
+ implementation of a symmetric 96-taps FIR lowpass filter
+ optimized for DSD inputs. If you feed this converter with
+ DSD64 you get a PCM stream at 352.8 kHz and floating point
+ samples. This module is independent and can be reused.
+
+ (2) noiseshape
+
+ A module for applying generic noise shaping filters. It's
+ used for the 16-bit output mode in "main" to preserve the
+ dynamic range. This module is independent and can be reused.
+
+ (3) main.cpp (file contains the main function and handles I/O)
+
+The first two modules are pure C for maximum portability. In addition,
+there are C++ wrapper headers for convenient use of these modules in
+C++. The main application is a C++ application and makes use of the
+C++ headers to access the functionality of the first two modules.
+
+
+Under Linux this program is easily compiled by typing
+
+ g++ *.c *.cpp -O3 -o dsd2pcm
+
+provided you have GCC installed. That's why I didn't bother writing
+any makefiles. :-p
+
+
+Cheers!
+SG
+