Subject: Re: [linux-audio-dev] News about sequencers (not my own though!)
From: Paul Barton-Davis (pbd_AT_Op.Net)
Date: la tammi 22 2000 - 10:49:09 EST
Somebody (not sure who) wrote:
>> Unfortunately (or fortunately, depending on your point of view),
>> this is just plain false. If you read the standard, you'll see that
>> CC's are designed to built up using several separate messages to
^^^^^^^^^^^^^^^^
2, to be precise.
>> send a single multibyte value. This is accomplished using the
>> concept of set-and-hold, which is pretty pervasive in MIDI.
Unfortunately, its a totally useless spec for multibyte values. Its
useless because they made it optional to send the LSB, and this
results in stepped values and/or inefficient code.
Consider a 14 bit controller, say #7 for the MSB and its counterpart
LSB, #39 (i think i got that right - don't have the book around right
now). Suppose that a MIDI receiver has just started up gets a message
for controller #7. It cannot know whether a #39 is coming or not. The
spec says that it should just assume the LSB is set-and-hold, which
means its zero for the time being. So, is the value the one sent as
the MSB (#7), or should we wait to see if LSB (#39) shows up ?
If we delay adopting the new value given by the MSB, we have to write
stupid code that waits for around 3-5 msecs max. Bad program, no
donut.
Sowe don't delay it, but use the MSB as sent. OK, so now suppose that
a millisecond or 3 later, #39 *does* show up with the LSB value. Now
we adjust the value again. For that period of time, we were using the
wrong value.
The same thing happens every time #7 is received again by a MIDI
receiver that cares enough about the spec to know that it may only be
the MSB of a 14 bit value.
The net result is that the value of the controller jumps around, or
ends up having to being interpolated in a way that implies significant
delays in adopting the new value.
It sucks.
Now, back to my task this morning: ordering a copy of the MIDI spec
from the MMA so that I can implement MMC in libmidi++ .... :)
--p
This archive was generated by hypermail 2b28 : pe maalis 10 2000 - 07:23:26 EST