Hierarchical Scheduling In JMSL

Hell Cafe is an interactive JMSL piece that was written for the music theatre production The Technophobe and the Madman. It uses JMSL's ParallelCollection class to perform multiple tracks of techno beats in synch with each other. The tracks are implemented as JMSL MusicShapes. The ParallelCollection changes its contents dynamically during the piece, as the performer adds and removes MusicShapes from it. The MusicShapes can change themselves dynamically as well, using the MusicShape.scramble() method to reorder their contents.

HellCollection starts as an empty collection
         hellCollection
    __________|____________

As the performer "unmutes" tracks, MusicShapes are added to hellCollection. Newly added Composables are launched at the beginning of the next repeat of their parent Composable. So adding "toms" in the middle of a rhythmic cycle will wait until the cycle is complete before launching "toms".
         hellCollection
    __________|____________
    |       |     |       |
 snare     kick  tyrone toms

If the performer chooses to "mute" a track, a MusicShape is removed from hellCollection. Again, this change is heard on the next repeat of the parent Composable.
         hellCollection
    __________|____
    |       |     |       
 snare     kick  tyrone 


(Hell Cafe Demo)