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
Fields
position: U14
SongSelect
Fields
song_number: U7
TuneRequest
SystemExclusiveEnd
TimingClock
Start
Continue
Stop
ActiveSensing
SystemReset
SystemCommonUndefined1
SystemCommonUndefined2
SystemRealTimeUndefined1
SystemRealTimeUndefined2
Trait Implementations
sourceimpl Clone for StructuredShortMessage
impl Clone for StructuredShortMessage
sourcefn clone(&self) -> StructuredShortMessage
fn clone(&self) -> StructuredShortMessage
Returns a copy of the value. Read more
1.0.0 · sourcefn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from source
. Read more
sourceimpl Debug for StructuredShortMessage
impl Debug for StructuredShortMessage
sourceimpl Hash for StructuredShortMessage
impl Hash for StructuredShortMessage
sourceimpl Ord for StructuredShortMessage
impl Ord for StructuredShortMessage
sourceimpl PartialEq<StructuredShortMessage> for StructuredShortMessage
impl PartialEq<StructuredShortMessage> for StructuredShortMessage
sourcefn eq(&self, other: &StructuredShortMessage) -> bool
fn eq(&self, other: &StructuredShortMessage) -> bool
This method tests for self
and other
values to be equal, and is used
by ==
. Read more
sourcefn ne(&self, other: &StructuredShortMessage) -> bool
fn ne(&self, other: &StructuredShortMessage) -> bool
This method tests for !=
.
sourceimpl PartialOrd<StructuredShortMessage> for StructuredShortMessage
impl PartialOrd<StructuredShortMessage> for StructuredShortMessage
sourcefn partial_cmp(&self, other: &StructuredShortMessage) -> Option<Ordering>
fn partial_cmp(&self, other: &StructuredShortMessage) -> Option<Ordering>
This method returns an ordering between self
and other
values if one exists. Read more
1.0.0 · sourcefn lt(&self, other: &Rhs) -> bool
fn lt(&self, other: &Rhs) -> bool
This method tests less than (for self
and other
) and is used by the <
operator. Read more
1.0.0 · sourcefn le(&self, other: &Rhs) -> bool
fn le(&self, other: &Rhs) -> bool
This method tests less than or equal to (for self
and other
) and is used by the <=
operator. Read more
sourceimpl ShortMessage for StructuredShortMessage
impl ShortMessage for StructuredShortMessage
sourcefn status_byte(&self) -> u8
fn status_byte(&self) -> u8
Returns the status byte.
sourcefn data_byte_1(&self) -> U7
fn data_byte_1(&self) -> U7
Returns the first data byte.
sourcefn data_byte_2(&self) -> U7
fn data_byte_2(&self) -> U7
Returns the second data byte.
sourcefn to_structured(&self) -> StructuredShortMessage
fn to_structured(&self) -> StructuredShortMessage
Converts this message to a StructuredShortMessage
, which is ideal for matching.
sourcefn 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
sourcefn to_other<O: ShortMessageFactory>(&self) -> O
fn to_other<O: ShortMessageFactory>(&self) -> O
Converts this message to a short message of another type.
sourcefn type(&self) -> ShortMessageType
fn type(&self) -> ShortMessageType
Returns the type of this message.
sourcefn super_type(&self) -> MessageSuperType
fn super_type(&self) -> MessageSuperType
Returns the super type of this message.
sourcefn main_category(&self) -> MessageMainCategory
fn main_category(&self) -> MessageMainCategory
Returns the main category of this message.
sourcefn is_note_on(&self) -> bool
fn is_note_on(&self) -> bool
sourcefn is_note_off(&self) -> bool
fn is_note_off(&self) -> bool
sourcefn key_number(&self) -> Option<KeyNumber>
fn key_number(&self) -> Option<KeyNumber>
Returns the key number of this message if applicable.
sourcefn controller_number(&self) -> Option<ControllerNumber>
fn controller_number(&self) -> Option<ControllerNumber>
Returns the controller number of this message if applicable.
sourcefn control_value(&self) -> Option<U7>
fn control_value(&self) -> Option<U7>
Returns the control value of this message if applicable.
sourcefn program_number(&self) -> Option<U7>
fn program_number(&self) -> Option<U7>
Returns the program number of this message if applicable.
sourcefn pressure_amount(&self) -> Option<U7>
fn pressure_amount(&self) -> Option<U7>
Returns the pressure amount of this message if applicable.
sourcefn pitch_bend_value(&self) -> Option<U14>
fn pitch_bend_value(&self) -> Option<U14>
Returns the pitch bend value of this message if applicable.
sourceimpl ShortMessageFactory for StructuredShortMessage
impl ShortMessageFactory for StructuredShortMessage
sourceunsafe 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
sourcefn 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
sourcefn from_other(msg: &impl ShortMessage) -> Self
fn from_other(msg: &impl ShortMessage) -> Self
Creates this message from a MIDI message of another type.
sourcefn 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
sourcefn 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
sourcefn system_real_time_message(type: ShortMessageType) -> Self
fn system_real_time_message(type: ShortMessageType) -> Self
Creates a System Real Time message. Read more
sourcefn 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.
sourcefn 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.
sourcefn 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.
sourcefn program_change(channel: Channel, program_number: U7) -> Self
fn program_change(channel: Channel, program_number: U7) -> Self
Creates a Program Change message.
sourcefn 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.
sourcefn channel_pressure(channel: Channel, pressure_amount: U7) -> Self
fn channel_pressure(channel: Channel, pressure_amount: U7) -> Self
Creates a Channel Pressure message.
sourcefn 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.
sourcefn system_exclusive_start() -> Self
fn system_exclusive_start() -> Self
Creates the start of a System Exclusive message.
sourcefn time_code_quarter_frame(frame: TimeCodeQuarterFrame) -> Self
fn time_code_quarter_frame(frame: TimeCodeQuarterFrame) -> Self
Creates a MIDI Time Code Quarter Frame message.
sourcefn song_position_pointer(position: U14) -> Self
fn song_position_pointer(position: U14) -> Self
Creates a Song Position Pointer message.
sourcefn song_select(song_number: U7) -> Self
fn song_select(song_number: U7) -> Self
Creates a Song Select message.
sourcefn tune_request() -> Self
fn tune_request() -> Self
Creates a Tune Request message.
sourcefn system_exclusive_end() -> Self
fn system_exclusive_end() -> Self
Creates the end of a System Exclusive message.
sourcefn timing_clock() -> Self
fn timing_clock() -> Self
Creates a Timing Clock message.
sourcefn active_sensing() -> Self
fn active_sensing() -> Self
Creates an Active Sensing message.
sourcefn system_reset() -> Self
fn system_reset() -> Self
Creates a System Reset message.
impl Copy for StructuredShortMessage
impl Eq for StructuredShortMessage
impl StructuralEq for StructuredShortMessage
impl StructuralPartialEq for StructuredShortMessage
Auto Trait Implementations
impl RefUnwindSafe for StructuredShortMessage
impl Send for StructuredShortMessage
impl Sync for StructuredShortMessage
impl Unpin for StructuredShortMessage
impl UnwindSafe for StructuredShortMessage
Blanket Implementations
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more