narner / Soundpipe

SOUNDPIPE IS DISAPPEARING EARLY 2022. A lightweight music DSP library.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

NOTICE: I really never thought I'd say this, but Soundpipe is going to self-destruct early 2022.

Soundpipe has become too much of an emotionally charged project for me now. I just can't deal with it anymore. I'm burnt to a crisp. I need to move on.

If you, dear reader, want to maintain a fork of it, fine. I really don't care. I encourage it.

I promise I'll do my best to try and make projects in the spirit of Soundpipe. But, it won't be Soundpipe.

It's been a good run, folks. I've really enjoyed the emails I've gotten from Soundpipe users over the years. It's been exciting seeing the creative efforts Soundpipe has enabled. But yeah, I'm done here.

Happy Hacking Everyone.

-Paul

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.

Compilation

To compile:

make

sudo make install

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.

Contact

For questions related to Soundpipe, Please reach out to thisispaulbatchelor at gmail. Be sure to include Soundpipe somewhere in the subject header.

About

SOUNDPIPE IS DISAPPEARING EARLY 2022. A lightweight music DSP library.

License:MIT License


Languages

Language:C 85.3%Language:Lua 13.2%Language:Makefile 0.7%Language:Faust 0.5%Language:Shell 0.2%Language:Go 0.1%Language:Gnuplot 0.0%