• Home
  • History
  • Annotate
Name Date Size #Lines LOC

..17-May-2021-

examples/H03-May-2022-7,4606,083

h/H17-May-2021-2,1081,745

lib/H17-May-2021-12,1478,573

modules/H17-May-2021-24,16019,050

test/H17-May-2021-10,9558,471

util/H17-May-2021-2,1871,745

.gitignoreH A D17-May-2021177 2018

CHANGELOG.mdH A D17-May-20217.4 KiB246228

LICENSEH A D17-May-20211.1 KiB2217

MakefileH A D17-May-20213.2 KiB12597

README.mdH A D17-May-20213.2 KiB11083

config.def.mkH A D17-May-20211.7 KiB163140

meson.buildH A D17-May-20211.7 KiB6257

README.md

1Soundpipe
2=========
3
4Soundpipe is a lightweight music DSP library written in C. It aims to provide
5a set of high-quality DSP modules for composers, sound designers,
6and creative coders.
7
8Soundpipe supports a wide range of synthesis and audio DSP
9techniques which include:
10
11- Classic Filter Design (Moog, Butterworth, etc)
12- High-precision and linearly interpolated wavetable oscillators
13- Bandlimited oscillators (square, saw, triangle)
14- FM synthesis
15- Karplus-strong instruments
16- Variable delay lines
17- String resonators
18- Spectral Resynthesis
19- Partitioned Convolution
20- Physical modeling
21- Pitch tracking
22- Distortion
23- Reverberation
24- Samplers / sample playback
25- Padsynth algorithm
26- Beat repeat
27- Paulstretch algorithm
28- FOF and FOG granular synthesis
29- Time-domain pitch shifting
30
31More information on specific Soundpipe modules can be found in the
32[Soundpipe module reference guide](https://paulbatchelor.github.com/res/soundpipe/docs/).
33
34Features
35---------
36- High quality modules ported from Csound and FAUST
37- Sample accurate timing
38- Small codebase
39- Static library
40- Easy to extend
41- Easy to embed
42
43
44Compilation
45-----------
46
47By default, Soundpipe needs libsndfile, and a standard build environment.
48Other modules that use other external libraries will need to be explicitly compiled
49by modifying config.mk.
50
51To compile:
52
53make
54
55sudo make install
56
57
58Examples
59--------
60To build the examples, go into the examples folder and run "make", which will
61create files with a .bin extention. To run an example, run "./ex_foo.bin". When
62an example is run, it will generate a 5 second file called "test.wav".
63
64
65Tests
66-----
67
68Tests in Soundpipe are used to determine whether or not modules behave as
69expected. Tests write the output of a module to memory, and check the MD5 hash
70value of the output against the MD5 value of a reference signal.
71
72To build a test file, go into the test folder, and run "make". Then, run
73"./run.bin", which runs the tests. As the tests are run, an "ok" will appear in
74the log if a test passes, and a "not ok" will appear if a test fails.
75
76It is possible to hear the output of a particular test if you know the test
77number. You will need to have sox installed. For example,
78to hear what test 11 sounds like, run the following
79commands:
80
81./run.bin render 11
82
83./write_wave.sh 0011.raw
84
85This will generate a file called out.wav.
86
87The testing utility has a few optional arguments. To see all possible arguments,
88run "./run.bin help".
89
90The Soundpipe Model
91-------------------
92
93Soundpipe is callback driven. Every time Soundpipe needs a frame, it will
94call upon a single function specified by the user. Soundpipe modules are
95designed to process a signal one sample at a time.  Every module follows the
96same life cycle:
97
981. Create: Memory is allocated for the data struct.
992. Initialize: Buffers are allocated, and initial variables and constants
100are set.
1013. Compute: the module takes in inputs (if applicable), and generates a
102single sample of output.
1034. Destroy: All memory allocated is freed.
104
105Documentation
106-------------
107If you have lua installed on your computer, you can generate the current html
108documentation for soundpipe by running "make docs". A folder called "docs"
109will be created. The top page for the documentation is docs/index.html.
110