package jmslexamples.jsyn; // ScoreJSynDemo4 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.Brass; import com.softsynth.jmsl.jsyn.JSynMusicDevice; import com.softsynth.jmsl.score.*; import com.softsynth.jsyn.AppletFrame; /** * Score with a JSyn instrument orchestra * * @author Nick Didkovsky, copyright 2000 Nick Didkovsky */ public class MonoTimbralScoreDemo extends java.applet.Applet { Score score; Orchestra orch; ScoreFrame scoreFrame; public void init() { } public void start() { initJMSL(); initMusicDevices(); buildOrchestra(); buildScore(); buildScoreFrame(); } private void buildScoreFrame() { scoreFrame = new ScoreFrame("JMSL Score JSyn Demo by Nick Didkovsky, copyright 2000 Nick Didkovsky"); scoreFrame.addScore(score); // force netscape to size window ok scoreFrame.setSize(score.getLayoutWidth() + 100, score.getLayoutHeight() + 100); scoreFrame.setVisible(true); } private void buildOrchestra() { orch = new Orchestra(); orch.addInstrument(new Brass(2, 5), "trumpet 1"); orch.addInstrument(new Brass(2, 5), "trumpet 2"); orch.addInstrument(new Brass(2, 2), "horn"); orch.addInstrument(new Brass(2, 3), "tuba"); } private void buildScore() { int w = 1000; int h = 700; int numStaves = 4; score = new Score(numStaves, w, h, "JMSL Score JSyn Demo by Nick Didkovsky, copyright 2000 Nick Didkovsky"); score.setOrchestra(orch); score.addMeasure(); score.getScoreLayoutManager().setZoom(0.5); score.getControlPanel().setZoom(0.5); } private void initMusicDevices() { JSynMusicDevice.instance().open(); } private void initJMSL() { JMSL.setIsApplet(true); JMSL.clock.setAdvance(0.1); JMSL.scheduler = new EventScheduler(); JMSL.scheduler.start(); } private void termJMSL() { JMSL.scheduler.stop(); JMSL.closeMusicDevices(); } public ScoreFrame getScoreFrame() { return scoreFrame; } public void stop() { removeAll(); scoreFrame.setVisible(false); scoreFrame.dispose(); termJMSL(); } 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[]) { MonoTimbralScoreDemo applet = new MonoTimbralScoreDemo(); AppletFrame frame = new AppletFrame("MonoTimbralScoreDemo", applet); frame.setSize(500, 200); frame.show(); frame.test(); JMSL.setIsApplet(false); applet.getScoreFrame().addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { JMSL.closeMusicDevices(); System.exit(0); } }); } }