JMSL Tutorial: Hierarchies

Java Music Specification Language (JMSL) is a Java API for making music. At its heart is a polymorphic hierarchical scheduler, which allows software objects to be scheduled over time. Even though they might be very different from one another in function, these objects share a common Java interface. This interface is called "Composable". JMSL can schedule complex trees of Composables by passing timestamps through a network of parent/child relationships.

A song form provides a simple example of a parent/child hierarchy:

 
           mySong
    __________|____________
    |       |     |       |
 verse1  chorus verse2 chorus
 


The example above shows a parent called mySong with four children: verse1, chorus, verse2, chorus. In JMSL, mySong would be a SequentialCollection, which launches its children in sequential order. The parent and its children are all "Composables" in JMSL.




JMSL (c) Nick Didkovsky, Phil Burk. JMSL is based upon HMSL (c) Phil Burk, Larry Polansky and David Rosenboom.