This repository is a collection of Max/MSP and Pd externals developed from the explanations in the book "Designing Audio Objects for Max/MSP and Pd" by Eric Lyon.
The externals developed are:
- bed is a max-only1 external that provides non-real-time buffer/array operations.
- cleaner~ has basic controls to do adaptive noise reduction in the frequency domain.
- dynstoch~ implements dynamic stochastic synthesis as formulated by Iannis Xenakis.
- mirror~ simply copies audio from the input directly to the output without any modifications.
- moogvcf~ is a port of the Csound unit generator generator "moogvcf".
- multy~ multiplies the two input signals and sends the result to the output.
- multy64~ is the same as multy~ but implements the 64-bit version of the dsp and perform routines of the Max/MSP external.
- oscil~ is a wavetable oscilator that allows specification of waveform by additive synthesis and by name of common band-limited waveforms.
- oscil_attributes~ is the same as oscil~ but implements attributes for the Max/MSP version of the external.
- retroseq~ is a sample-accurate sequencer that sends a signal representing frequency values.
- scrubber~ is an implementation of the phase vocoder algorithm.
- vdelay~ provides variable delay with feedback and allows delays shorter than the signal vector size.
- vpdelay~ is the same as vdelay~ but implemented using pointers instead of array indexes.
Additional utility externals were written to provide functionality available as built-in Max/MSP externals that do not exist "natively" in Pd:
- cartopol~ converts real and imaginary parts to magnitude and phase.
- poltocar~ converts magnitude and phase to real and imaginary parts.
- windowvec~ multiplies the incoming signal with a Hann window (raised cosine wave).
You can run the following commands in the terminal to clone this repository and to checkout the version of the Max and Pd SDKs that were used to build all the projects:
git clone https://github.com/juandagilc/DAO-MaxMSP-Pd.git
cd DAO-MaxMSP-Pd/
git submodule update --init
The table below shows details about the tools that have been used to build and test the externals of this repository. For more information about the steps followed to setup the Xcode projects, Visual Studio projects, and Makefiles, see the SETUP.md file.
Operating Systems | Built with | Tested on |
---|---|---|
macOS Sierra 10.12.6 | Xcode 9.1 | Max 7.3.4 (32/64-bit2) & Pd-0.48-0 (32-bit) |
Windows 10 | Visual Studio Community 2015 | Max 7.3.4 (32/64-bit2) & Pd-0.48-0 (32-bit) |
Linux (Ubuntu MATE 16.04 LTS 32-bit) | GNU Make 4.13 | Pd-0.48-0 (32-bit) |
Linux (Debian GNU/Linux 7.4 (wheezy) on the BeagleBone Black + Bela) | GNU Make 3.813 | libpd 0.8.3 (armv7l) BeagleBone Black + Bela Cape |
To build all the externals in this repository at once you can run ruby build.rb
from the Terminal on macOS or Linux, or from the Developer Command Prompt for VS2015 on Windows (on macOS Ruby comes preinstalled, on Linux you can install it using sudo apt-get install ruby-full
, and on Windows you can install it from https://rubyinstaller.org). The build.rb
script creates a folder called _EXTERNALS_
in the root of the repository with subfolders for Max/MSP and Pd files. The optional argument BBB
can be passed to the script to cross-compile the externals for the BeagleBone Black + Bela Cape from a host operating system (cross-compilation was tested only on macOS using the Linaro toolchain). Max/MSP and Pd patches showing the usage of the externals will be copied to the _EXTERNALS_
folder as well.
Please see the LICENSE.md file for details.
1 "Max-only" means that the external does not process audio in real-time, but it is implemented for Max/MSP and Pd.
2 However, the only external that implements 64-bit dsp and perform routines is multy64~.
3 The Makefiles can be used to build Pd externals for macOS, Windows, and Linux, using make.