Part IV - Conclusions and Thoughts
1 Scaler is very good at classifying those chords it can reliably detect. Every instance I checked where there was the appropriate number of simultaneous notes without extraneous non chord notes agreed with the definitions in my (good) guitar scales and chords utility.
2 Scaler (both audio and MIDI) worked less well in particular cases, such as where pads were played legato in adjacent bars. This is a normal circumstance where a user wants to repeat the attack part of pad rhythmically. The logic appears to detect changes to the detected chord, but disregards bar boundaries, even though there is a ;note on’ event. This will tend to affect ambient and cinematic passages most.
3 Scaler also had difficulties in detection where there were insufficient simultaneous (and ambiguous) notes. However, a chord is three or more notes played together, so this behaviour isn’t a bug per se, as it is still doling what it says on the tin.
4 Although technically excellent, the chord detection in one sense was too good, in that the human player would probably not have used the detected chords, and used something simpler as a bland backing.
In one example the tonality and progression pointed to minor, but the missing third (which was sort of implied) and a flat 7 led to a mixolydian mode being declared, where by ear the player probably wouldn’t have selected this.
5 BIAB detected some pieces well, but probably because it seems to use just triads and sevenths, tying up with point 4 above. It doesn’t have the legato problem and correctly identifies bar boundaries. Its lack of rigidity is paradoxically a virtue in some cases, and hence seems to detect in certain cases things better in the overall context of a sequence. However, it is simply no match for Scaler in terms of scope and accuracy for complex MIDI chord detection.
6 On the audio front, deCoda is rudimentary in terms of detection (casting detected chords as triads), but can work with complex polyphonic material, and is good at finding the underlying key. I felt this offered an opportunity to use this in conjunction with Scaler (see ‘Thoughts’).
1 The detection quality of Scaler can be improved with minor changes to workflow. So, with (for example) a piano MIDI piece with both melody and chords, spending 10 seconds to chop the right hand part of the MIDI resulted in more accurate and relevant detection. Similarly an audio piece can be quickly filtered with a band pass to carve out pads or other chordal element to greatly improve detection performance.
Thus considering what pre-edits might be done on both MIDI and audio may improve overall success rates.
2 Section B is a secret weapon here. So for example, with a complex polyphonic piece, detecting the key (and changes) with deCoda (and a few hints on the possible chords) and then listening to the piece and selecting chords from the harmonised scale chords of the deCoda detected key, quickly allows the human detection of the progression.
Comments welcome, and if anybody reads this, I will throw in a few other (self-evident?) actions which help detection.