package jmsltestsuite; import java.util.Vector; import com.softsynth.jmsl.JMSLRandom; import com.softsynth.jmsl.MusicShape; import com.softsynth.jmsl.score.Score; import com.softsynth.jmsl.score.ScoreFrame; import com.softsynth.jmsl.score.transcribe.BeatDivisionScheme; import com.softsynth.jmsl.score.transcribe.BeatDivisionSchemeList; import com.softsynth.jmsl.score.transcribe.ElementMissedException; import com.softsynth.jmsl.score.transcribe.SearchPathListExpansionException; import com.softsynth.jmsl.score.transcribe.Transcriber; import com.softsynth.jmsl.util.TimeSignature; /** * * Transcribe a MusicShapes and generate a Score. Shows use of 32nd note beat division scheme * * Dim 0 of MusicShapes must be absolute time. Use musicShape.integrate(0) to convert durations to abs time * * @author Nick Didkovsky, (c) 2002 Nick Didkovsky, All Rights reserved. */ public class TestTranscribe11 { public static void main(String args[]) { JMSLRandom.randomize(); // set up allowed subdivisions BeatDivisionSchemeList.removeAllBeatDivisionSchemes(); // 32nds BeatDivisionScheme b = new BeatDivisionScheme(); b.setTimeSpan(1.0); b.setMinTimeSpan(0.125); b.setMinRequired(0); b.setNumberOfDivisions(8); b.setMinTimeSpan(0.125); b.setConformToBeat(true); BeatDivisionSchemeList.addBeatDivisionScheme(b); // add some triplets to first MusicShape MusicShape melody1 = new MusicShape(4); melody1.add(5.50, 60, 0.2, 7); melody1.add(15.250, 60, 0.2, 7.5); melody1.add(25.750, 60, 0.2, 7); // Prepare a Score, 1 staff, width, height Score score = new Score(1, 1024, 800); score.addMeasure(); Transcriber transcriber = new Transcriber(); transcriber.setScore(score); // Set up time signatures. Only need to give it one 4/4 bar and transcriber will continue with 4/4 throughout TimeSignature ts = new TimeSignature(4, 4); Vector tsVector = new Vector(); tsVector.addElement(ts); transcriber.setTimeSignatures(tsVector); try { score.setCurrentStaffNumber(0); score.rewind(); transcriber.setSourceMusicShape(melody1); transcriber.transcribe(); } catch (ElementMissedException e) { e.printStackTrace(); System.out.println("ERROR: " + e); } catch (SearchPathListExpansionException e) { e.printStackTrace(); System.out.println("ERROR: " + e); } final ScoreFrame myScoreFrame = new ScoreFrame(); myScoreFrame.addScore(score); myScoreFrame.addWindowListener(new java.awt.event.WindowAdapter() { public void windowClosing(java.awt.event.WindowEvent e) { myScoreFrame.quit(); } }); myScoreFrame.setVisible(true); } }