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.SelectionBuffer; import com.softsynth.jmsl.score.SelectionBufferListener; import com.softsynth.jmsl.score.Tempo; import com.softsynth.jmsl.score.operators.MeasuresWithRestsOperator; 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; //import com.softsynth.jmsl.util.*; /** * JMSL's com.softsynth.jmsl.score.transcribe package enables the transcription * of arbitrary MusicShape data into common music notation. * * @author Nick Didkovsky, (c) 2002 Nick Didkovsky, All Rights reserved. */ public class TranscribeScore1 implements SelectionBufferListener { public void selectionBufferNotify(Score score) { SelectionBuffer b = score.getSelectionBuffer(); int numNotesSelected = b.size(); System.out.println("User selected " + numNotesSelected + " notes"); } public static void main(String args[]) { JMSL.clock.setAdvance(0.1); BeatDivisionSchemeList.defaultSetup(); MusicShape musicShape = new MusicShape(4); musicShape.setDimensionName(0, "duration"); musicShape.setDimensionName(1, "pitch"); musicShape.setDimensionName(2, "amplitude"); musicShape.setDimensionName(3, "hold"); double firstThreeMeasures = 3 * 4; musicShape.add(0, 60, 0.5, 0.8 ); musicShape.add(1, 60, 0.5, 0.8 ); musicShape.add(2, 60, 0.5, 0.8 ); musicShape.add(3, 60, 0.5, 0.8 ); musicShape.add(8, 72, 0.5, 0.8 ); musicShape.add(9, 72, 0.5, 0.8 ); musicShape.add(10, 72, 0.5, 0.8 ); musicShape.add(11, 72, 0.5, 0.8 ); for (int i = 0; i < 21; i++) { musicShape.add(firstThreeMeasures + i*2, 60 + i, 0.5, 0.1 * (i + 1)); } // 1 staff, width, height Score score = new Score(1, 1024, 800); score.addMeasure(); score.getEditManager().addSelectionBufferListener(new TranscribeScore1()); Transcriber transcriber = new Transcriber(); transcriber.setScore(score); // transcriber.setFillBeatWithNote(false); transcriber.setExtendLastHoldTime(true); transcriber.setSourceMusicShape(musicShape); TempoTimeSignatureHolder ts = new TempoTimeSignatureHolder(new Tempo(60), new TimeSignature(4, 4)); Vector tsVector = new Vector(); tsVector.addElement(ts); transcriber.setTimeSignatures(tsVector); score.setCurrentStaffNumber(0); try { transcriber.transcribe(); // new MeasuresWithRestsOperator().operate(score); } 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); } }