package jmslexamples.jsyn; import java.awt.FlowLayout; import java.awt.event.ActionEvent; import com.softsynth.jmsl.JMSL; import com.softsynth.jmsl.MusicShape; import com.softsynth.jmsl.score.Score; import com.softsynth.jmsl.score.ScoreFrame; import com.softsynth.jmsl.score.transcribe.BeatDivisionSchemeList; import com.softsynth.jmsl.score.transcribe.Transcriber; import com.softsynth.jsyn.AppletFrame; /** * Launch a MusicJob whose performance density is generated by a Myhill * Distribution. Provide GUI sliders for user to change density parameters. * Transcribe and display in common music notation * * @author Nick Didkovsky, copyright Nick Didkovsky 4/4/01 10:32AM */ public class EventDistributionsJSynDemoWithScore extends EventDistributionsJSynDemo { Score score; ScoreFrame scoreFrame; public void actionPerformed(ActionEvent e) { Object source = e.getSource(); if (source == startButton) { job.launch(JMSL.now()); } if (source == stopButton) { job.finish(); transcribeAndDisplay(); } } private void transcribeAndDisplay() { MusicShape s = (MusicShape) job.getMusicShapeLog().clone(); s.setConstrainedToLimits(false); s.integrate(0); s.print(); score = new Score(1, 800, 400); score.addMeasure(); BeatDivisionSchemeList.defaultSetup(); Transcriber transcriber = new Transcriber(); transcriber.setScore(score); transcriber.setSourceMusicShape(s); score.setCurrentStaffNumber(0); try { transcriber.transcribe(); } catch (Exception e) { e.printStackTrace(); } if (scoreFrame == null) { scoreFrame = new ScoreFrame(); } scoreFrame.addScore(score); scoreFrame.addWindowListener(new java.awt.event.WindowAdapter() { public void windowClosing(java.awt.event.WindowEvent e) { scoreFrame.setVisible(false); } }); scoreFrame.pack(); scoreFrame.setVisible(true); } public static void main(String args[]) { EventDistributionsJSynDemoWithScore applet = new EventDistributionsJSynDemoWithScore(); AppletFrame frame = new AppletFrame("Event Density Example", applet); frame.setSize(400, 200); frame.setVisible(true); frame.setLayout(new FlowLayout()); frame.test(); } }