Enum StructuredShortMessage

Source
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

Fields

§channel: Channel
§key_number: KeyNumber
§velocity: U7
§

NoteOn

Fields

§channel: Channel
§key_number: KeyNumber
§velocity: U7
§

PolyphonicKeyPressure

Fields

§channel: Channel
§key_number: KeyNumber
§pressure_amount: U7
§

ControlChange

Fields

§channel: Channel
§controller_number: ControllerNumber
§control_value: U7
§

ProgramChange

Fields

§channel: Channel
§program_number: U7
§

ChannelPressure

Fields

§channel: Channel
§pressure_amount: U7
§

PitchBendChange

Fields

§channel: Channel
§pitch_bend_value: U14
§

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§

Source§

impl Clone for StructuredShortMessage

Source§

fn clone(&self) -> StructuredShortMessage

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for StructuredShortMessage

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Hash for StructuredShortMessage

Source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
Source§

impl Ord for StructuredShortMessage

Source§

fn cmp(&self, other: &StructuredShortMessage) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · Source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · Source§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · Source§

fn clamp(self, min: Self, max: Self) -> Self
where Self: Sized,

Restrict a value to a certain interval. Read more
Source§

impl PartialEq for StructuredShortMessage

Source§

fn eq(&self, other: &StructuredShortMessage) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl PartialOrd for StructuredShortMessage

Source§

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 · Source§

fn lt(&self, other: &Rhs) -> bool

Tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · Source§

fn le(&self, other: &Rhs) -> bool

Tests less than or equal to (for self and other) and is used by the <= operator. Read more
1.0.0 · Source§

fn gt(&self, other: &Rhs) -> bool

Tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · Source§

fn ge(&self, other: &Rhs) -> bool

Tests greater than or equal to (for self and other) and is used by the >= operator. Read more
Source§

impl ShortMessage for StructuredShortMessage

Source§

fn status_byte(&self) -> u8

Returns the status byte.
Source§

fn data_byte_1(&self) -> U7

Returns the first data byte.
Source§

fn data_byte_2(&self) -> U7

Returns the second data byte.
Source§

fn to_structured(&self) -> StructuredShortMessage

Converts this message to a StructuredShortMessage, which is ideal for matching.
Source§

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

Converts this message to a short message of another type.
Source§

fn type(&self) -> ShortMessageType

Returns the type of this message.
Source§

fn super_type(&self) -> MessageSuperType

Returns the super type of this message.
Source§

fn main_category(&self) -> MessageMainCategory

Returns the main category of this message.
Source§

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

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 is_note(&self) -> bool

Returns whether this message is a note-on or note-off.
Source§

fn channel(&self) -> Option<Channel>

Returns the channel of this message if applicable.
Source§

fn key_number(&self) -> Option<KeyNumber>

Returns the key number of this message if applicable.
Source§

fn velocity(&self) -> Option<U7>

Returns the velocity of this message if applicable.
Source§

fn controller_number(&self) -> Option<ControllerNumber>

Returns the controller number of this message if applicable.
Source§

fn control_value(&self) -> Option<U7>

Returns the control value of this message if applicable.
Source§

fn program_number(&self) -> Option<U7>

Returns the program number of this message if applicable.
Source§

fn pressure_amount(&self) -> Option<U7>

Returns the pressure amount of this message if applicable.
Source§

fn pitch_bend_value(&self) -> Option<U14>

Returns the pitch bend value of this message if applicable.
Source§

impl ShortMessageFactory for StructuredShortMessage

Source§

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>

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

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

Creates a Channel message. Read more
Source§

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

Creates a System Real Time message. Read more
Source§

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

Creates a Note Off message.
Source§

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

Creates a Program Change message.
Source§

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

Creates a Channel Pressure message.
Source§

fn pitch_bend_change(channel: Channel, pitch_bend_value: U14) -> Self

Creates a Pitch Bend Change message.
Source§

fn system_exclusive_start() -> Self

Creates the start of a System Exclusive message.
Source§

fn time_code_quarter_frame(frame: TimeCodeQuarterFrame) -> Self

Creates a MIDI Time Code Quarter Frame message.
Source§

fn song_position_pointer(position: U14) -> Self

Creates a Song Position Pointer message.
Source§

fn song_select(song_number: U7) -> Self

Creates a Song Select message.
Source§

fn tune_request() -> Self

Creates a Tune Request message.
Source§

fn system_exclusive_end() -> Self

Creates the end of a System Exclusive message.
Source§

fn timing_clock() -> Self

Creates a Timing Clock message.
Source§

fn start() -> Self

Creates a Start message.
Source§

fn continue() -> Self

Creates a Continue message.
Source§

fn stop() -> Self

Creates a Stop message.
Source§

fn active_sensing() -> Self

Creates an Active Sensing message.
Source§

fn system_reset() -> Self

Creates a System Reset message.
Source§

impl Copy for StructuredShortMessage

Source§

impl Eq for StructuredShortMessage

Source§

impl StructuralPartialEq for StructuredShortMessage

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.