Re: [linux-audio-dev] News about sequencers (not my own though!)

New Message Reply About this list Date view Thread view Subject view Author view Other groups

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


New Message Reply About this list Date view Thread view Subject view Author view Other groups

This archive was generated by hypermail 2b28 : pe maalis 10 2000 - 07:23:26 EST