[jmsl] Non-static variable feature request
jmsl at music.columbia.edu
jmsl at music.columbia.edu
Fri Jun 20 21:29:09 EDT 2008
Absolutely, Peter. I will redesign these as non-static Score fields. I
made them static for an initial rollout, which saved me some development
time so that I would not have to implement saving and loading. But I'll
fix that for the next build.
Thanks
Nick Didkovsky
---------Included Message----------
>Date: 20-jun-2008 19:26:07 -0400
>From: <jmsl at music.columbia.edu>
>To: <jmsl at music.columbia.edu>
>Subject: [jmsl] Non-static variable feature request
>
>Hi all,
>
>I was wondering if it's possible to have parameters that are different
>between scores such as
> Score.setMeasureNumbersVisible(false);
> Score.setStaffNumbersVisible(false);
> Score.setTimeSignaturesVisible(false);
> Score.setInstrumentNamesVisible(false);
> Score.setTempoVisible(false);
>
>be local variables instead.
>
>I think global makes sense for things like Score.setAntiAliasingHints,
>but I can think of several scenarios where it might be helpful to be
>able to individually turn on/off some of the above parameters.
>Certain dialogs might not need time signatures, clefs, instrument
>names, etc. and it would be really nice to be able to enable/disable
>those individually. Does this hose a lot of things, or is it possible?
>
>Here's a demo.
>
>
>thanks,
>Peter McCulloch
>
>
>package demos;
>
>import java.awt.Adjustable;
>import java.awt.BorderLayout;
>import java.awt.Dimension;
>import java.awt.event.AdjustmentEvent;
>import java.awt.event.AdjustmentListener;
>import java.awt.event.WindowAdapter;
>import java.awt.event.WindowEvent;
>
>import javax.swing.DefaultBoundedRangeModel;
>import javax.swing.JFrame;
>import javax.swing.JLabel;
>import javax.swing.JPanel;
>import javax.swing.JScrollBar;
>import javax.swing.JScrollPane;
>import javax.swing.JSplitPane;
>import javax.swing.SwingConstants;
>
>import com.didkovsky.portview.swing.ViewFactorySwing;
>import com.softsynth.jmsl.JMSL;
>import com.softsynth.jmsl.score.Clef;
>import com.softsynth.jmsl.score.NoteFactory;
>import com.softsynth.jmsl.score.Score;
>
>public class NumberingDemo {
>
> /**
> * @param args
> */
> public static void main(String[] args) {
>
> JMSL.setViewFactory(new ViewFactorySwing());
>
> JFrame frame = new JFrame();
>
> JSplitPane splitPane = new JSplitPane(JSplitPane.VERTICAL_SPLIT);
> splitPane.setOneTouchExpandable(true);
>
> Score.useSharedCanvas(false);
>
> final Score score1 = new Score(2, 600, 150);
> final Score score2 = new Score(4, 600, 450);
>
> // Configure score1
>
> score1.addMeasures(1, 4, 4);
> score1.getMeasure(0).getStaff(1).setClef(Clef.BASS_CLEF);
> score1.getMeasure(0).getStaff(0).setSpaceBelow(30);
> score1.getMeasure(0).getStaff(1).setSpaceAbove(30);
>
> score1.setCurrentMeasureNumber(0);
> score1.setCurrentStaffNumber(0);
>
> score1.addNote(NoteFactory.makeNote(4., 63, 1, 0.8));
> score1.getLastAddedNote().addInterval(70.);
> score1.getLastAddedNote().addInterval(76.);
> score1.getLastAddedNote().addInterval(78.);
>
> score1.setCurrentStaffNumber(1);
>
> score1.addNote(NoteFactory.makeNote(4., 36, 1, 0.8));
> score1.getLastAddedNote().addInterval(49);
>
> // Configure score2
>
> score2.addMeasures(10, 4, 4);
>
> for (int i = 0; i < score2.size(); i++) {
> score2.getMeasure(i).getStaff(1).setClef(Clef.BASS_CLEF);
> score2.getMeasure(i).getStaff(3).setClef(Clef.BASS_CLEF);
> }
>
> JPanel panel1 = new JPanel();
> panel1.setLayout(new BorderLayout());
>
> JLabel chordEditorLabel = new JLabel(" Chord Editor - shouldn't
>have instruments, time sigs, etc.");
> chordEditorLabel.setPreferredSize(new Dimension(600, 30));
> chordEditorLabel.setVerticalAlignment(SwingConstants.CENTER);
> panel1.add(chordEditorLabel, BorderLayout.NORTH);
>
> panel1.add(new JScrollPane(score1.getScoreCanvas().getComponent()),
>BorderLayout.CENTER);
>
> JPanel panel2 = new JPanel();
> panel2.setLayout(new BorderLayout());
>
> JLabel scoreLabel = new JLabel(" Score for two pianos - should have
>instruments, time sigs, etc.");
> scoreLabel.setPreferredSize(new Dimension(600, 30));
>
> panel2.add(scoreLabel, BorderLayout.NORTH);
>
> panel2.add(new JScrollPane(score2.getScoreCanvas().getComponent()),
>BorderLayout.CENTER);
>
> JScrollBar slider = new JScrollBar(Adjustable.HORIZONTAL);
>
> slider.setModel(new DefaultBoundedRangeModel(0, 1, 0, score2.size()
>- 1));
>
> slider.addAdjustmentListener(new AdjustmentListener() {
>
> @Override
> public void adjustmentValueChanged(AdjustmentEvent e) {
> score2.render(((JScrollBar) e.getSource()).getModel().getValue());
> }
>
> });
>
> panel2.add(slider, BorderLayout.SOUTH);
>
> splitPane.add(panel1);
> splitPane.add(panel2);
>
> frame.getContentPane().add(splitPane);
> // Score.setMeasureNumbersVisible(false);
> // Score.setStaffNumbersVisible(false);
>
> // Appropriate for top one, but not for bottom one
> Score.setTimeSignaturesVisible(false);
> Score.setInstrumentNamesVisible(false);
>
> frame.addWindowStateListener(new WindowAdapter() {
> @Override
> public void windowClosed(WindowEvent e) {
> JMSL.closeMusicDevices();
> System.exit(0);
> }
> });
>
> frame.pack();
>
> frame.setVisible(true);
>
> }
>
>}
>
>_______________________________________________
>jmsl mailing list
>jmsl at music.columbia.edu
>http://music.columbia.edu/mailman/listinfo/jmsl
>
>
---------End of Included Message----------
More information about the jmsl
mailing list