Skip to content
Graham Wakefield edited this page Apr 24, 2019 · 38 revisions

What is Gibberwocky for Max?

A quick way to augment a Max patcher with live coded sequencing & modulations. Live coding happens in a browser-based text editor, following similar idioms as in the widely-used Gibber environment. Modulations can be messages, UI knob tweaks, and even arbitrary signal graphs.

Installing

Open Max's Package Manager, find & install the gibberwocky package

Alternatively, download/checkout https://github.com/gibber-cc/gibberwocky.max into Documents/Max 8/Packages (or My Documents/Max 8/Packages on windows)

Make sure you have a recent version of Chrome (or Firefox or Safari (or maybe even Edge now)).

Using Gibberwocky

Add a [gibberwocky] object to your Max patcher. Turn on audio in the patcher, if it isn't already on.

Send the [gibberwocky] object a bang to open the editor (alternatively, just open http://gibberwocky.cc/burble in your browser). In the editor's console, if it says "gibberwocky.max is ready to burble", you're all set!

Note: You might need to open port 8081 on your firewall.

What can Gibberwocky modulate?

Gibberwocky -> Max

  • message => messages/lists from [gibberwocky] 1st outlet
  • param => messages to UI objects with scripting names
  • device => messages to device objects (including sending midinotes and setting parameters)
  • signal => audio outlets of [gibberwocky]

Message

message("hello")("world")

...will send the message hello world out of the gibberwocky 1st outlet. So will:

message("hello.world")    

A message path of this kind can also be stored as an callable object, for re-use:

hello = message("hello")
hello("world")

Param

Device

midinote

// midi note number:
devices['synth'].midinote( 60 )  
// midi note number, midi velocity, duration in ms:
devices['synth'].midinote( 60, 120, 1000 )  

Note, velocity, and duration can all be sequenced independently:

devices['bass'].midinote.seq( 60, 1/2 )
devices['bass'].velocity.seq( [16, 64, 127], 1/2 )
devices['bass'].duration.seq( [10, 100,500], 1/2 )

Signal

Clone this wiki locally