Hallo, wir programmieren eine kleine Midi-Beatbox:
heißt, der Balken bewegt sich über das Pattern und spielt die ausgewählten Töne einer Spalte ab.
Unsere Klasse zum Abspielen des Midi-Sounds sieht folgendermaßen aus:
Der Thread wird also mit einer Sequence initialisiert, spielt sie ab und ist dann "tot".
Das funktioniert auch alles prima, bis man die geschwindigkeit und anzahl der Töne erhöht. Dann passieren undvorhersehbare Dinge (Latenzen, Pausen).
Sieht jemand vielleicht auf die Schnelle eine mögliche Performance-Lücke?

heißt, der Balken bewegt sich über das Pattern und spielt die ausgewählten Töne einer Spalte ab.
Unsere Klasse zum Abspielen des Midi-Sounds sieht folgendermaßen aus:
Java:
private class PlayThread extends Thread {
Sequencer midi;
public PlayThread(Sequence se) {
try {
midi = MidiSystem.getSequencer();
midi.setSequence(se);
midi.addMetaEventListener(new MetaEventListener() {
@Override
public void meta(MetaMessage ev) {
if (ev.getType() == 47) { // Sequence fertig gespielt
midi.close();
}
}
});
} catch (InvalidMidiDataException e) {
e.printStackTrace();
} catch (MidiUnavailableException e) {
e.printStackTrace();
}
}
@Override
public void run() {
try {
midi.open();
midi.start();
} catch (MidiUnavailableException e) {
e.printStackTrace();
}
}
}
Der Thread wird also mit einer Sequence initialisiert, spielt sie ab und ist dann "tot".
Das funktioniert auch alles prima, bis man die geschwindigkeit und anzahl der Töne erhöht. Dann passieren undvorhersehbare Dinge (Latenzen, Pausen).
Sieht jemand vielleicht auf die Schnelle eine mögliche Performance-Lücke?