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; }