-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
For almost a year, I've been looking for a MIDI fan-out box: a simple and rock-solid
reliable daemon that will run in RT, and take in a stream of MIDI, and fan it out to 16
virtual output ports, one for each channel.
I tried midirgui and qmidiroute. They are nice, and flexible, but I don't want
flexible, I don't want a GUI, I want very lightweight daemon that will fan out my MIDI
controller's output onto 16 virtual ports.
I also tried to write this in a higher-level language: ChucK and SC won't run on my
64-bit system, and PD doesn't seem to have any facility to let me route streams out
different virtual ports. Python uses the RTMIDI library, which is pretty limited and
doesn't seem to let me open multiple virtual ports. Plus all of the above are more
heavyweight than I want.
So I'm going to write this in C. I've looked at some simple ALSA code, as well as
the code of midirgui and qmidiroute. The ALSA API is kind of weird-looking, but I think I
have everything I need in order to figure out how to get it to do what I want.
My question is this: what's the magic incantation to get the permissions from the
kernel to make the daemon run in RT mode? I suppose I could just "sudo chrt" on
it after I run it, but most apps seem to find a way to get RT priorities on their own,
where is that code?
Finally, looking forward to the future: I haven't yet experimented with the wonders of
jackd 0.107's -X flag, but, would it be possible/easier for me to write this using
JACK MIDI instead of ALSA? I'm on jackd 0.103 now. Would -X give me outputs on the
ALSA side for any ports I open on the JACK MIDI side? If it does, then I could use JACK
MIDI to wrap ALSA and do the RT part for me too, which might be attractive.
Thanks.
- -ken
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.6 (GNU/Linux)
iD8DBQFHDokTe8HF+6xeOIcRAuaHAJ90mvPojQ3kt07oJLE754PVlohBkgCggJk0
Yk0RjNTnSsdLyP6WXIQfnGY=
=US51
-----END PGP SIGNATURE-----