package jmsltutorial; import java.awt.Graphics; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import com.softsynth.jmsl.EventScheduler; import com.softsynth.jmsl.JMSL; import com.softsynth.jmsl.jsyn.JSynMusicDevice; import com.softsynth.jmsl.jsyn.SynthNoteAllPortsInstrument; import com.softsynth.jmsl.score.*; import com.softsynth.jsyn.AppletFrame; /** * JMSL Score with SynthNote we designed by hand
* * @author Nick Didkovsky, copyright 2000 Nick Didkovsky */ public class JScoreJSynPolyInsApplet extends java.applet.Applet { Score score; ScoreFrame scoreFrame; public void init() { JMSL.setIsApplet(true); } public void start() { synchronized (JMSL.class) { JMSL.setIsApplet(true); JMSL.scheduler = new EventScheduler(); JMSL.scheduler.start(); JSynMusicDevice.instance().open(); buildScore(); buildScoreFrame(); scoreFrame.setVisible(true); scoreFrame.setSize(900, 600); } } private void buildScoreFrame() { scoreFrame = new ScoreFrame("JMSL Score JSyn Tutorial by Nick Didkovsky, copyright 2000 Nick Didkovsky"); scoreFrame.addScore(score); // adds instruments to orchestra of ScoreFrame's current score scoreFrame.addInstrument(new SynthNoteAllPortsInstrument(8, "jmsltutorial.SineSynthNote"), "Sine"); scoreFrame.addInstrument(new SynthNoteAllPortsInstrument(8, "com.softsynth.jsyn.circuits.FilteredSawtoothBL"), "Sawtooth"); } private void buildScore() { int w = 1000; int h = 700; int numStaves = 2; score = new Score(numStaves, w, h, "JMSL Score Tutorial by Nick Didkovsky, copyright 2000 Nick Didkovsky"); score.addMeasure(); score.setOrchestra(new Orchestra()); } public ScoreFrame getScoreFrame() { return scoreFrame; } public void stop() { synchronized (JMSL.class) { removeAll(); scoreFrame.setVisible(false); scoreFrame.dispose(); Score.deleteCanvas(); JMSL.scheduler.stop(); JMSL.closeMusicDevices(); } } public void paint(Graphics g) { g.drawString("Your score has been opened in a Frame outside this browser", 20, 20); } /* Can be run as either an application or as an applet. */ public static void main(String args[]) { JScoreJSynPolyInsApplet applet = new JScoreJSynPolyInsApplet(); AppletFrame frame = new AppletFrame("JScoreJSynPolyInsApplet", applet); frame.setSize(440, 200); frame.show(); /* * Begin test after frame opened so that DirectSound will use Java * window. */ frame.test(); JMSL.setIsApplet(false); applet.getScoreFrame().addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { JMSL.closeMusicDevices(); System.exit(0); } }); } }