fbpx
Skip to main content

MIDI Forum

Why are all Status ...
 
Notifications
Clear all

Why are all Status bytes > 0x80

4 Posts
3 Users
0 Reactions
19.1 K Views
Eric Kampman
Posts: 2
New Member
Topic starter
 

And is that likely to change?

And no, i'm not going to admit why I'm asking (you'd just tell me not to)

Thanks
Eric

 
Posted : 03/04/2016 8:50 am
Jan Kučera
Posts: 17
Eminent Member
 

Don't. 🙂

The first byte of MIDI message is always a status byte, and it is the only one that has the highest bit set (i.e. is >=0x80). That way you can always detect when a MIDI message begins in a stream of bytes. When you don't support given message (maybe because it hasn't been specified at the time of your implementation, so you don't even know how long such message is), you can simply skip all the following bytes that are =0xF8) can be interleaved anywhere (e.g. in the middle of 'note on' data), so you need to be able to detect that. Last but not least - running status, i.e. if the status byte was the same for multiple consecutive messages, you can leave it out.

So if the question is, can a hypothetical new status byte be lower than 0x80, than the answer is no unless breaking every device and software out there is acceptable.
If the question is what to do when we run out of status bytes, you could use one of the existing status bytes and give special meaning to the bytes that follow. Oh wait a minute, that's what universal SysEx messages do.
If you want to transfer arbitrary data, then use SysEx for it, but it's your job again to ensure none of the payload data is >=0x80.

Hope this helps, but as you can imagine stating your intents might not only amuse others but also - more likely - allow them to come up with constructive feedback, solution, or examples when it wouldn't work. You can always do whatever you want regardless what others tell you, you know...

 
Posted : 03/04/2016 10:12 am
Eric Kampman
Posts: 2
New Member
Topic starter
 

Thanks for the thorough reply.

My software needs to send (timing) messages to itself, and it's convenient to use MIDI msg format, since that's what my processing chains are expecting. By your answer, it looks like that should be an ok thing to do as long as these messages never end up on the wire.

Eric

 
Posted : 03/04/2016 3:39 pm
Mike
 Mike
Posts: 3
New Member
 

MIDI has defined timing messages.

For musical tempo based timing: MIDI has messages for Start,Continue, Stop, Song Position Pointer, and Timing Clock (Sent 24 times per quarter note).

For time based on hours, minutes, seconds, frames: MIDI has MIDI Time Code. This is based on SMPTE timecode, with Quarter Frame resolution.

 
Posted : 09/04/2016 6:54 pm
Share: