2

I wonder why Status byte must start with 1, and the other data bytes must start with 0. I mean, I read that this is the way the reciever recognize each byte. However, that doesn't make sense to me.

Why isn't it possible to use 256 values for each data bytes? What happens in the first 0-127 values of the Status byte?

4

If a MIDI device knew beforehand which bytes are status bytes and which are data bytes, it would be possible to use all 256 values for both kinds.

However, MIDI was designed to use as few bytes as possible, and this is done by mixing up status and data bytes in unpredictable ways. So the most significant bit is always needed to differentiate between them.

For example, with running status, channel mode message status bytes that are identical to the last one can be omitted:

three notes     with running status
90 3C 7F        90 3C 7F
90 40 7F           40 7F
90 43 7F           43 7F

Furthermore, system real-time messages can be inserted in the middle of other messages; for example, a timing clock:

90 3C 7F 40 F8 7F 43 7F
            ▲▲
  • Thanks. That sounds logical, but what about the start/stop (framing) bits, which delimits the 3-byte message? Isn't it enough to know how to parse the bytes? – whitenoisedb Nov 29 '14 at 15:40
  • 1
    Framing bits delimit all bytes, regardless of type. – CL. Nov 29 '14 at 15:43
  • You guys are making my head hurt - it's 20 years since I had to deal with this stuff - but +1 for both… & you owe me aspirin ;) – Tetsujin Nov 29 '14 at 20:47

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.