package jmsltestsuite; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.util.Enumeration; import java.util.Vector; import com.didkovsky.portview.swing.ViewFactorySwing; import com.softsynth.jmsl.JMSL; import com.softsynth.jmsl.score.*; import com.softsynth.jmsl.score.justify.JustifiableNote; /** * * * @author Nick Didkovsky, copyright 2005 Nick Didkovsky */ public class ScoreLayoutTest { Score score; int numStaves; public ScoreLayoutTest() { int w = 1000; int h = 750; numStaves = 2; score = new Score(numStaves, w, h); build(); } public void build() { score.addMeasure(4, 4); for (int i = 0; i < 4; i++) { Note n = score.addNote(1.0, 60, 0.5, 0.8); n.addInterval(72); } for (int i = 0; i < 8; i++) { Note n = score.addNote(0.5, 60, 0.5, 0.8); n.setBeamedOut(i % 2 == 0); } for (int i = 0; i < 2; i++) score.addNote(1.0, 60, 0.5, 0.8); for (int i = 0; i < 8; i++) { Note n = score.addNote(0.25, 60, 0.5, 0.8); n.setBeamedOut(i % 4 < 3); } for (int i = 0; i < 2; i++) score.addNote(1.0, 60, 0.5, 0.8); for (int i = 0; i < 16; i++) { Note n = score.addNote(0.125, 60, 0.5, 0.8); n.setBeamedOut(i % 8 < 7); } score.getScoreLayoutManager().setZoom(0.5); score.getControlPanel().setZoom(0.5); } public static void main(String args[]) { Measure.setConstantMeasureWidth(false); JMSL.setViewFactory(new ViewFactorySwing()); ScoreLayoutTest st = new ScoreLayoutTest(); ScoreFrame scoreFrame = new ScoreFrame(); scoreFrame.addScore(st.score); scoreFrame.pack(); scoreFrame.setVisible(true); scoreFrame.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } }); // double[] durs = { 0.0625 / 2, 0.0625, 0.125, 0.25, 0.5, 1.0, 2.0, 4.0, 8, 16 }; // for (int i = 0; i < durs.length; i++) { // System.out.println("dur=" + durs[i] + ", spacing=" + // NoteJustifier.calcDurationalSpacing(0.7, durs[i])); // } Vector justifiables = new Vector(); justifiables = new Vector(); Measure measure = st.score.getMeasure(3); for (int i = measure.getScore().getFirstStaffToRender(); i < measure.size(); i++) { Staff staff = measure.getStaff(i); for (int t = 0; t < staff.size(); t++) { Track track = staff.getTrack(t); double startTime = 0; for (Enumeration e = track.elements(); e.hasMoreElements();) { Note n = (Note) e.nextElement(); justifiables.addElement(new JustifiableNote(n, startTime)); startTime += n.getDurationData(); } } } // f.setVisible(true); } }