Example #1
0
  public MyPatch getProgram() {

    MyPatch patch = programEvent.getPatch();
    if (patch != null) {
      return patch;
    }

    FrinikaTrackWrapper track = ftw;
    int count = track.size();
    for (int i = 0; i < count; i++) {
      MidiEvent event = track.get(i);
      if (event.getTick() != 0) {
        return patch;
      }
      MidiMessage msg = event.getMessage();
      if (msg instanceof ShortMessage) {
        ShortMessage sms = (ShortMessage) msg;
        if (sms.getCommand() == ShortMessage.PROGRAM_CHANGE) {
          if (patch == null) {
            patch = new MyPatch(0, 0, 0);
          }
          patch.prog = sms.getData1();
        }
        if (sms.getCommand() == ShortMessage.CONTROL_CHANGE) {
          if (sms.getData1() == 0) {
            if (patch == null) {
              patch = new MyPatch(0, 0, 0);
            }
            patch.msb = sms.getData2();
          }
          if (sms.getData1() == 0x20) {
            if (patch == null) {
              patch = new MyPatch(0, 0, 0);
            }
            patch.lsb = sms.getData2();
          }
        }
      }
    }
    return patch;
  }