On 07/12/2010 20:10, Kassen wrote:
One thing I'd be interested in is using this to sync Fluxa's "(seq )" to other musicians. For that kind of thing we might also need something like a timestamp of when the actual message was received and probably a "latency offset" that we could set on a per-system basis in .fluxus.scm

Interesting. All MIDI messages are time-stamped by RtMidi. The time stamp is not used by fluxus' MIDI listener, but it's possible. We have a few problems here:
- what's the meaning of this timestamp?
- is this meaning platform-dependent?
- how can we convert this time stamp to a value that can be compared to (time)?

I need to experiment...

    I've also found what I think is a bug in RtMidi :



Not sure how long ago you send this. In my experience Gary does reply to such issues but sometimes it takes a bit.
11 or 12 days...

I do find this a bit of a odd error to make by mistake. Couldn't it be that rtMidi was assuming all messages are three bytes? I'm asking because I know that ChucK also uses rtMidi and does that. Sending 1 byte messages is possible there (not receiving) but you have to use two padding bytes. That might, of course, be a ChucK issue, not a rtMidi one. I commented on that several times and proposed some possible solutions but didn't get a clear reply.

This may be a copy-paste error from another part of the code:

        else if ( status < 0xF3 ) {
          if ( status == 0xF1 && (data->ignoreFlags & 0x02) ) {
            // A MIDI time code message and we're ignoring it.
            size = 0;
            iByte += 3;
          }
          else size = 3;
        }

And not all messages are 3-byte-long:

        if ( status < 0xC0 ) size = 3;
        else if ( status < 0xE0 ) size = 2;
        else if ( status < 0xF0 ) size = 3;
        else if ( status == 0xF0 ) {

Mysterious.

At any rate; good job!


Thanks!

--
    G.

Reply via email to