GithubHelp home page GithubHelp logo

adamnemecek / soundpipe Goto Github PK

View Code? Open in Web Editor NEW
0.0 2.0 0.0 7.7 MB

A lightweight music DSP library.

Home Page: http://paulbatchelor.github.io/proj/soundpipe.html

License: MIT License

Makefile 0.93% C 79.01% C++ 1.38% Lua 18.39% Shell 0.18% Gnuplot 0.02% Go 0.09%

soundpipe's Introduction

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.

soundpipe's People

Contributors

adamnemecek avatar alexandertape avatar aure avatar belm0 avatar dan-f avatar dennisvennink avatar fennecdjay avatar harryhaaren avatar narner avatar paulbatchelor avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.