Tag: Max/MSP

Real time human skeletonization in Max

By  André Baltazar, Carlos Guedes, Bruce Pennycook, and Fabien Gouyon at INESC Porto andPortuguese Catholic University -School of the Arts and UT Austin


ep-413 DSP week 9



Building a Max patch that displays, transforms, and responds to internet data.

building materials
  • Max (6.1.7 or newer)
  • Soundflower –

Both available from Cycling 74 http://cycling74.com/

The Max patch is based on a tutorial by dude837 called “Automatic Silly Video Generator”


The patch at the download link in the video is broken – but the javascript code for the Max js object is intact. You can download the entire patch from the Max-projects archive: https://github.com/tkzic/max-projects folder: maxvine

Internet API’s

API’s (application programming interfaces) provide methods for programs (other than web browsers) to access Internet data. Any app that access data from the web uses an API.

Here is a link to information about the Vine API: https://github.com/starlock/vino/wiki/API-Reference

For example, if you copy this URL into a web browser address bar, it will return a block of data in JSON format about the most popular videos on Vine: https://api.vineapp.com/timelines/popular

HTTP requests

An HTTP request transfers data to or from a server. A web browser handles HTTP requests in the background. You can also write programs that make HTTP requests. A  program called “curl” runs http requests from the terminal command line. Here are examples: http://reactivemusic.net/?p=5916

Response data

Data is usually returned in one of 3 formats:

  • JSON
  • XML
  • HTML

JSON is the preferred method because its easy to access the data structure.

Max HTTP requests

There are several ways to make HTTP requests in Max, but the best method is the js object: Here is the code that runs the GET request for the Vine API:

function get(url)
    var ajaxreq = new XMLHttpRequest();
    ajaxreq.open("GET", url);
    ajaxreq.onreadystatechange = readystatechange;

function readystatechange()
    var rawtext = this._getResponseKey("body");
    var body = JSON.parse(rawtext);
    outlet(0, body.data.records[0].videoUrl);


The function: get() formats and sends an HTTP request using the URL passed in with the get message from Max. When the data is returned to Max, the readystatechange() function parses it and sends the URL of the most popular Vine video out the left outlet of the js object.

Playing Internet audio/video files in Max

The qt.movie object will play videos, with the URL passed in by the read message.

Unfortunately, qt.movie sends its audio to the system, not to Max. You can use Soundflower, or a virtual audio routing app, to get the audio back into Max.

Audio from video


Video from audio


Other Internet API examples in Max

There is a large archive of examples here: Internet sensors: http://reactivemusic.net/?p=5859

We will look at more of these next week. Here is simple Max patch that uses the Soundcloud API: http://reactivemusic.net/?p=17430

Gokce Kinayoglu has written a java external for Max called Searchtweet: http://cycling74.com/toolbox/searchtweet-design-patches-that-respond-to-twitter-posts/

Many API’s require complex authentication, or money, before they will release their data. We will look ways to access these API’s from Max next week.


There are API services that consolidate many API’s into one API. For example:

Scaling data

Look at the Max tutorial (built in to Max Help) called “Data : data scaling” It contains most of what you need to know to work with streams of data.


Using the Vine API patch that we built during the class as a starting point: Build a better app.

Ideas to explore:

  • Is it possible to run several API requests simultaneously?
  • Recording? Time expansion? Effects that evolve over time?
  • Generate music from motion, data, and raw sound?
  • Make a video respond to your instrument or voice?
  • Design a better user interface or external controller?
  • Will this idea work in Max For Live?
  • How would you make adjustments to the loop length, or synchronize a video to other events?
  • Make envelopes to change the dynamic shape?
  • Destruction? Abstraction?
  • Find or write a Max URL streaming object?
  • What about using a different API or other data from the Vine API?

This project will be due in 2-3 weeks. But for next week please bring in your work in progress, and we will help solve problems.


Max javascript reference

Index of classes.

By Tim Schenk


MaxURL SoundCloud

An example of the Soundcloud API in Max.

At the Cycling 74 Wiki


local version: tkzic/max teaching examples/souncloud-test

Searchtweet 1.1b

Twitter search for Max/MSP.

Uses mxj and the twitter4j library

By Gokce Kinayoglu



Note: installation instructions in readme.txt file with download. Requires copying of java classes and library files.

A vocoder in Max

In the frequency domain

By Dude837



All tutorials: http://www.otherbirds.com/tutorials

Toulouse L’autechre

A synthesizer

By Dude837



Heterodyne filter in Max

Multiply by an analytic signal to detect the frequency of a sine wave.

When the frequencies match, the sum of the real and imaginary parts will be positive.



max-projects on Github: https://github.com/tkzic/max-projects

folder: heterodyne-filter

patch: heterodyne-test3.maxpat


Spectral freeze in Max

By Jean Francois-Charles

Freeze sounds with Max MSP Jitter using FFT and Inverse FFT. For this video to be really useful, you will need to download the free Max/MSP/Jitter patches on http://www.cycling74.com/share.html
To get more “under the hood” insight, download the free article “A Tutorial for Spectral Sound Processing with Max/MSP and Jitter” http://www.mitpressjournals.org/doi/pdf/10.1162/comj.2008.32.3.87

note: local patches in tkzic/jfcharles/

Third octave filtering

Using the fffb~ object in Max – with feedback and vocoder effects.

By Peter Elsea