Split a MIDI file into pieces and re-sequence them using its notes. Keep the same file while trying different parameters.
Classicala_h_gmclair.mid
The algorithm is written in KeyKit. Source code.