[][src]Struct helgoboss_midi::ControlChange14BitMessage

pub struct ControlChange14BitMessage { /* fields omitted */ }

A 14-bit MIDI Control Change message.

Unlike a ShortMessage of type ShortMessageType::ControlChange, this one supports 14-bit resolution, that means 16384 different values instead of only 128. MIDI systems emit those by sending 2 short Control Change messages in a row. The ControlChange14BitMessageScanner can be used to extract such messages from a stream of ShortMessages.

Example

use helgoboss_midi::{
    controller_numbers, Channel, ControlChange14BitMessage, RawShortMessage, U14,
};

let msg = ControlChange14BitMessage::new(
    Channel::new(5),
    controller_numbers::CHANNEL_VOLUME,
    U14::new(1057),
);
assert_eq!(msg.channel().get(), 5);
assert_eq!(msg.msb_controller_number().get(), 7);
assert_eq!(
    msg.lsb_controller_number(),
    controller_numbers::CHANNEL_VOLUME_LSB
);
use helgoboss_midi::test_util::control_change;
assert_eq!(msg.value().get(), 1057);
let short_messages: [RawShortMessage; 2] = msg.to_short_messages();
assert_eq!(
    short_messages,
    [control_change(5, 7, 8), control_change(5, 39, 33)]
);

Implementations

impl ControlChange14BitMessage[src]

pub fn new(
    channel: Channel,
    msb_controller_number: ControllerNumber,
    value: U14
) -> ControlChange14BitMessage
[src]

Creates a 14-bit Control Change message.

Panics

This function panics if msb_controller_number can't serve as controller number for transmitting the most significant byte of a 14-bit Control Change message.

pub fn channel(&self) -> Channel[src]

Returns the channel of this message.

pub fn msb_controller_number(&self) -> ControllerNumber[src]

Returns the controller number for transmitting the most significant byte of this message.

pub fn lsb_controller_number(&self) -> ControllerNumber[src]

Returns the controller number for transmitting the least significant byte of this message.

pub fn value(&self) -> U14[src]

Returns the 14-bit value of this message.

pub fn to_short_messages<T: ShortMessageFactory>(&self) -> [T; 2][src]

Translates this message into 2 short messages, which need to be sent in a row in order to encode this 14-bit Control Change message.

Trait Implementations

impl Clone for ControlChange14BitMessage[src]

impl Copy for ControlChange14BitMessage[src]

impl Debug for ControlChange14BitMessage[src]

impl Eq for ControlChange14BitMessage[src]

impl<T: ShortMessageFactory> From<ControlChange14BitMessage> for [T; 2][src]

impl Hash for ControlChange14BitMessage[src]

impl PartialEq<ControlChange14BitMessage> for ControlChange14BitMessage[src]

impl StructuralEq for ControlChange14BitMessage[src]

impl StructuralPartialEq for ControlChange14BitMessage[src]

Auto Trait Implementations

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

The resulting type after obtaining ownership.

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

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

The type returned in the event of a conversion error.