All Projects → PaulBatchelor → Soundpipe

PaulBatchelor / Soundpipe

Licence: other
A lightweight music DSP library.

Programming Languages

c
50402 projects - #5 most used programming language

Projects that are alternatives of or similar to Soundpipe

Dx7 Supercollider
My accurate Yamaha DX-7 clone. Programmed in Supercollider.
Stars: ✭ 395 (-57.11%)
Mutual labels:  music, sound, dsp, synthesis
Pyo
Python DSP module
Stars: ✭ 904 (-1.85%)
Mutual labels:  music, sound, dsp, synthesis
Matchering
🎚️ Open Source Audio Matching and Mastering
Stars: ✭ 398 (-56.79%)
Mutual labels:  music, sound, dsp
Voc
A physical model of the human vocal tract using literate programming, based on Pink Trombone.
Stars: ✭ 129 (-85.99%)
Mutual labels:  music, dsp, synthesis
Torch Audiomentations
Fast audio data augmentation in PyTorch. Inspired by audiomentations. Useful for deep learning.
Stars: ✭ 164 (-82.19%)
Mutual labels:  music, sound, dsp
Supercollider
An audio server, programming language, and IDE for sound synthesis and algorithmic composition.
Stars: ✭ 4,036 (+338.22%)
Mutual labels:  music, sound, synthesis
Sporth
A small stack-based audio language.
Stars: ✭ 325 (-64.71%)
Mutual labels:  music, dsp, synthesis
Main-Supercollider-Files
my supercollider codes, version history is at the branches
Stars: ✭ 21 (-97.72%)
Mutual labels:  dsp, sound, synthesis
Gwion
🎵 strongly-timed musical programming language
Stars: ✭ 235 (-74.48%)
Mutual labels:  music, sound, synthesis
Mimium
mimium (MInimal Musical medIUM) a programming language as an infrastructure for sound and music.
Stars: ✭ 212 (-76.98%)
Mutual labels:  music, sound, dsp
Supriya
A Python API for SuperCollider
Stars: ✭ 167 (-81.87%)
Mutual labels:  music, dsp, synthesis
Ofxpdsp
openFrameworks addon for audio synthesis and generative music
Stars: ✭ 255 (-72.31%)
Mutual labels:  sound, dsp, synthesis
Daisysp
A Powerful, Open Source DSP Library in C++
Stars: ✭ 291 (-68.4%)
Mutual labels:  music, sound, dsp
Audiomentations
A Python library for audio data augmentation. Inspired by albumentations. Useful for machine learning.
Stars: ✭ 439 (-52.33%)
Mutual labels:  music, sound, dsp
Awesome Music Production
A curated list of software, services and resources to create and distribute music.
Stars: ✭ 340 (-63.08%)
Mutual labels:  music, sound
Amsynth
Analog Modelling Synthesizer
Stars: ✭ 313 (-66.02%)
Mutual labels:  dsp, synthesis
Supercolliderjs
The JavaScript client library for SuperCollider
Stars: ✭ 381 (-58.63%)
Mutual labels:  music, sound
Spectro
🎶 Real-time audio spectrogram generator for the web
Stars: ✭ 383 (-58.41%)
Mutual labels:  sound, dsp
framework
A creative coding library.
Stars: ✭ 35 (-96.2%)
Mutual labels:  sound, synthesis
Beats
A command-line drum machine. Convert a beat notated in YAML into a *.wav file.
Stars: ✭ 389 (-57.76%)
Mutual labels:  music, sound

Soundpipe

Soundpipe is a lightweight music DSP library written in C. It aims to provide a set of high-quality DSP modules for composers, sound designers, and creative coders.

Soundpipe supports a wide range of synthesis and audio DSP techniques which include:

  • Classic Filter Design (Moog, Butterworth, etc)
  • High-precision and linearly interpolated wavetable oscillators
  • Bandlimited oscillators (square, saw, triangle)
  • FM synthesis
  • Karplus-strong instruments
  • Variable delay lines
  • String resonators
  • Spectral Resynthesis
  • Partitioned Convolution
  • Physical modeling
  • Pitch tracking
  • Distortion
  • Reverberation
  • Samplers / sample playback
  • Padsynth algorithm
  • Beat repeat
  • Paulstretch algorithm
  • FOF and FOG granular synthesis
  • Time-domain pitch shifting

More information on specific Soundpipe modules can be found in the Soundpipe module reference guide.

Features

  • High quality modules ported from Csound and FAUST
  • Sample accurate timing
  • Small codebase
  • Static library
  • Easy to extend
  • Easy to embed

Compilation

By default, Soundpipe needs libsndfile, and a standard build environment. Other modules that use other external libraries will need to be explicitly compiled by modifying config.mk.

To compile:

make

sudo make install

Examples

To build the examples, go into the examples folder and run "make", which will create files with a .bin extention. To run an example, run "./ex_foo.bin". When an example is run, it will generate a 5 second file called "test.wav".

Tests

Tests in Soundpipe are used to determine whether or not modules behave as expected. Tests write the output of a module to memory, and check the MD5 hash value of the output against the MD5 value of a reference signal.

To build a test file, go into the test folder, and run "make". Then, run "./run.bin", which runs the tests. As the tests are run, an "ok" will appear in the log if a test passes, and a "not ok" will appear if a test fails.

It is possible to hear the output of a particular test if you know the test number. You will need to have sox installed. For example, to hear what test 11 sounds like, run the following commands:

./run.bin render 11

./write_wave.sh 0011.raw

This will generate a file called out.wav.

The testing utility has a few optional arguments. To see all possible arguments, run "./run.bin help".

The Soundpipe Model

Soundpipe is callback driven. Every time Soundpipe needs a frame, it will call upon a single function specified by the user. Soundpipe modules are designed to process a signal one sample at a time. Every module follows the same life cycle:

  1. Create: Memory is allocated for the data struct.
  2. Initialize: Buffers are allocated, and initial variables and constants are set.
  3. Compute: the module takes in inputs (if applicable), and generates a single sample of output.
  4. Destroy: All memory allocated is freed.

Documentation

If you have lua installed on your computer, you can generate the current html documentation for soundpipe by running "make docs". A folder called "docs" will be created. The top page for the documentation is docs/index.html.

Licensing

Code adapted from Csound opcodes fall under the LGPL license (these are mentioned in their source headers). Everything else falls under the MIT license.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].