getting a general purpose computer to output MIDI
Clock (and/or MIDI
Time Code, just so nobody confuses the two of them) is a very hard
problem. There are 24 MIDI Clock messages per quarter note. This means
that for a piece in 4/4 at 120bpm, you need to output 1 MIDI byte
every 20ms. Not so bad - its a nice even multiplier of the system
interrupt frequency. However, just change the tempo or the time
signature, and all of a sudden you have situations where the MIDI
Clock byte needs to be output every 18ms or every 32ms or ever 9.7ms
or every 56.5ms.
Yes, our music involves many (subtle) tempo changes, accelerando's
etc. Accuracy would be very important.
until the high resolution clock timers patch is solid
enough to be
used by any system, there is no way to schedule MIDI output with this
kind of resolution, and if you can't schedule it, then the receiver of
your MIDI clock signal will see a lot of jitter and may refuse to lock
to it. Even if it locks, its not clear what it will do with the jitter.
So it will not work then. That is a pity!
signal in a
audio file, for example with ecasound. I know, this is
ugly! For playback i would have the program monitor the jack input port and
output a midi clock message when a sample value of 1 passes by.
JACK does block structured audio. This won't work. If the "1" is in
the model of a JACK process cycle, when does it actually get delivered
to the MIDI output port?
In my naieve view this would simply be done in the process cycle, but
you suggest it is not possible?
We'd love to provide this kind of functionality in
Ardour, BTW, so if
you're serious about doing the research and work needed to check on
the HRT patch etc etc etc, we'd love to see it done in a way that we
could use too.
I would like to contribute to the Ardour project. But i am neither
a skilled or an experienced programmer, so i doubt if i am capable to
do this. But if there is anything i can do i will do it. Is there any
particular documentation i should look at?
--
Gerrit