miditip - MIDI Through IP
it is still in very early development,
miditip allow to create sessions where all peers send their midi message to each other.
You can so play jam session or repetition via internet.
Efficiency: (based on udp)
- midi messages are delivered as quickly as possible without any abstraction over udp
Reliability: (based on tcp)
- The midi state of peers and the authority are the same. (with a synchronisation time > 0)
- The midi state of the authority is computed from midi message ordered by their timestamp
- Peer disconnection doesn't result in endless note on.
- (but don't return to default settings as peer can change settings of all others)
SoundFont management: doesn't ensure that all peers have the same soundfont.
Midi Input: it will always need a midi input device
Midi Output: it will always need a midi output device
However midi output and soundfont management may be provided by another software in the future that will integrate miditip in its core.
there is no binary available for now so here are the instruction to compile it.
to use it you'll need a midi input and output devices. Some are suggested in the use section
miditip depend on:
the portmidi library (for the client only)
On Ubuntu / Debian:
apt-get install libportmidi-dev
On OSX (Homebrew):
brew install portmidi
On OSX, if you get a linker error
ld: library not found for -lportmidi, either,
make sure you have the Xcode Command Line Tools installed, not just Xcode, or
make sure you have the PortMidi library in your
$LIBRARY_PATH, e.g. for Homebrew:
lzma library On Ubuntu / Debian:
apt-get install liblzma-dev
On other system I don't know... for any help open an issue.
it must work on the stable rust.
it has been tested on rust1.7
instructions are for Ubuntu / Debian, but you may be able to adapt on other distribution.
install rust stable compiler available there
get the source code
git clone https://github.com/thiolliere/miditip.git
go to the directory
(or for the server
cargo build --release
execute with help
miditip-server -h is explicit enough
to use the client you need a midi input device and a midi output device
vkeybd is a minimalist midi input device that does the work if you just want to test miditip
timidity is a multiplatform software to play midi.
Some argument are needed for real time playing.
-B 1,1buffer fragments if the audio isn't good enouch you can use
-B x,xwith x>1
-ftoggles fast enveloppes
lauch the midi output device
timidity -f -B 1.1 -iA &
launch the midi input device
look at the midi devices available
launch miditip an the input device 6 the output device 2 and the server 126.96.36.199:8888
miditip 6 2 188.8.131.52:8888
you may also need to install
libasound2-dev for using ALSA instead of OSS