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();
}
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
*/
}
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("");
}
});
}
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);
}
}
Aggregations