pub struct ParameterNumberMessageScanner { /* private fields */ }
Expand description
Scanner for detecting (N)RPN messages in a stream of short messages without polling.
Supports the following message sequences (x
and y
represent the bytes that make up the
parameter number, MSB represents either a data entry MSB or an increment/decrement value):
[x, y, MSB]
: Interpreted as 7-bit data entry or increment/decrement message.[x, y, LSB, MSB]
: Interpreted as 14-bit data entry message.[x, y, MSB, MSB, ...]
: Interpreted as 7-bit data entry or increment/decrement messages.[x, y, LSB, MSB, LSB, MSB, ...]
: Interpreted as 14-bit data entry messages.
Example
use helgoboss_midi::test_util::{control_change, channel, u14};
use helgoboss_midi::{ParameterNumberMessage, ParameterNumberMessageScanner};
let mut scanner = ParameterNumberMessageScanner::new();
let result_1 = scanner.feed(&control_change(0, 101, 3));
let result_2 = scanner.feed(&control_change(0, 100, 36));
let result_3 = scanner.feed(&control_change(0, 38, 24));
let result_4 = scanner.feed(&control_change(0, 6, 117));
assert_eq!(result_1, None);
assert_eq!(result_2, None);
assert_eq!(result_3, None);
assert_eq!(
result_4,
Some(ParameterNumberMessage::registered_14_bit(
channel(0),
u14(420),
u14(15000)
))
);
Implementations
sourceimpl ParameterNumberMessageScanner
impl ParameterNumberMessageScanner
sourcepub fn new() -> ParameterNumberMessageScanner
pub fn new() -> ParameterNumberMessageScanner
Creates a new scanner.
sourcepub fn feed(
&mut self,
msg: &impl ShortMessage
) -> Option<ParameterNumberMessage>
pub fn feed(
&mut self,
msg: &impl ShortMessage
) -> Option<ParameterNumberMessage>
Feeds the scanner a single short message.
Returns the (N)RPN message if one has been detected.
Trait Implementations
sourceimpl Clone for ParameterNumberMessageScanner
impl Clone for ParameterNumberMessageScanner
sourcefn clone(&self) -> ParameterNumberMessageScanner
fn clone(&self) -> ParameterNumberMessageScanner
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 ParameterNumberMessageScanner
impl Debug for ParameterNumberMessageScanner
sourceimpl Default for ParameterNumberMessageScanner
impl Default for ParameterNumberMessageScanner
sourcefn default() -> ParameterNumberMessageScanner
fn default() -> ParameterNumberMessageScanner
Returns the “default value” for a type. Read more
sourceimpl PartialEq<ParameterNumberMessageScanner> for ParameterNumberMessageScanner
impl PartialEq<ParameterNumberMessageScanner> for ParameterNumberMessageScanner
sourcefn eq(&self, other: &ParameterNumberMessageScanner) -> bool
fn eq(&self, other: &ParameterNumberMessageScanner) -> bool
This method tests for self
and other
values to be equal, and is used
by ==
. Read more
sourcefn ne(&self, other: &ParameterNumberMessageScanner) -> bool
fn ne(&self, other: &ParameterNumberMessageScanner) -> bool
This method tests for !=
.
impl Copy for ParameterNumberMessageScanner
impl Eq for ParameterNumberMessageScanner
impl StructuralEq for ParameterNumberMessageScanner
impl StructuralPartialEq for ParameterNumberMessageScanner
Auto Trait Implementations
impl RefUnwindSafe for ParameterNumberMessageScanner
impl Send for ParameterNumberMessageScanner
impl Sync for ParameterNumberMessageScanner
impl Unpin for ParameterNumberMessageScanner
impl UnwindSafe for ParameterNumberMessageScanner
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