Search in sources :

Example 1 with MidiScorePlayer

use of com.xenoage.zong.desktop.io.midi.out.MidiScorePlayer in project Zong by Xenoage.

the class MidiScorePlayerTry method main.

public static void main(String... args) throws MidiUnavailableException {
    int timeFactor = 1000;
    Score score = ScoreRevolutionary.createScore();
    SynthManager.init(false);
    MidiScorePlayer.init();
    MidiScorePlayer player = midiScorePlayer();
    player.addPlaybackListener(new MidiScorePlayerTry());
    player.openScore(score);
    System.out.println("Play");
    player.start();
    try {
        Thread.sleep(2 * timeFactor);
    } catch (InterruptedException ex) {
    }
    player.pause();
    System.out.println("Pause");
    try {
        Thread.sleep(2 * timeFactor);
    } catch (InterruptedException ex) {
    }
    System.out.println("Play");
    player.start();
    try {
        Thread.sleep(3 * timeFactor);
    } catch (InterruptedException ex) {
    }
    player.stop();
    System.out.println("Stop");
    try {
        Thread.sleep(2 * timeFactor);
    } catch (InterruptedException ex) {
    }
    player.start();
    try {
        Thread.sleep(3 * timeFactor);
    } catch (InterruptedException ex) {
    }
    player.stop();
    SynthManager.close();
}
Also used : Score(com.xenoage.zong.core.Score) MidiScorePlayer(com.xenoage.zong.desktop.io.midi.out.MidiScorePlayer)

Example 2 with MidiScorePlayer

use of com.xenoage.zong.desktop.io.midi.out.MidiScorePlayer in project Zong by Xenoage.

the class MidiVelocityConverterTry method midiConverterTest.

public void midiConverterTest() {
    Score score = createTestScore();
    try {
        SynthManager.init(false);
        MidiScorePlayer.init();
        MidiScorePlayer pl = midiScorePlayer();
        pl.addPlaybackListener(new MidiScorePlayerTry());
        pl.openScore(score);
        pl.start();
        try {
            Thread.sleep(8000);
        } catch (InterruptedException ex) {
        }
        SynthManager.close();
    } catch (MidiUnavailableException e) {
    }
/*
		
		byte[] message = sequence.getTracks()[0].get(0).getMessage().getMessage();
		//Assert.assertEquals(58, message[2]);
		message = sequence.getTracks()[0].get(1).getMessage().getMessage();
		Assert.assertEquals(116, message[2]);
		//Message 2 is note-off event
		message = sequence.getTracks()[0].get(3).getMessage().getMessage();
		Assert.assertEquals(110, message[2]);
		//Message 4 and 5 are note-off events
		message = sequence.getTracks()[0].get(6).getMessage().getMessage();
		Assert.assertEquals(110, message[2]);
		//Message 7 is note-off event
		message = sequence.getTracks()[0].get(8).getMessage().getMessage();
		Assert.assertEquals(110, message[2]);
		message = sequence.getTracks()[0].get(9).getMessage().getMessage();
		Assert.assertEquals(116, message[2]);
		//Message 10 is note-off event
		message = sequence.getTracks()[0].get(11).getMessage().getMessage();
		Assert.assertEquals(58, message[2]);
		//Message 12 and 13 are note-off events
		message = sequence.getTracks()[0].get(14).getMessage().getMessage();
		Assert.assertEquals(58, message[2]);
		//Message15 is note-off event
		message = sequence.getTracks()[0].get(16).getMessage().getMessage();
		Assert.assertEquals(102, message[2]);
		message = sequence.getTracks()[0].get(17).getMessage().getMessage();
		Assert.assertEquals(58, message[2]);
		//Message 18 is note-off event
		message = sequence.getTracks()[0].get(19).getMessage().getMessage();
		Assert.assertEquals(58, message[2]);
		//Message 20 is note-off event
		message = sequence.getTracks()[0].get(21).getMessage().getMessage();
		Assert.assertEquals(58, message[2]);
		//Message 22, 23 and 24 are note-off events
		*/
}
Also used : MidiUnavailableException(javax.sound.midi.MidiUnavailableException) Score(com.xenoage.zong.core.Score) MidiScorePlayer(com.xenoage.zong.desktop.io.midi.out.MidiScorePlayer)

Example 3 with MidiScorePlayer

use of com.xenoage.zong.desktop.io.midi.out.MidiScorePlayer in project Zong by Xenoage.

the class PlayerFrame method playbackAtMs.

@Override
public void playbackAtMs(long ms) {
    MidiScorePlayer player = pApp().getPlayer();
    long lengthMs = player.getMicrosecondLength() / 1000;
    Platform.runLater(() -> {
        if (lengthMs > 0) {
            progress.setProgress(1.0 * ms / lengthMs);
            lblTimePos.setText(formatTime(ms));
            lblTimeDuration.setText(formatTime(lengthMs));
        } else {
            progress.setProgress(0);
            lblTimePos.setText("");
            lblTimeDuration.setText("");
        }
    });
}
Also used : MidiScorePlayer(com.xenoage.zong.desktop.io.midi.out.MidiScorePlayer)

Example 4 with MidiScorePlayer

use of com.xenoage.zong.desktop.io.midi.out.MidiScorePlayer in project Zong by Xenoage.

the class PlayerFrame method onProgressBarClick.

@FXML
void onProgressBarClick(MouseEvent event) {
    MidiScorePlayer player = pApp().getPlayer();
    if (player.getSequence() != null) {
        double pos = event.getX() / progress.getWidth();
        long mis = (long) (pos * player.getMicrosecondLength());
        player.setMicrosecondPosition(mis);
        playbackAtMs(mis / 1000);
    }
}
Also used : MidiScorePlayer(com.xenoage.zong.desktop.io.midi.out.MidiScorePlayer) FXML(javafx.fxml.FXML)

Aggregations

MidiScorePlayer (com.xenoage.zong.desktop.io.midi.out.MidiScorePlayer)4 Score (com.xenoage.zong.core.Score)2 FXML (javafx.fxml.FXML)1 MidiUnavailableException (javax.sound.midi.MidiUnavailableException)1