pub enum StructuredShortMessage {
Show 23 variants
NoteOff {
channel: Channel,
key_number: KeyNumber,
velocity: U7,
},
NoteOn {
channel: Channel,
key_number: KeyNumber,
velocity: U7,
},
PolyphonicKeyPressure {
channel: Channel,
key_number: KeyNumber,
pressure_amount: U7,
},
ControlChange {
channel: Channel,
controller_number: ControllerNumber,
control_value: U7,
},
ProgramChange {
channel: Channel,
program_number: U7,
},
ChannelPressure {
channel: Channel,
pressure_amount: U7,
},
PitchBendChange {
channel: Channel,
pitch_bend_value: U14,
},
SystemExclusiveStart,
TimeCodeQuarterFrame(TimeCodeQuarterFrame),
SongPositionPointer {
position: U14,
},
SongSelect {
song_number: U7,
},
TuneRequest,
SystemExclusiveEnd,
TimingClock,
Start,
Continue,
Stop,
ActiveSensing,
SystemReset,
SystemCommonUndefined1,
SystemCommonUndefined2,
SystemRealTimeUndefined1,
SystemRealTimeUndefined2,
}
Expand description
A short message implemented as an enum where each variant contains exactly the data which is relevant for the particular message type.
This enum is primarily intended for read-only usage via pattern matching. For that reason each variant is a struct-like enum, which is ideal for pattern matching while it is less ideal for reuse (the data contained in the variant can’t be passed around in one piece).
The enum’s size in memory is currently 4 bytes.
§Example
use helgoboss_midi::{
controller_numbers, Channel, RawShortMessage, ShortMessage, ShortMessageFactory,
StructuredShortMessage, U7,
};
let msg = RawShortMessage::control_change(
Channel::new(5),
controller_numbers::DAMPER_PEDAL_ON_OFF,
U7::new(100),
);
let structured_msg = msg.to_structured();
match structured_msg {
StructuredShortMessage::ControlChange {
channel,
controller_number,
control_value,
} => {
assert_eq!(channel.get(), 5);
assert_eq!(controller_number.get(), 64);
assert_eq!(control_value.get(), 100);
}
_ => panic!("wrong type"),
};
assert_eq!(structured_msg.channel(), Some(Channel::new(5)));
assert_eq!(core::mem::size_of_val(&structured_msg), 4);
Variants§
NoteOff
NoteOn
PolyphonicKeyPressure
ControlChange
ProgramChange
ChannelPressure
PitchBendChange
SystemExclusiveStart
TimeCodeQuarterFrame(TimeCodeQuarterFrame)
SongPositionPointer
SongSelect
TuneRequest
SystemExclusiveEnd
TimingClock
Start
Continue
Stop
ActiveSensing
SystemReset
SystemCommonUndefined1
SystemCommonUndefined2
SystemRealTimeUndefined1
SystemRealTimeUndefined2
Trait Implementations§
Source§impl Clone for StructuredShortMessage
impl Clone for StructuredShortMessage
Source§fn clone(&self) -> StructuredShortMessage
fn clone(&self) -> StructuredShortMessage
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source
. Read moreSource§impl Debug for StructuredShortMessage
impl Debug for StructuredShortMessage
Source§impl Hash for StructuredShortMessage
impl Hash for StructuredShortMessage
Source§impl Ord for StructuredShortMessage
impl Ord for StructuredShortMessage
Source§fn cmp(&self, other: &StructuredShortMessage) -> Ordering
fn cmp(&self, other: &StructuredShortMessage) -> Ordering
1.21.0 · Source§fn max(self, other: Self) -> Selfwhere
Self: Sized,
fn max(self, other: Self) -> Selfwhere
Self: Sized,
Compares and returns the maximum of two values. Read more
Source§impl PartialEq for StructuredShortMessage
impl PartialEq for StructuredShortMessage
Source§impl PartialOrd for StructuredShortMessage
impl PartialOrd for StructuredShortMessage
Source§impl ShortMessage for StructuredShortMessage
impl ShortMessage for StructuredShortMessage
Source§fn status_byte(&self) -> u8
fn status_byte(&self) -> u8
Returns the status byte.
Source§fn data_byte_1(&self) -> U7
fn data_byte_1(&self) -> U7
Returns the first data byte.
Source§fn data_byte_2(&self) -> U7
fn data_byte_2(&self) -> U7
Returns the second data byte.
Source§fn to_structured(&self) -> StructuredShortMessage
fn to_structured(&self) -> StructuredShortMessage
Converts this message to a
StructuredShortMessage
, which is ideal for matching.Source§fn to_bytes(&self) -> (u8, U7, U7)
fn to_bytes(&self) -> (u8, U7, U7)
Returns the status byte and the two data bytes as a tuple. Read more
Source§fn to_other<O: ShortMessageFactory>(&self) -> O
fn to_other<O: ShortMessageFactory>(&self) -> O
Converts this message to a short message of another type.
Source§fn type(&self) -> ShortMessageType
fn type(&self) -> ShortMessageType
Returns the type of this message.
Source§fn super_type(&self) -> MessageSuperType
fn super_type(&self) -> MessageSuperType
Returns the super type of this message.
Source§fn main_category(&self) -> MessageMainCategory
fn main_category(&self) -> MessageMainCategory
Returns the main category of this message.
Source§fn is_note_on(&self) -> bool
fn is_note_on(&self) -> bool
Returns whether this message is a note-on in a practical sense. That means, it also returns
false
if the message type is NoteOn
but the velocity is zero.Source§fn is_note_off(&self) -> bool
fn is_note_off(&self) -> bool
Returns whether this message is a note-off in a practical sense. That means, it also returns
true
if the message type is NoteOn
but the velocity is zero.Source§fn key_number(&self) -> Option<KeyNumber>
fn key_number(&self) -> Option<KeyNumber>
Returns the key number of this message if applicable.
Source§fn controller_number(&self) -> Option<ControllerNumber>
fn controller_number(&self) -> Option<ControllerNumber>
Returns the controller number of this message if applicable.
Source§fn control_value(&self) -> Option<U7>
fn control_value(&self) -> Option<U7>
Returns the control value of this message if applicable.
Source§fn program_number(&self) -> Option<U7>
fn program_number(&self) -> Option<U7>
Returns the program number of this message if applicable.
Source§fn pressure_amount(&self) -> Option<U7>
fn pressure_amount(&self) -> Option<U7>
Returns the pressure amount of this message if applicable.
Source§fn pitch_bend_value(&self) -> Option<U14>
fn pitch_bend_value(&self) -> Option<U14>
Returns the pitch bend value of this message if applicable.
Source§impl ShortMessageFactory for StructuredShortMessage
impl ShortMessageFactory for StructuredShortMessage
Source§unsafe fn from_bytes_unchecked(
(status_byte, data_byte_1, data_byte_2): (u8, U7, U7),
) -> Self
unsafe fn from_bytes_unchecked( (status_byte, data_byte_1, data_byte_2): (u8, U7, U7), ) -> Self
Creates a MIDI message from the given bytes without checking the status byte. The tuple
consists of the status byte, data byte 1 and data byte 2 in exactly this order. Read more
Source§fn from_bytes(bytes: (u8, U7, U7)) -> Result<Self, FromBytesError>
fn from_bytes(bytes: (u8, U7, U7)) -> Result<Self, FromBytesError>
Creates a MIDI message from the given bytes. The tuple consists of the status byte, data
byte 1 and data byte 2 in exactly this order. Read more
Source§fn from_other(msg: &impl ShortMessage) -> Self
fn from_other(msg: &impl ShortMessage) -> Self
Creates this message from a MIDI message of another type.
Source§fn channel_message(
type: ShortMessageType,
channel: Channel,
data_1: U7,
data_2: U7,
) -> Self
fn channel_message( type: ShortMessageType, channel: Channel, data_1: U7, data_2: U7, ) -> Self
Creates a Channel message. Read more
Source§fn system_common_message(type: ShortMessageType, data_1: U7, data_2: U7) -> Self
fn system_common_message(type: ShortMessageType, data_1: U7, data_2: U7) -> Self
Creates a System Common message. Read more
Source§fn system_real_time_message(type: ShortMessageType) -> Self
fn system_real_time_message(type: ShortMessageType) -> Self
Creates a System Real Time message. Read more
Source§fn note_on(channel: Channel, key_number: KeyNumber, velocity: U7) -> Self
fn note_on(channel: Channel, key_number: KeyNumber, velocity: U7) -> Self
Creates a Note On message.
Source§fn note_off(channel: Channel, key_number: KeyNumber, velocity: U7) -> Self
fn note_off(channel: Channel, key_number: KeyNumber, velocity: U7) -> Self
Creates a Note Off message.
Source§fn control_change(
channel: Channel,
controller_number: ControllerNumber,
control_value: U7,
) -> Self
fn control_change( channel: Channel, controller_number: ControllerNumber, control_value: U7, ) -> Self
Creates a Control Change message.
Source§fn program_change(channel: Channel, program_number: U7) -> Self
fn program_change(channel: Channel, program_number: U7) -> Self
Creates a Program Change message.
Source§fn polyphonic_key_pressure(
channel: Channel,
key_number: KeyNumber,
pressure_amount: U7,
) -> Self
fn polyphonic_key_pressure( channel: Channel, key_number: KeyNumber, pressure_amount: U7, ) -> Self
Creates a Polyphonic Key Pressure message.
Source§fn channel_pressure(channel: Channel, pressure_amount: U7) -> Self
fn channel_pressure(channel: Channel, pressure_amount: U7) -> Self
Creates a Channel Pressure message.
Source§fn pitch_bend_change(channel: Channel, pitch_bend_value: U14) -> Self
fn pitch_bend_change(channel: Channel, pitch_bend_value: U14) -> Self
Creates a Pitch Bend Change message.
Source§fn system_exclusive_start() -> Self
fn system_exclusive_start() -> Self
Creates the start of a System Exclusive message.
Source§fn time_code_quarter_frame(frame: TimeCodeQuarterFrame) -> Self
fn time_code_quarter_frame(frame: TimeCodeQuarterFrame) -> Self
Creates a MIDI Time Code Quarter Frame message.
Source§fn song_position_pointer(position: U14) -> Self
fn song_position_pointer(position: U14) -> Self
Creates a Song Position Pointer message.
Source§fn song_select(song_number: U7) -> Self
fn song_select(song_number: U7) -> Self
Creates a Song Select message.
Source§fn tune_request() -> Self
fn tune_request() -> Self
Creates a Tune Request message.
Source§fn system_exclusive_end() -> Self
fn system_exclusive_end() -> Self
Creates the end of a System Exclusive message.
Source§fn timing_clock() -> Self
fn timing_clock() -> Self
Creates a Timing Clock message.
Source§fn active_sensing() -> Self
fn active_sensing() -> Self
Creates an Active Sensing message.
Source§fn system_reset() -> Self
fn system_reset() -> Self
Creates a System Reset message.
impl Copy for StructuredShortMessage
impl Eq for StructuredShortMessage
impl StructuralPartialEq for StructuredShortMessage
Auto Trait Implementations§
impl Freeze for StructuredShortMessage
impl RefUnwindSafe for StructuredShortMessage
impl Send for StructuredShortMessage
impl Sync for StructuredShortMessage
impl Unpin for StructuredShortMessage
impl UnwindSafe for StructuredShortMessage
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more