[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