First, have a screenshot: loadsaprogchanges.logicx

The MIDI file I'm working with was generated by a tool which really likes program change events. While this is expected behavior for said tool, it makes the resulting file a pain to deal with in LPX.

This MIDI region has almost a thousand of these events (using 14 different program numbers total) and I'd like to split it at each of these events to separate all following notes (and volume/balance changes) into their own tracks for easier editing.

I tried writing a Scripter script that assigns all events following a program change event to another channel, which would allow me to use LPX's "Separate by MIDI channel" function, but apparently there's no way for Scripter (or any of the other MIDI FX plugins) to be applied destructively.

I also tried writing a Python script to go through the MIDI file and do the same thing, but I can't get it to output non-bogus data.

Do I have to split this region manually or is there an easier way?

  • did you ever solve this?
    – Alnitak
    Commented Sep 15, 2017 at 21:31
  • I didn't, sorry.
    – emmalyx
    Commented Sep 16, 2017 at 14:26
  • sounds like an interesting challenge, then :)
    – Alnitak
    Commented Sep 17, 2017 at 11:14

1 Answer 1


maybe this open source project can help?


Even if no binaries are available, it's easy to build with Visual Studio 2019, and it worked for me.

Best regards.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.