Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
This repository was archived by the owner on Jan 14, 2024. It is now read-only.

A lightweight music DSP library.

License

NotificationsYou must be signed in to change notification settings

PaulBatchelor/Soundpipe

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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

Soundpipe supports a wide range of synthesis and audio DSPtechniques 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 theSoundpipe 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 compiledby modifying config.mk.

To compile:

make

sudo make install

Examples

To build the examples, go into the examples folder and run "make", which willcreate files with a .bin extention. To run an example, run "./ex_foo.bin". Whenan 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 asexpected. Tests write the output of a module to memory, and check the MD5 hashvalue 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 inthe 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 testnumber. You will need to have sox installed. For example,to hear what test 11 sounds like, run the followingcommands:

./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 willcall upon a single function specified by the user. Soundpipe modules aredesigned to process a signal one sample at a time. Every module follows thesame life cycle:

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

Documentation

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

About

A lightweight music DSP library.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

[8]ページ先頭

©2009-2025 Movatter.jp