CCRMA Musical Interaction Design

Lab 5: Networking and Prototyping

Matt Wright and Wendy Ju, June 27, 2005

1. OpenSoundControl between Pd on Linux boxes

Copy today's Pd patches to your account and load two of them:

cd ~/MID
cp -r /usr/ccrma/web/html/workshops/mid2005/lab5/lab5 .
cd lab5
pd -lib percolate marimba-client.pd marimba-server.pd

The marimba-server patch listens on UDP port 11111 for OSC messages, which it sends to an abstration called OSC-marimba which provides an OSC namespace to control the STK marimba physical modeling synthesizer.

The marimba-client patch uses an abstraction called marimba-ui (stolen verbatim from the osc-marimba help patch) that shows a few different ways to control the OSC-marimba patch. The output of marimba-ui is OpenSoundControl messages; they go to the pd sendOSC object to be sent over the network.

In the marimba-client patch, click on the message box that says "connect localhost". Now the sendOSC object to which you sent that message is configured to send messages to the "local host", i.e., the computer you're sitting in front of. So when you manipulate the associated marimba-ui patch, you'll affect synthesis on your own computer. In other words, what you have so far is a sort of glorified send/receive. Play with this a bit to get a sense for the parameters and what they do.

Now for the fun part: send messages to your neighbor's computer. To make this more fun, take off your headphones, lay them on the table facing out (like miniature loudspeakers), and crank up the volume all the way. Now find the name of your neighbor's computer; it will be something like "cmn15.stanford.edu" and it should be on a sticker on the CPU. (If not, it will at least be in the prompt for your neighbor's terminal windows.) Edit the message box that currently mentions cmn15 and change it to the name of your victim's computer. Click to send the new connect message to the other sendOSC object. Now you can use the marimba-ui abstraction on the right to control your neighbor's synthesizer.

Here are some ideas to increase the level of cacophony:

2. Sensor and hardware acquisition

While it's desirable to be able to go a few rounds on ideation before you commit to a final design, the short time between now and the presentations on next Friday means that we need to order any sensors, motors or other parts which can't be obtained locally as soon as possible.

Tell Matt and/or Wendy what you're planning to buy and where so we can try to consolidate orders (to save shipping costs, number of trips to stores, etc.)

3. Foamcore prototype of your project

Sketch the outline of your project form onto foamcore, and use an Exacto knife to cut it out. Assemble the parts of your prototype using hot glue. Figure out what hardware you would like to use, and how you plan to mount it and connect it to the to the AVR.

4. Prepare concept presentations for Monday morning.

Monday morning we would like you to present the concept presentation for your project. For the presentation, we'd like to have the following:

We'd like you to prepare these on large sheets of paper so they can be posted on the wall on Monday.

5. Additional labs

You may or may not need to work on additional labs to help come up to speed on topics that were not fully covered by this week's labs. Examples include haptics (good for those working on using the AVR for output, rather than or in addition to, for input), op-amps (good if you're working with AC signals or sending signals over a long distance).