package jmsltestsuite; import java.util.Vector; 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.*; import com.softsynth.jmsl.util.TimeSignature; /** JMSL's com.softsynth.jmsl.score.transcribe package enables the transcription of arbitrary MusicShape data into common music notation. This tests Larry's favorite duration: dotted triplet. This is an ambiguous duration since a dotted triplet's duration equals it straight, no dot duration. @author Nick Didkovsky, (c) 2002 Nick Didkovsky, All Rights reserved. */ public class TranscribeScore9 { public static void main(String args[]) { JMSL.clock.setAdvance(0.1); BeatDivisionSchemeList.removeAllBeatDivisionSchemes(); // 16ths BeatDivisionScheme b = new BeatDivisionScheme(); b.setTimeSpan(1.0); b.setMinTimeSpan(0.25); b.setMinRequired(0); b.setNumberOfDivisions(4); b.setMinTimeSpan(0.25); b.setConformToBeat(true); BeatDivisionSchemeList.addBeatDivisionScheme(b); // 8th note triplet b = new BeatDivisionScheme(); b.setTimeSpan(1); b.setMinTimeSpan(b.getTimeSpan()); b.setMinRequired(2); b.setNumberOfDivisions(3); BeatDivisionSchemeList.addBeatDivisionScheme(b); // qtr note triplet b = new BeatDivisionScheme(); b.setTimeSpan(2); b.setMinTimeSpan(b.getTimeSpan()); b.setMinRequired(2); b.setNumberOfDivisions(3); BeatDivisionSchemeList.addBeatDivisionScheme(b); // half note triplet b = new BeatDivisionScheme(); b.setTimeSpan(4); b.setMinTimeSpan(b.getTimeSpan()); b.setMinRequired(2); b.setNumberOfDivisions(3); BeatDivisionSchemeList.addBeatDivisionScheme(b); // 16th sextuplet b = new BeatDivisionScheme(); b.setTimeSpan(1); b.setMinTimeSpan(b.getTimeSpan()); b.setMinRequired(3); b.setNumberOfDivisions(6); BeatDivisionSchemeList.addBeatDivisionScheme(b); // 8th sextuplet b = new BeatDivisionScheme(); b.setTimeSpan(2); b.setMinTimeSpan(b.getTimeSpan()); b.setMinRequired(5); b.setNumberOfDivisions(6); BeatDivisionSchemeList.addBeatDivisionScheme(b); // 1 staff, width, height Score score = new Score(1, 1024, 800); score.addMeasure(); MusicShape s = new MusicShape(4); double timeStamp = 0; s.add(timeStamp, 60, 0.5, 0.4); timeStamp += 0.5; s.add(timeStamp, 62, 0.5, 0.4); timeStamp += 0.165; s.add(timeStamp, 64, 0.5, 0.4); timeStamp += 0.333; s.add(timeStamp, 60, 0.5, 0.4); timeStamp += 0.5; s.add(timeStamp, 62, 0.5, 0.4); timeStamp += 0.333; s.add(timeStamp, 64, 0.5, 0.4); timeStamp += 0.165; s.add(timeStamp, 63, 0.5, 0.4); s.add(timeStamp, 60, 0.5, 0.4); timeStamp += 0.165; s.add(timeStamp, 62, 0.5, 0.4); timeStamp += 0.333; s.add(timeStamp, 64, 0.5, 0.4); timeStamp += 0.5; s.add(timeStamp, 63, 0.5, 0.4); s.add(timeStamp, 60, 0.5, 0.4); timeStamp += 0.165; s.add(timeStamp, 62, 0.5, 0.4); timeStamp += 0.5; s.add(timeStamp, 64, 0.5, 0.4); timeStamp += 0.333; s.add(timeStamp, 63, 0.5, 0.4); Transcriber transcriber = new Transcriber(); transcriber.setScore(score); transcriber.setSourceMusicShape(s); TimeSignature ts = new TimeSignature(4, 4); Vector tsVector = new Vector(); tsVector.addElement(ts); transcriber.setTimeSignatures(tsVector); score.setCurrentStaffNumber(0); try { transcriber.transcribe(); } catch (ElementMissedException e) { e.printStackTrace(); System.out.println("ERROR: " + e); System.exit(0); } catch (SearchPathListExpansionException e) { e.printStackTrace(); System.out.println("ERROR: " + e); System.exit(0); } // score.addNote(0.448, 72, 0.4, 0.2); final ScoreFrame f = new ScoreFrame(); f.addScore(score); f.setVisible(true); f.addWindowListener(new java.awt.event.WindowAdapter() { public void windowClosing(java.awt.event.WindowEvent e) { //System.out.println("QUIT"); f.quit(); //System.out.println("QUIT?"); } }); } }