package jmsltestsuite; import java.util.Vector; import com.softsynth.jmsl.JMSL; import com.softsynth.jmsl.MusicShape; import com.softsynth.jmsl.score.Clef; import com.softsynth.jmsl.score.Score; import com.softsynth.jmsl.score.ScoreFrame; import com.softsynth.jmsl.score.Tempo; 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.TempoTimeSignatureHolder; import com.softsynth.jmsl.score.transcribe.Transcriber; 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 changes tempo in measure 2 and then changes it back in measure 3. So note events that would normally get transcribed as eighths are * transcribed as quarters, with a tempo change. * @author Nick Didkovsky, (c) 2002 Nick Didkovsky, All Rights reserved. */ public class TestTranscribe3 { public static void main(String args[]) { JMSL.clock.setAdvance(0.1); BeatDivisionSchemeList.defaultSetup(); MusicShape source = new MusicShape(4); source.add(1.0, 60, 0.5, 1); source.add(1.0, 61, 0.5, 1.0); source.add(0.5, 62, 0.5, 0.5); // normally would become 8th source.add(0.5, 63, 0.5, 0.5); // normally would become 8th source.add(1.0, 64, 0.5, 1.0); // source.add(1.0, 65, 0.5, 1.0); // source.add(1.0, 64, 0.5, 1.0); // source.add(1.0, 65, 0.5, 1.0); source.integrate(0); source.print(); // 2 staves, width, height Score score = new Score(2, 1024, 800); score.addMeasure(); score.getMeasure(0).getStaff(1).setClef(Clef.BASS_CLEF); Transcriber transcriber = new Transcriber(); transcriber.setScore(score); transcriber.setSourceMusicShape(source); Vector tsVector = new Vector(); tsVector.addElement(new TempoTimeSignatureHolder(new Tempo(60), new TimeSignature(2, 4))); // double tempo!!! tsVector.addElement(new TempoTimeSignatureHolder(new Tempo(120), new TimeSignature(2, 4))); tsVector.addElement(new TempoTimeSignatureHolder(new Tempo(60), new TimeSignature(2, 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.setVisible(true); } }