While I making music, I like to use pure MIDI with various synthesizers at the hand (include those I have programmed by myself).
Myself I have widely used ancient Cakewalk Sonar 1.3 for a while (since aproximately 2005/2006'th year, I was a school boy at that moment

) even I have moved to Linux and I kept use it on Wine. I have used some other MIDI tools like `MIDI Editor`, however, it wasn't so functional like that so ancient Sonar 1.3, but, it had own procs I used independently from Sonar to... repair some weird MIDI files are can't be opened correctly by Sonar and they are needs some extra manual fixing up. However, recently I have found a nice open-source solution called as Sekaiju I have checked out, reviewed, and I even wrote a "Fox Fansasy" music by it, and, I like it!
So, I have stopped to use that ancient Sonar 1.3 since I have Sekaiju that much better manages MIDI data, and which is more light-weight, supports much more modern features and MIDI entry types aren't supported by that Sonar 1.3. However, it has a con in a form that no convenient way to put RPN and NRPN events, no drop-down menus to choose a patch program by name, etc.
Editor can be found here:
https://openmidiproject.osdn.jp/Sekaiju_en.html (also
mirror for just in a case I made here). Even it's Windows-only, it perfectly works in Wine on Linux.
My melody played via Sekaiju and with using of my libOPNMIDI synthesizer:
Original link: https://www.youtube.com/watch?v=lOCzM_SaUro