I am going to write a desktop software where I can listen notes, sing along with them and see visual feedback in a realtime with both notes and vocal displayed in the same screen.
I need:
- Import music notes (as MIDI file or in some another popular format)
- See the notes in a convenient visual form
- Play the notes through headphones
- Sing to a microphone along with the notes played in headphones
- See visual feedback link on top of the notes layer
- Change pitch shifts and tempo of the notes
The screenshot is from Vocaberry Android app.
I tried to find a ready-made desktop tool for this, but apparently it does not exist:
Therefore I need to write my own. I want to make it as an audio plugin (VST3, etc) for DAWs. It is not a trivial plugin, therefore I decide to write it on c++.
What JUCE classes or modules can I use for the task at hand to avoid reinventing a wheel?
How to show notes from MIDI file as blocks, how to get and draw the voice line above the note blocks? What concrete classes can I use?