midix 3.2.0

MIDI structures designed for humans
Documentation
use crate::prelude::*;

#[doc = r#"
The channel mode message, capable of reserved functions

# Overview
This looks a lot like [`VoiceEvent::ControlChange`].

Both have identical status bytes (`1011xxxx`),

However, some values in the data bytes are reserved
for specific purposes. Those values can be handled
using this message.

# Reserved Controller numbers
Local Control:

When Local Control is Off, all devices on a given channel
will respond only to data received over MIDI. Played
data, etc. will be ignored. Local Control On restores
the functions of the normal controllers.

c = 122, v = 0: Local Control Off

c = 122, v = 127: Local Control On
---

All Notes Off:

When an All Notes Off is received, all oscillators
will turn off.

c = 123, v = 0: All Notes Off

c = 124, v = 0: Omni Mode Off

c = 125, v = 0: Omni Mode On

c = 126, v = M: Mono Mode On (Poly Off) where M is
the number of channels (Omni Off) or 0 (Omni On)

c = 127, v = 0: Poly Mode On (Mono Off) (Note:
These four messages also cause All Notes Off)
"#]
#[allow(dead_code)]
#[derive(Debug)]
pub struct ChannelModeMessage {
    controller: Controller,
    value: DataByte,
}