private void close() {
   receiver.close();
   device.close();
 }
  /** Sends messages to turn all controllers and all notes off for all tracks (channels) */
  private void cleanup() {
    ShortMessage allControllersOff = new ShortMessage();
    ShortMessage allNotesOff = new ShortMessage();

    for (byte track = 0; track < MidiDefaults.TRACKS; track++) {
      try {
        allControllersOff.setMessage(ShortMessage.CONTROL_CHANGE, track, (byte) 121, (byte) 0);
        receiver.send(allControllersOff, -1);

        allNotesOff.setMessage(ShortMessage.CONTROL_CHANGE, track, (byte) 123, (byte) 0);
        receiver.send(allNotesOff, -1);
      } catch (InvalidMidiDataException e) {
        // Not going to happen, we're keeping a close eye on the data in the MIDI messages
      }
    }
  }