From 3b9d6a232e11942ab093690059cee18ddab50c59 Mon Sep 17 00:00:00 2001 From: badvision Date: Sun, 19 Feb 2017 22:26:06 -0600 Subject: [PATCH] When switching midi devices, first send all notes off, all sound off on every channel just so it doesn't leave phantom notes playing. --- .../java/jace/hardware/PassportMidiInterface.java | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/main/java/jace/hardware/PassportMidiInterface.java b/src/main/java/jace/hardware/PassportMidiInterface.java index d3429fc..4b479fa 100644 --- a/src/main/java/jace/hardware/PassportMidiInterface.java +++ b/src/main/java/jace/hardware/PassportMidiInterface.java @@ -572,6 +572,20 @@ public class PassportMidiInterface extends Card { private void suspendACIA() { // TODO: Stop ACIA thread... if (midiOut != null) { + currentMessage = new ShortMessage(); + // Send a note-off on every channel + for (int channel = 0; channel < 16; channel++) { + try { + // All Notes Off + currentMessage.setMessage(0x0B0 | channel, 123, 0); + midiOut.send(currentMessage, 0); + // All Oscillators Off + currentMessage.setMessage(0x0B0 | channel, 120, 0); + midiOut.send(currentMessage, 0); + } catch (InvalidMidiDataException ex) { + Logger.getLogger(PassportMidiInterface.class.getName()).log(Level.SEVERE, null, ex); + } + } midiOut.close(); midiOut = null; }