You are here

qmidinet

First I must say I'm not very educated in the ways of midi on linux...so, my questions may be from lack of knowledge.

I wanted to set up a simple test of midi between two networked pc's.

So, for example on pc #1 run virtual midi keyboard and qmidinet. And, on pc #2 run gmidimonitor and qmidinet.

But, I see no way to connect to keyboard to qmidinet or monitor to qmidinet.

Also, does the udp address in qmidinet need to match that of the pc it is running on?
And, does the udp port need to match on the two pc's?

Regards,
Mac

Forums: 
rncbc's picture

does the udp address in qmidinet need to match that of the pc it is running on?
nope

does the udp port need to match on the two pc's?
yep

always use the given default udp/ip-address and port; if you messed around with any of those you can always hit "Reset" on both ends; if you really don't know what you' re doing, just because you're not supposed to be a udp/ip freak, please don't mess with those options yet.

but you should know that udp/ip multicast only works _inside_ your local network segment; in other words, it should work over switches but never ever over any kind of routers or bridges, whatever. so, forget on ever trying it over a WAN (aka internet).

the way it goes, goes like this:

midi-app@pc1 <-> qmidinet@pc1 <-> ( LAN ) <-> qmidinet@pc2 <-> midi-app@pc2

of course you must have to connect your midi-app's to/from qmidinet on either end--please use your preferred connection utility (eg. qjackctl, cadence, aconnect, jack_connect, patchage, etc.)
nb. LAN maybe a wired and/or/mixed wireless LAN.
byee

Well, I didn't change either. and I'm on the same network (i.e I routinely udp between these two pc's, though using their IP addresses)

But, I see no indication that there is any connection between the keyboard or the monitor and gmidinet. And nothing that indicates gmidinet sees the one on the other pc.

And no traffic is indicated on the monitor.

rncbc's picture

on your case:

vkeybd@pc1 -> qmidinet@pc1 -> (LAN) -> qmidinet@pc2 -> gmidimonitor@pc2

all you have to do is to make the proper connections on either side to/from qmidinet; the qmidinet@pc1-LAN-qmidinet@pc2 is automagic :)

hth.
cheers

Don't see any way to connect GMIDImonitor(alsa) to qmidinet.
Don't see any way to connect Virtual Keyboard to qmidinet

(For reference running UbuntuStudio 16.04 on both pc's)

rncbc's picture

as suggested earlier, you can try yours truly qjackctl (Connections > ALSA tab), if you can't live without a GUI; or aconnect for the mean and lean command line.
cheers

Duh...sorry I missed that. :(
That of course works just fine. :)

Can I assume that if I set the IP and udp port on any sender on the net (i.e. a midi sender running on a Windoz PC) that qmidinet running on a linux pc would see inbound midi from the Windoz pc?

rncbc's picture

Can I assume that if I set the IP and udp port on any sender on the net
you don't need to change any ip's in qmidinet options whatsoever.

the default udp/ip address and port are in fact set like so to match the ones of ipmidi on windows and macosx and last time it has been known to work with qmidinet; you can also try running qmidinet thereabout, provided you build it for that dang platforms and, again of course you happen to run jack happily there (i won't ever do that for you, so please sorry--i do only linux:))
byee

I try to only do linux...but, sometimes it's unavoidable.

I certainly would NOT! ask someone to submit to such torture. ;)

Thank you for the help!!

My Idea: Have every musician in a studio his score in Musescore. These scores should be synchronized of course.

My Setup:
2 machines with Ubuntu 24.04 (Xubuntu with ubuntu-studio add-on)
Jack
QmidiNet
Musescore 3 (I read some comments that it doesn't work in Musescore 4 even on a single machine)
on the machines I added dedicated NICs (196.0.0.21/8 and 196.0.0.22/8)
Between the machines is only a Netgear unmanaged switch and they communicate
Musescore is configured to use only Jack MIDI with all options checked (I tried both - Timebase Master for both or only for one of them)
In the QmidiNet Options I canged only the interface and set it to Jack only

In QJackCtl I connected the QmidiNet in with the Musecore out and vice versa
Starting and stopping the transport in Musescore or QJackCtl works as usable on the single machines but this is not distributed to the other machine.

Is my idea even doable with QmidiNet?

Thanks in advance
Frank

rncbc's picture

hi, JACK transport/timebase state and information is NOT MIDI ! so that it won't get transmitted through the network via qmidinet whatsoever...

you'll have to set your sequencers (musescore?) to transmit/send and receive/recognize MIDI SSP (song position pointer) and possibly MIDI Clock real-time system messages--the later is to sync their tempo or BPM--otherwise you're simply out of luck.

hth. cheers

Thanks for your comment

You are right - I mixed MIDI Clock and time base information. ... but I found (and resolved) another obstacle.

On most distributions spoofing prevention is enabled. The sysctl configuration for net.ipv4.conf.all.rp_filter is enabled in the one I am using.

One has to add a route to the source address to the interface or to disable spoofing prevention.
I did the latter - I have a totally disconnected network.

I figured it out finally.
The problem was NOT rp_filter. QmidiNet is even setting the proper multicast group via SNMP, buuuuut ...
This means it can receive multicast data but there is no one who can actually send it :D

I did a:
ip route add 224.0.0.0/4 table main scope link dev MIDI_NIC

on all sending machines and it works like a charm :)

My intention is now to make a small MIDI network monitor in a tcpdump | od | awk chain
once done I'll upload it here

Once more thanks for your input

Add new comment