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§
Source§impl 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§
Source§impl Clone for ParameterNumberMessageScanner
impl Clone for ParameterNumberMessageScanner
Source§fn clone(&self) -> ParameterNumberMessageScanner
fn clone(&self) -> ParameterNumberMessageScanner
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 Default for ParameterNumberMessageScanner
impl Default for ParameterNumberMessageScanner
Source§fn default() -> ParameterNumberMessageScanner
fn default() -> ParameterNumberMessageScanner
Returns the “default value” for a type. Read more
Source§impl PartialEq for ParameterNumberMessageScanner
impl PartialEq for ParameterNumberMessageScanner
Source§fn eq(&self, other: &ParameterNumberMessageScanner) -> bool
fn eq(&self, other: &ParameterNumberMessageScanner) -> bool
Tests for
self
and other
values to be equal, and is used by ==
.impl Copy for ParameterNumberMessageScanner
impl Eq for ParameterNumberMessageScanner
impl StructuralPartialEq for ParameterNumberMessageScanner
Auto Trait Implementations§
impl Freeze for ParameterNumberMessageScanner
impl RefUnwindSafe for ParameterNumberMessageScanner
impl Send for ParameterNumberMessageScanner
impl Sync for ParameterNumberMessageScanner
impl Unpin for ParameterNumberMessageScanner
impl UnwindSafe for ParameterNumberMessageScanner
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