/** ColToot03.java Put three MusicJobs in a SequentialCollection that acts behaviorally, ie. chooses a new child each repeat. * @author Nick Didkovsky and Phil Burk */ /* * (C) 1997 Phil Burk and Nick Didkovsky, All Rights Reserved * JMSL is based upon HMSL (C) Phil Burk, Larry Polansky and David Rosenboom. */ package jmsltutorial; import javax.swing.JFrame; import com.softsynth.jmsl.Behavior; import com.softsynth.jmsl.Composable; import com.softsynth.jmsl.JMSL; import com.softsynth.jmsl.JMSLRandom; import com.softsynth.jmsl.MusicJob; import com.softsynth.jmsl.SequentialCollection; public class ColToot03 extends JFrame { SequentialCollection mySequentialCollection; MusicJob mj1; MusicJob mj2; MusicJob mj3; /* Build our hierarchy */ public void start() { // set seed from clock JMSLRandom.randomize(); // initialize collection with vanilla MusicJobs mySequentialCollection = new SequentialCollection(); mySequentialCollection.setBehavior(new TutorialBehavior()); mj1 = new MusicJob(); mj2 = new MusicJob(); mj3 = new MusicJob(); MessagePrintingPlayable mppf = new MessagePrintingPlayable("Starts"); mj1.addStartPlayable(mppf); mj2.addStartPlayable(mppf); mj3.addStartPlayable(mppf); mj1.setRepeatPause(1.0); mj2.setRepeatPause(1.5); mj3.setRepeatPause(2.0); mySequentialCollection.add(mj1); mySequentialCollection.add(mj2); mySequentialCollection.add(mj3); mySequentialCollection.setRepeats(20); mySequentialCollection.printHierarchy(); mySequentialCollection.launch(JMSL.now()); } public static void main(String args[]) { System.out.println("Put three MusicJobs in a SequentialCollection that chooses a new child each repeat."); ColToot03 colToot03 = new ColToot03(); colToot03.setSize(300, 200); colToot03.setVisible(true); colToot03.start(); colToot03.addWindowListener(new java.awt.event.WindowAdapter() { public void windowClosing(java.awt.event.WindowEvent e) { System.exit(0); } }); } } class TutorialBehavior implements Behavior { /* * Implement your own Behavior here. This one chooses a child uniformly randomly */ public Composable choose(SequentialCollection col) { int index = JMSLRandom.choose(col.size()); JMSL.out.print("TutorialBehavior chooses index " + index + "\t"); return col.get(index); } }