package jmslexamples.jsyn;
import com.softsynth.jmsl.PlayLurker;
import com.softsynth.jmsl.jsyn.SynthNoteAllPortsInstrument;
import com.softsynth.jsyn.Synth;
/**
* This behaves just like a SynthNoteAllPortsInstrument playing a
* com.softsynth.jsyn.circuits.FilteredSawtoothBL, adding the PlayLurker
* interface so that it can be notified of elements being played by other
* objects. This could be used to create an arpeggiating instrument, for
* example, that listens to notes being played by a MusicShape or a MusicList or
* a JMSL Score Track.
*
*
* COMPLETE SOURCE:
*
*
*
* package jmslexamples.jsyn; * * import com.softsynth.jmsl.*; * import com.softsynth.jmsl.score.jsyn.SynthNoteAllPortsInstrument; * import com.softsynth.jsyn.*; * * public class PlayLurkingFSBLInstrument extends SynthNoteAllPortsInstrument implements PlayLurker { * * public PlayLurkingFSBLInstrument() { * super(8, com.softsynth.jsyn.circuits.FilteredSawtoothBL.class.getName()); * } * * public void notify(double playTime, com.softsynth.jmsl.MusicJob job, int index) { * System.out.println("PlayLurkingFSBLInstrument being notified of index " + index + " being played"); * } * * public static void main(String args[]) { * try { * Synth.startEngine(0); * String filename = "PlayLurkingFSBLInstrument.xml"; * PlayLurkingFSBLInstrument ins = new PlayLurkingFSBLInstrument(); * ins.setName("Play Lurking FilteredSawtoothBL ins"); * java.io.PrintWriter pout = new java.io.PrintWriter(new java.io.FileOutputStream(filename)); * (new com.softsynth.jmsl.score.util.SimpleXMLSaver(ins, "jmslscoreinstrument")).writeXML(pout); * pout.close(); * System.out.println("Wrote " + filename); * Synth.stopEngine(); * } catch (java.io.IOException e) { * System.out.println("ERROR in main: " + e); * } * } * * } * * ** * @author Nick Didkovsky, July 23, 2002, (c) 2002 Nick Didkovsky all rights * reserved */ public class PlayLurkingJSynInstrument extends SynthNoteAllPortsInstrument implements PlayLurker { /** * Hard coded to call super(8, * com.softsynth.jsyn.circuits.FilteredSawtoothBL.class.getName()); */ public PlayLurkingJSynInstrument() { super(8, com.softsynth.jsyn.circuits.FilteredSawtoothBL.class.getName()); } /** * PlayLurker interface. notify() is called by any MusicShape or MusicList * which has this object in its list of PlayLurkers */ public void notifyPlayLurker(double playTime, com.softsynth.jmsl.MusicJob job, int index) { System.out.println("PlayLurkingFSBLInstrument being notified of index " + index + " being played"); } /** * Just instantiate an instrument and write out an XML file so it can be * loaded into JMSL Score */ public static void main(String args[]) { try { Synth.startEngine(0); String filename = "PlayLurkingFSBLInstrument.xml"; PlayLurkingJSynInstrument ins = new PlayLurkingJSynInstrument(); ins.setName("Play Lurking FilteredSawtoothBL ins"); java.io.PrintWriter pout = new java.io.PrintWriter(new java.io.FileOutputStream(filename)); (new com.softsynth.jmsl.util.SimpleXMLSaver(ins, "jmslscoreinstrument")).writeXML(pout); pout.close(); System.out.println("Wrote " + filename); Synth.stopEngine(); } catch (java.io.IOException e) { System.out.println("ERROR in main: " + e); } } }