Skip to content
/ sndpipe Public

Max / MSP externals using the Soundpipe DSP Library

License

Notifications You must be signed in to change notification settings

shakfu/sndpipe

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

sndpipe

Early-stage project containing experiments with Max/MSP externals and the nifty Soundpipe DSP library.

My initial goal was to learn MSP external programming by using a DSP library, however it's so quick to develop with Soundpipe DSP that there's now a secondary goal to produce a set of Max/MSP objects which correspond on a one-to-one basis with Soundpipe modules.

Please note that is a macOS only package and it includes cycling 74's maxsdk as a submodule in the source directory, so you will have to do the following in the project root after cloning the repo.

git submodule init
git submodule update

Compilation for Use

This project uses Xcodegen to generate an xcode project of a max external from a yaml spec

For convenience, libsoundpipe.a and libsndfile.a are included. Please feel free to compile these separately.

After compilation, to install, just soft link or copy this folder to $HOME/Documents/Max 8/Packages/sndpipe

Externals developed to date

  • sp_bigverb~: A nice-sounding spaceout reverb.

  • sp_bitcrush~: Digital signal degradation.

  • sp_brown~: Brownian noise generator.

  • sp_delay~: A simple clear-sonding delay.

  • sp_osc~: A simple oscillator with sine and triangle waveforms.

  • sp_pshift~: A pitch-shifter effect.

  • sndpipe~: A kitchensink of things.

Externals under-development (NOT YET WORKING)

  • compressor~: a basic compressor.
  • smoothdelay~: Smooth variable delay line without varispeed pitch.

Development

To speed up conversion of soundpipe modules to Max/MSP externals, this project uses code generation of the subproject elements.

To create a new subproject. Pick a module from Sound pipe. Let's use bitcrush in this example. We see from the module lua description that it has two (optional) params:

  • int bitdepth with default: 8, min: 1, and max: 16
  • float srate with default: 1000.0

The other important files during development of the external are:

So let's generate the subproject skeleton:

cd sndpipe/source/dev
./scripts/gen.py bitcrush -p bitdepth int 8 1 16 -p srate float 1000.0

The new subproject will be generated in the dev folder as sp_bitcrush~.

To build it:

cd sp_bitcrush~
./build.sh

Credits

Thanks to Paul Batchelor for sharing his very welcoming Soundpipe library!