Frage

In a midi file, if I want to change, say, panning I write

<delta_time> <176(ch1 control change)> <10(pan control)> <value>

This sets panning value to a number between 0 and 127 (msb). For more fine tuning I can also use control message 42 which sets a lsb for the panning. My question is, to set a precise tuning, do I have to repeat the whole message such as:

<delta_time> <176(ch1 control change)> <10(pan control msb)> <value>
<delta_time(0)> <176(ch1 control change)> <42(pan control lsb)> <value>

or can I send

<delta_time> <176(ch1 control change)> <10(pan control)> <value(msb)> <value(lsb)>

Also, what happens if I just send lsb? will it assume msb as 0?

Thanks

War es hilfreich?

Lösung

Each control-change event is an independent event, so it needs its own delta time, its own status byte, and its own parameter byte(s). (The status byte can be omitted if it has the same value as the previous one, but this depends only on the status byte's value, and not on whether the events are actually related.)

What happens if you send the MSB message without the LSB message is not clearly specified, and even if it were, you could not be sure that devices would implement it correctly.

To be safe, to change a control with a 14-bit value, send both the MSB and LSB messages, in that order.

Andere Tipps

I'm just researching this myself. The answer above is not correct, it seems to me. If you reference the official MIDI spec... (normally you have to pay for the spec but here's a free reprint:) http://oktopus.hu/uploaded/Tudastar/MIDI%201.0%20Detailed%20Specification.pdf

On page 12, this MSB/LSB scheme is discussed. It says that sending the LSB values is OPTIONAL. I think it's safe to assume that the LSB will be zero if not specified. Furthermore, it clearly states that re-sending the MSB when only the LSB changes is also optional. The only thing that's required is that if you are using LSBs and you change the MSB, you must update the LSB as well.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top