RTP MIDI (AppleMIDI) daemon for Linux
OTHER License
librtpmidid allows to easy adding rtpmidi capabilities to your own free or commercial project.
The main element is the class rtpmidid::rtppeer, which allows to create peers, be it clients or servers.
The rtpserver and rtpclient are ready to use client and server as used on rtpmidid daemon, and do all the required IO, using the rtpmidid::poller_t.
In all classes it tries to expose al internal state as can be needed for extending funciontalities.
Also a rtpmidid::signal_t
is used all around as a subscription service to
events.
The poller can be reimplemented as needed in other projects, but it may require recompilation from source code.
The flow of a basic rtppeer can be seen on the test_rtppeer.cpp
file.
It mainly needs to be initialized and connect both the command and control
ends, and then can receive the data buffers, and will call the send_event
when
needs to send some events, normally due to a send_midi
call (but can be
send_ck0
)
These are the network IO handlers. It receives the data as needed to create the
client or server (ip and port) and then it handles all using the
rtpmidid::poller_t
.
As client you must follow some extra dance after connecting, as seen at
rtpclient::connected
:
Failure to do this as a client may result in disconnect from Mac OS and Tobias Erichsen Rtpmidi for Windows.
At first we had a custom implementation. Bad idea. Better just use avahi.
Also if the computer has several network interfaces it may return several IPS to connect to. Try them all. The order may be better first ehternet than Wifi, but just because is listed does not mean it will work.