/* * Created on May 18, 2006 * */ package jmsltestsuite; import java.awt.Color; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import com.didkovsky.portview.swing.ViewFactorySwing; import com.softsynth.jmsl.JMSL; import com.softsynth.jmsl.score.*; public class MultiTrackWedgesTest { public static void main(String[] args) { JMSL.setViewFactory(new ViewFactorySwing()); // one staff, 800x600 pixel canvas Score score = new Score(1, 1200, 600); // IMPORTANT!!! Call setNumTracksPerStaff() right after the constructor and before adding // measures. Else you will need to manage heterogeneous numbers of tracks in the staves of // various measures yourself score.setNumTracksPerStaff(4); score.setUseLegacyMultiTrackOrientation(false); boolean onlyTwo = false; double zoom = 0.5; score.getScoreLayoutManager().setZoom(zoom); score.addMeasure(4, 4); score.setInstrumentNamesVisible(false); double basePitch = 60; int iterationLimit = onlyTwo ? 2 : score.getNumTracksPerStaff(); String title = score.isUseLegacyMultiTrackOrientation() ? "Legacy multi track orientation" : "New multitrack orientation"; title += ", number of tracks = " + score.getNumTracksPerStaff() + ", showing notes on first " + iterationLimit + " tracks"; score.setName("Wedge test, " + title); for (int m = 0; m < 2; m++) { for (int t = 0; t < iterationLimit; t++) { score.setCurrentTrackNumber(t); // score.rewind(); for (int i = 0; i < 4; i++) { Note note = score.addNote(1, 60 + t * 6, 0.5, 0.2); note.setCrescOut(i < 3); } } } // now tweak wedge placement in second measure score.getMeasure(0).setMeasureText("wedges overlap"); score.getMeasure(1).setMeasureText("Wedges are shifted by the user"); score.getMeasure(1).getStaff(0).getTrack(0).setWedgeShiftY(30); score.getMeasure(1).getStaff(0).getTrack(3).setWedgeShiftY(-20); final ScoreFrame scoreFrame = new ScoreFrame(); scoreFrame.addScore(score); scoreFrame.pack(); scoreFrame.setVisible(true); score.getControlPanel().setZoom(1); scoreFrame.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { scoreFrame.quit(); } }); } }