[jmsl] ScorePainter problem

jmsl at music.columbia.edu jmsl at music.columbia.edu
Mon Sep 8 17:44:14 EDT 2008


Hi all,

I'm trying to test a new ScorePainter, and I can't get it to install.   
When I run it I get:
ScorePainter:	class com.softsynth.jmsl.score.ScorePainter


Here's a demonstration of the problem.  Am I missing something in the  
rendering sequence for a score?

thanks,
Peter McCulloch

package com.petermcculloch.megalo.graphics;

import java.awt.Graphics;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

import javax.swing.JFrame;

import com.didkovsky.portview.swing.ViewFactorySwing;
import com.softsynth.jmsl.JMSL;
import com.softsynth.jmsl.score.Score;
import com.softsynth.jmsl.score.ScoreCanvasSwing;
import com.softsynth.jmsl.score.ScorePainter;

public class ScorePainterMegalo extends ScorePainter {

	Score	score;

	public ScorePainterMegalo(Score score) {
		super(score);
		this.score = score;
	}

	@Override
	public void render(Graphics g, double playTime, boolean b) {
		super.render(g, playTime, b);
		System.out.println("Called render...");
	}

	public static void main(String args[]) {

		JFrame frame = new JFrame();

		JMSL.setViewFactory(new ViewFactorySwing());

		// Score.useSharedCanvas(false);

		Score score = new Score(2, 700, 700);

		score.addMeasures(10, 3, 4);

		score.setCurrentMeasureNumber(0);
		score.setCurrentStaffNumber(0);
		score.setCurrentTrackNumber(0);
		score.addNote(1., 60., 1., 1.);

		ScorePainterMegalo painter = new ScorePainterMegalo(score);

		ScoreCanvasSwing canvas = null;

		
		// if true, blank canvas, but same scorepainter.  If false, score  
canvas and same scorepainter
		boolean createNew = false;

		if (createNew) {
			canvas = new ScoreCanvasSwing(500, 500);

			score.setScoreCanvas(canvas);
			canvas.setScorePainter(painter);
			score.getScoreCanvas().setScorePainter(painter);
		} else {

			score.getScoreCanvas().setScorePainter(painter);

			canvas = (ScoreCanvasSwing) score.getScoreCanvas();

		}

		frame.add(((ScoreCanvasSwing) canvas).getComponent());

		frame.addWindowStateListener(new WindowAdapter() {
			@Override
			public void windowClosed(WindowEvent e) {
				JMSL.closeMusicDevices();
				System.exit(0);
			}
		});

		frame.pack();

		score.ownCanvas();

		frame.setVisible(true);

		System.out.println("ScorePainter:\t" +  
score.getScorePainter().getClass().toString());

	}

}


More information about the jmsl mailing list