For my thesis at TU Munich I did an interactive jazz improvisation learning application. It visualises an instrument's pitch (or you can also click on the screen for synthesized playing) together with a visual represenation of the harmonic model underlying for a specific piece. The player is now able to improvise over a backing track and is visually aided in the choice of notes. See here for the thesis pdf.
Here is a screenshot. For a more interesting demo, please download this video.
This application is intended to be cross-platform for iOS, Android and MacOS, therefore MidiSnapPad is built with the cross-platform framework JUCE. You can build this project using the Projucer and JUCE v5.4.3. Make sure to give microphone permissions.