Whether the element is interpreted as a Midi note, a set of JSyn parameters, or RGB colors, is entirely up to the Instrument.
Instrument is an interface, but we provide an InstrumentAdapter
which has all methods implemented. For example, we could just print the
data by declaring our own subclass of InstrumentAdapter and override play()
like so:
/** A simple InstrumentAdapter subclass that just prints out the data it is handed, interprets element[0] as duration */ class PrintingInstrument extends InstrumentAdapter { /** Overridden for custom interpretation */ public double play(double playTime, double timeStretch, double dar[]) { JMSL.out.println("PrintingInstrument.play() is handed the following array of doubles:"); JMSL.printDoubleArray(dar); JMSL.out.println(); return playTime + (dar[0]*timeStretch); // interpret dar[0] as duration } }Notice in the code above that the incoming playtime is passed in as an argument to play(). Notice also that the play() method returns an updated time.