[chuck-users] chuck and midi clock (again), ignoreTypes() method
Julien Canet
jools at free.fr
Mon Dec 17 13:20:12 EST 2007
Dear All,
I am learning chuck and I've made some scripts for the monome 40h
interface (if someone wants I can post them).
I really need to sync my script with another software, using MIDI.
I saw on the users mailing list (
https://lists.cs.princeton.edu/pipermail/chuck-users/2006-April/000503.html
) that midi sync wasn't possible. I didn't really understood why at
first, because I thought we just have to make a midi input handler
that waits for MIDI clock messages, just like the example in the
message :
0 => int device; // number of the device to open (see: chuck --probe)
MidiIn min; // the midi event
MidiMsg msg; // the message for retrieving data
if( !min.open( device ) ) me.exit(); // open the device
spork ~ handleMIDI();
fun void handleMIDI()
{
while (1) {
min => now; // wait on the event 'min'
while( min.recv(msg) ) // get the message(s)
{
if (msg.data1 == 248) { // MIDI Clock
// Do clocky stuff, count to 24, determine delta-now, whatever
}
}
}
}
So I wrote a little loop waiting for midi clock message, similar to
the script above.
I never received midi clock messages... (I am sure they are sent using
a MIDI monitor).
I read on chuck forum that MIDI clock messages were not parsed.
So I had a quick look into Chuck source code and try to found why. I
said quick look because I do not understand the whole code to 100%,
I've just tried to find more about these MIDI clock messages.
I saw that in the midiInputCallback, the midi time code and tick
messages (and some other midi messages) are ignored depending on some
RtMidiInData flags : the ignoreFlags, initialized to true (ignoreFlags
set to 7 in fact) in the constructor.
If these flags are true, the size of the message is set to 0 and it is ignored.
I saw that there is a method called RTMidiIn::ignoreTypes that can
changes these flags.
But my BIG question : how to access this ignoreTypes method in chuck language?
I recompiled chuck with ignoreFlags initialized to 0. And now I received them...
So what is the problem with the midi clock messages? Why disabling them?
Can the end-user re enable them without recompiling?
Thanks and congratulations for chuck, this is really wonderful,
Best regards,
Julien.
More information about the chuck-users
mailing list