I’ve continued to look at this as I get back to spending more time on music.
I think the fundamental problem is that this translation is more art than science. This is compounded by the nature of the source material, including the timing of changes, and whether there is melodic as well as harmonised content. (if the latter is mixed, then most apps might have a problem with say an aeolian sequence with melodic content ‘playing outside’, for example.)
Scaler does have a problem in that it appears to look for changes rather than factoring in the length of, say, a pad chord. So in a 4 bar pad sequence in which the first chord is 2 bars and then 2 bars each for another chord, Scaler throw up 3 bars, not 4, especially when it’s legato.
Often in those cases, as long as you know the underlying key, it’s fairly straight forward to quickly eyeball the sequence and fiddle to correct the issue.
I have compared various tools and approaches, with slightly unexpected results. Years ago I purchased a copy of ‘Band in a Box’ for example, which I don’t use, but it’s midi detection in some cases can be quite good - and it deals with the aforementioned timing issue,
Another slightly odd route I have used is to render the midi to audio and then use deCoda (all hail @bernd for the suggestion) to analyse the audio; this can work quite well.
However, in defence of Scaler it has seemingly better contextual analysis. I’l make some data available for you via a web site, but whereas deCoda and BIAB analyses a test piece as Gmajor, Scaler was more correct in detecting D mixolydian. Therein lies the problem - the G ionian mode and the D mixolydian mode share the same notes, but they are not the same musically in the context of a piece.
I’ll contact you again later with a link, but I have been working on a piece which in fact has sparse chords, so Scaler sees it thus
… picking up all the individual notes and dyads and spacing them as a bar each.
However, by dropping the whole sequence on to the patterns, you cut out the single notes so,
Anyway, more later.