Jack Midi support? (virtual midi out)

I have an app that creates a virtual midi output - on linux this shows up as an alsa midi output.

So the user has to connect it to jack via a2jmidid

Can it be set up to create a jack midi out directly?

All the discussion of jack support I can find is very old, and none deals specifically with jack midi.

You could simply invoke a2jmidid as a ChildProcess from JUCE.

I take it that means that Jack midi is not currently available as standard in Juce?

I’m really not sure how I would go about using a2jmidid directly in juce - how would it interact with the system a2jmidid which may also be present? would Juce run it’s own copy of a2jmidid as part of the app binary? what would show up in the jack midi patchbay?

I think it probably isn’t worth the effort researching this when it works with alsamidid as is - it would have been nice to skip that step for the user though as the qkjackctl alsa midi and jack midi routing is quite confusing to use.

Yes JUCE only supports ALSA midi for the time being.

Could you just use the system one (for example via std::system)?

I’m really not sure - I don’t have that sort of contextual knowledge, but requiring the system one to be already installed and running would defeat part of the point of it. All it would be saving is a couple of connections in the qjackctl patchbay and that isn’t worth the effort for a niche app that may AFAIK have no other regular users but me…

It’s something i would like if it were already available in JUCE but not something I would do lots of work to get… I have other features to implement that would be a better use of my time.

I guess it’s just another one of those “too many standards” things that afflict linux music making. Though it seems to me that jack is becoming the defacto standard for serious music stuff on linux.

I have a new problem with my virtual midi out. The alsa midi out I have been using all along, is not working properly when compiled in my new setup with JUCE 5.

The output seems to be created, but it doesn’t show up in the qjackctl control panel for alsa midi, and Kmidimon can see it as an option but fails to connect to it.

when jack tries to connect to the midi output i see the following in qjackctl messages:

02:51:53.998 ALSA connection graph change.
02:51:53.999 JACK connection graph change.
Wed May 16 02:51:53 2018: ERROR: can’t subscribe to 130:0 - Operation not permitted
Wed May 16 02:51:53 2018: port deleted: MantaJuce3:midi/playback_1

what could have changed in my build environment or in Juce 5 to cause this?

Seems like a permission issue to me? Is qjackctl and your app running under the same user?

yeah it must be permission, but which permissions for what? and why?

it’s all the same user.

qjackctl and jack can see the virtual out created by Kmidimon - so that process works.

in a further twist - my old version of my app compiled years ago in juce 4 connects to jack just fine - however all old Juce V4 apps have in the last day or 2 stopped showing their gui windows (including V4 introjucer) they run and in the vcase of my V4 appp it even connects to jack but the window has no content…

the V4 window stuff is probably a separate issue, but something is messed up on my system and I have no idea what.

I’m making a new thread for this as it is quite separate from the title of this thread.