https://github.com/shakfu/sndpipe
Max / MSP externals using the Soundpipe DSP Library
https://github.com/shakfu/sndpipe
c dsp external max maxmsp soundpipe
Last synced: 3 days ago
JSON representation
Max / MSP externals using the Soundpipe DSP Library
- Host: GitHub
- URL: https://github.com/shakfu/sndpipe
- Owner: shakfu
- License: other
- Created: 2021-04-27T02:58:57.000Z (about 5 years ago)
- Default Branch: master
- Last Pushed: 2021-07-28T10:54:58.000Z (almost 5 years ago)
- Last Synced: 2025-03-02T03:34:19.861Z (over 1 year ago)
- Topics: c, dsp, external, max, maxmsp, soundpipe
- Language: C
- Homepage:
- Size: 2.03 MB
- Stars: 3
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# sndpipe
Early-stage project containing experiments with Max/MSP externals and the nifty [Soundpipe DSP](https://github.com/PaulBatchelor/Soundpipe) 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](https://github.com/Cycling74/max-sdk) as a submodule in the `source` directory, so you will have to do the following in the project root after cloning the repo.
```bash
git submodule init
git submodule update
```
## Compilation for Use
This project uses [Xcodegen](https://github.com/yonaskolb/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](https://github.com/PaulBatchelor/Soundpipe/blob/master/modules/data/bitcrush.lua) 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:
- The [module code](https://github.com/PaulBatchelor/Soundpipe/blob/master/modules/bitcrush.c).
- The module [test file](https://github.com/PaulBatchelor/Soundpipe/blob/master/test/t/t_bitcrush.c).
So let's generate the subproject skeleton:
```bash
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:
```bash
cd sp_bitcrush~
./build.sh
```
## Credits
Thanks to Paul Batchelor for sharing his very welcoming Soundpipe library!