Week 5 - Class 1

As part of our 'broken' schedule, we are going to start working on hardware integration - specifically, the use of the Monome grid controller as a user interface. This means that we are going to start doing UI designs and implementation, and will be trying to find ways to improve the work we do by using savvy programming.

Much of what we will be doing will be available here: the monome begin page

We need to start by working with the Monome, getting it hooked up and verify that it is running with our system. To do this, we are going to get the "monome_sum" application into our system, then prove that it is working by running the 'flin' program. You can get monome_sum from here:

The monome_sum Github Page

Once you've downloaded and installed this content, you can run the application. It will give you a user interface that looks like this:

d

Now, select your monome device a connect, then click on the 'flin' application button, then finally punch some of the buttons on your monome. You should see a 'waterfall' display, and a little ping each time one of the 'balls' hits the 'floor'. Congrats - you just got your monome running!

In this class, we are going to be 'extending' the use of the monome by programming directly on it using Max. You will need to start by looking through the monome.org extend page, which provides information about working with a monome. But before we do that, we actually have to see some user interfaces in action. The in-class assignment is...


In-class Activities:

Homework Project due on Wednesday, February 11:


Week 5 - Class 1

In order to do anything useful with the monome, we'll need to learn how to program it ourselves. This is going to require instantiating the 'serialosc' Max patch (actually, a bpatcher) and interacting with it to receive button presses and send LED updates.

The first patch we will create is a basic input patch, but with the added benefit of lighting up the button beneath our finger.



Note that the serialosc object is created by actually creating a bpatcher object instantiated with a 'serialosc' argument.

By default, all of the messages coming out of the 'serialosc' device have a "/monome" prefix. It doesn't have to - you can change an attribute in the serailosc object to change that, but generally we can just leave it at the default. The main consideration is to add the "/monome" prefix to all of the messages you are working with.

In this case, we are routing messages that begin with "/monome/grid/key", which is the identifier for a button press. When we get them, we don't necessarily do anything with them - rather, if our gate is open, we just prepend a "/monome/grid/led/set to the incoming data, which will light up the button under our finger. Turn off the gate and the lighting stops.

Our next patch works a little differently - it breaks apart the "key" message to access the on/off state of the button, then activates an animation on the surface while pushed:

This shows us how we can create informational displays beyond just the button that we are pressing.

The third patch tries to be a little more creative with the feedback to the device, showing us where we are by putting a crosshairs on the button LEDs. You'll also note the use of BEAP's "Grid Monitor" to give us an idea of what the monome's display should look like:



In class, we will walk through this patch to understand it all...

Finally, we make a patch that is a complete visual generative system; it uses drunk objects, influenced by our button presses, to snake a worm around the monome. We could easily use any of the parameters sent to the monome as values for other generative work as well (such as synthesizer pitch or visual color shifting):

With the information available in these four patches, you should be able to create interesting content of your own.

NOTE: Due to the guest lecturer, we will not be doing an in-class assignment today. Instead, we will attend the lecture in the Hypercube.


Return to the class index.
Last update: 02/04/2015