Machine Learning in Cycling '74's Max
June 19, 2023 ยท View on GitHub
Link to Presentation Slides
Repository for Max patches that accompany my Seattle Max Meetup presentation, March 25th, 2023
Summary
In the accompanying talk and demonstration I introduce what Machine Learning (ML) is using simple linear regression as a first example, then expand into other examples of unsupervised and supervised learning. Next I show how ML may be applied to musical tasks using Max, specifically using externals for Max to accomplish the tasks of 1) mapping between a gesture and synthesizer presets in real-time, 2) mapping between an input sound and a corpus of audio in real-time using concatenative synthesis, and 3) using neural networks trained on corpuses of audio to morph the timbre of a sound at the sample level in real-time.
Assumptions
- You're interested in incorporating ML into your art-making practice
- You're not deeply knowledgeable about ML (yet!)
- You're comfortable programming in Max
- You're aware of how to install packages (File -> Show Package Manager)
ML in Max Resources (Externals Packages)
| Package | Developer | Features | Source | Release Date | Development Status | Install Notes |
|---|---|---|---|---|---|---|
| MuBu + PiPo | ISMM Team @ IRCAM | many different ML algorithms, focused on audio feature extraction and sound organization, somewhat steep learning curve | Closed Source | 2010 | In Development | via Max Package Manager |
| nn~ | Acids Team @ IRCAM | deep learning neural network model in Max | Open Source | 2022 | In Development | via this link if on Mac, build from source on Windows, works with RAVE trained models |
| FluCoMa | FluCoMa Team | many different ML algorithms, well organized, some example patches assume knowledge of ML | Closed Source | 2018 | Just Stopped Development | via Max Package Manager |
| ml.star | Benjamin D. Smith | a number of different ML algorithms, with nice example patches, although some dated, a good entry point | Closed Source | 2011 | Not in Development | via Max Package Manager |
| ml-lib | IRL Labs | a direct implenentation of the Gesture Recognition Toolkit by Nick Gillian in Max, very barebones, data type agnostic, data as lists | Open Source | 2013 | In Development | via Max Package Manager |
Included Patches
Learning Patches
- linearregression.maxpat - demonstrates simple linear regression

- supervised.maxpat - demonstrates supervised learning using the support-vector machine algorithm, requires ml-lib externals

- unsupervised.maxpat - demonstrates unsupervised learning using the Fuzzy C-means clustering algorithm, requires ml.* externals

ML in Max Patches
- shapetosoundmapping.maxpat - using ML (supervised learning) to learn mappings between a shape and a parametric space, requires ml-lib externals

- concantenativesynthesis.maxpat - using ML (unsupervised learning) to map between one corpus of audio and another at the grain level, requires MUBU externals

- deeplearning.maxpat - using Deep ML (neural network) to map between an input sound and a trained sound model in real-time, requires nn~ external

TODO
- Incorporate https://github.com/testcase/mlmat
- Incorporate other ML Max tools
- Link to my own ML-related work (Murmurator, EcoBobbles, others)
RNBO Extras
RNBO is a new Max feature that allows you to write RNBO patches (similar to Max patches) that can then be exported to five different targets, three of which I'll demo.:
- C++ Source
- JS Web Export - see this Template for a great starting point.
- Raspberry Pi - see here for a step-by-step guide
- Audio Plug-in - click here for a step-by-step guide
- Max External
Remember: RNBO is NOT Max. Most notably, you can't have symbols (e.g. (parameter $1)) and you also can't incorporate Max externals (as of this writing).