Music 220a Final Project

"An interactive performance applcation "

Reza Payami


This project provides a real-time interactive performance environment implemented using ChucK, Processing and OSC.. It receives MIDI input and generates output based on a combination of random/fixed algorithms and the human interactions. The interaction can happen in different ways such as ChucK live coding, using Processing GUI or some human input devices like wii-mote and MIDI controllers.

The general idea is to set different parameters for algorithmic/random engine before, and also after, sporking some new shreds. "" is the core file which contains four classes named “Transformation”, “RowTransfomer”, “InteractSynthEngine” and “InteractSynth”. “InteractSynthEngine” uses “RowTransfomer” to generates MIDI out, and “Row” is a sequence of notes recorded in real-time, or specified by a pitch class set in code . ”InteractSynth” extends "InteractSynthEngine" and acts as the interface class by means of some communication protocols such as MIDI and OSC. “” is the Processing Java class connected to “InteractSynth” through OSC. An external program, “WiiOSC”, also sends OSC messages by translating wiimote motions and keys. "" is only responsible to run "InteractSynth" , while can also be used for live coding type of performance.


Here are the links to the mentioned files:


Class diagram for ChucK classes:



WiiOSC is a C program which I compiled for Fedora:



The original link for WiiOSC is

which in turn requires the followings:




Communications and networking diagram:


Snapshot of the Processing-ControlP5 GUI:


Here is a description about some of the GUI controls:

Clear/Record/Stop: Used for recording MIDI input

-Shreds: Remove all preivoulsy sporked shreds

-Shred: Removes the previously sporked shred

+Auto: Sproks a new shred with the specified parameters to use the random-based algorithm

Original, Inverse, Retro, Ret-Inv, Random: Different row transformation types

+XFom: Sproks a new shred based on the different parameters including the transposition and transformation types