package jmsltestsuite; import java.util.Vector; import com.softsynth.jmsl.JMSL; import com.softsynth.jmsl.MusicShape; import com.softsynth.jmsl.score.*; 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 test plays with beat division setup * @author Nick Didkovsky, (c) 2002 Nick Didkovsky, All Rights reserved. */ public class TranscribeScore6 { static boolean USE_DEFAULT_BEAT_DIVISION_SCHEME = false; public static void setupCustomBeatDivisionSchemeList() { // 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 quintuplet b = new BeatDivisionScheme(); b.setTimeSpan(1); b.setMinTimeSpan(b.getTimeSpan()); b.setMinRequired(2); b.setNumberOfDivisions(5); BeatDivisionSchemeList.addBeatDivisionScheme(b); // 8th quintuplet b = new BeatDivisionScheme(); b.setTimeSpan(2); b.setMinTimeSpan(b.getTimeSpan()); b.setMinRequired(2); b.setNumberOfDivisions(5); BeatDivisionSchemeList.addBeatDivisionScheme(b); // qtr quintuplet b = new BeatDivisionScheme(); b.setTimeSpan(4); b.setMinTimeSpan(b.getTimeSpan()); b.setMinRequired(2); b.setNumberOfDivisions(5); BeatDivisionSchemeList.addBeatDivisionScheme(b); // 16th sextuplet b = new BeatDivisionScheme(); b.setTimeSpan(1); b.setMinTimeSpan(b.getTimeSpan()); b.setMinRequired(4); b.setNumberOfDivisions(6); BeatDivisionSchemeList.addBeatDivisionScheme(b); // 8th sextuplet b = new BeatDivisionScheme(); b.setTimeSpan(2); b.setMinTimeSpan(b.getTimeSpan()); b.setMinRequired(2); b.setNumberOfDivisions(6); BeatDivisionSchemeList.addBeatDivisionScheme(b); // 16th septuplet b = new BeatDivisionScheme(); b.setTimeSpan(1); b.setMinTimeSpan(b.getTimeSpan()); b.setMinRequired(2); b.setNumberOfDivisions(7); BeatDivisionSchemeList.addBeatDivisionScheme(b); // 8th septuplet b = new BeatDivisionScheme(); b.setTimeSpan(2); b.setMinTimeSpan(b.getTimeSpan()); b.setMinRequired(2); b.setNumberOfDivisions(7); BeatDivisionSchemeList.addBeatDivisionScheme(b); // qtr septuplet b = new BeatDivisionScheme(); b.setTimeSpan(4); b.setMinTimeSpan(b.getTimeSpan()); b.setMinRequired(2); b.setNumberOfDivisions(7); BeatDivisionSchemeList.addBeatDivisionScheme(b); // 16th nontuplet b = new BeatDivisionScheme(); b.setTimeSpan(1); b.setMinTimeSpan(b.getTimeSpan()); b.setMinRequired(2); b.setNumberOfDivisions(9); BeatDivisionSchemeList.addBeatDivisionScheme(b); // 8th nontuplet b = new BeatDivisionScheme(); b.setTimeSpan(2); b.setMinTimeSpan(b.getTimeSpan()); b.setMinRequired(2); b.setNumberOfDivisions(9); BeatDivisionSchemeList.addBeatDivisionScheme(b); // qtr nontuplet b = new BeatDivisionScheme(); b.setTimeSpan(4); b.setMinTimeSpan(b.getTimeSpan()); b.setMinRequired(2); b.setNumberOfDivisions(9); BeatDivisionSchemeList.addBeatDivisionScheme(b); // 16th 11-tuplet b = new BeatDivisionScheme(); b.setTimeSpan(1); b.setMinTimeSpan(b.getTimeSpan()); b.setMinRequired(2); b.setNumberOfDivisions(11); BeatDivisionSchemeList.addBeatDivisionScheme(b); // 8th 11-tuplet b = new BeatDivisionScheme(); b.setTimeSpan(2); b.setMinTimeSpan(b.getTimeSpan()); b.setMinRequired(2); b.setNumberOfDivisions(11); BeatDivisionSchemeList.addBeatDivisionScheme(b); // qtr 11-tuplet b = new BeatDivisionScheme(); b.setTimeSpan(4); b.setMinTimeSpan(b.getTimeSpan()); b.setMinRequired(2); b.setNumberOfDivisions(11); BeatDivisionSchemeList.addBeatDivisionScheme(b); // 16th 13-tuplet b = new BeatDivisionScheme(); b.setTimeSpan(1); b.setMinTimeSpan(b.getTimeSpan()); b.setMinRequired(2); b.setNumberOfDivisions(13); BeatDivisionSchemeList.addBeatDivisionScheme(b); // 8th 13-tuplet b = new BeatDivisionScheme(); b.setTimeSpan(2); b.setMinTimeSpan(b.getTimeSpan()); b.setMinRequired(2); b.setNumberOfDivisions(13); BeatDivisionSchemeList.addBeatDivisionScheme(b); // qtr 13-tuplet b = new BeatDivisionScheme(); b.setTimeSpan(4); b.setMinTimeSpan(b.getTimeSpan()); b.setMinRequired(2); b.setNumberOfDivisions(13); BeatDivisionSchemeList.addBeatDivisionScheme(b); } public static void main(String args[]) { JMSL.clock.setAdvance(0.1); MusicShape s = new MusicShape(4); // s.add(0.2651801, 35, 0.5, 0.065507166); s.add(0.2651801, 79.5, 0.5, 0.065507166); // s.add(0.2651801, 86.5, 0.5, 0.065507166); // s.add(0.3306872, 79.5, 0.5, 0.250009289); // s.add(0.3306872, 35, 0.5, 0.250009289); s.add(0.3306872, 86.5, 0.5, 0.250009289); Score score = new Score(1); score.addMeasure(); if (USE_DEFAULT_BEAT_DIVISION_SCHEME) { BeatDivisionSchemeList.defaultSetup(); } else { TranscribeScore6.setupCustomBeatDivisionSchemeList(); } Transcriber.setFillBeatWithNote(false); Transcriber transcriber = new Transcriber(); transcriber.setScore(score); transcriber.setSourceMusicShape(s); Vector tsVector = new Vector(); tsVector.addElement(new TempoTimeSignatureHolder(new Tempo(60), new TimeSignature(4, 4))); transcriber.setTempoTimeSignatures(tsVector); try { score.setCurrentStaffNumber(0); 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); } final ScoreFrame f = new ScoreFrame(); f.addScore(score); // f.loadPrefs(); f.addWindowListener(new java.awt.event.WindowAdapter() { public void windowClosing(java.awt.event.WindowEvent e) { f.quit(); } }); // f.pack(); f.setVisible(true); } }