I want to take MIDI input from a device (like a keyboard), change some parameters (f. e. add a pitch bend) and send the resulting MIDI output to a device (like a software synthesizer).

I’d like to have a open-source, cross-platform (Windows, Mac OS, Linux) solution in C/C++ or Java that makes it easy to

  • list and select MIDI input/output devices
  • send and receive messages to/from these devices

I don’t necessarily need functions that compose the messages (like a pitch bend function that returns 0xE16000 for a semitone up pitch bend on channel 1), I’d be able to do that myself.

Looking for libraries I found RtMidi, PortMidi, and the Java MIDI package but I’m not sure whether they fit my needs and whether there is an easier solution.

Which one would you recommend? Why? Are there other, maybe better possibilities?

  • Did you ever find out a suitable framework to use? If yes, could you write up an answer? – Speldosa Nov 25 '18 at 22:05
  • This was for a hobby project I didn’t pursue for long. I never really looked at the Java package and I’m not sure about PortMidi either. RtMidi seems to be able do the things listed above but I didn’t try compiling for Windows or Mac OS. – MalteM Nov 27 '18 at 7:06
  • I've taken a look at RtMidi and it does seem to do the trick. I can create virtual midi devices and send midi to and from it. I haven't tried it cross-platform though, but it should work. – Speldosa Nov 27 '18 at 22:23

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.