Struct VoiceState

Source
pub struct VoiceState {
    pub active_note: Option<u8>,
    pub velocity: f32,
    pub gate: bool,
    pub frequency: f32,
    /* private fields */
}
Expand description

Monophonic voice state for MIDI-controlled synthesis.

Tracks the currently active note, velocity, gate state, and frequency. Supports legato playing with last-note priority: when multiple notes are held, releasing a note will return to the previous held note without retriggering the envelope.

Fields§

§active_note: Option<u8>

The currently active MIDI note number, if any.

§velocity: f32

Velocity of the active note (0.0 to 1.0).

§gate: bool

Gate state: true while a note is held.

§frequency: f32

Frequency in Hz for the current note.

Implementations§

Source§

impl VoiceState

Source

pub fn new() -> VoiceState

Create a new voice state.

Source

pub fn note_on(&mut self, note: u8, velocity: u8)

Process a note-on event.

Updates the active note, velocity, gate state, and frequency. The note is also pushed onto the note stack for legato handling. If the note stack is full (16 notes), the note is silently dropped from the stack but still becomes the active note.

Source

pub fn note_off(&mut self, note: u8) -> bool

Process a note-off event.

Returns true if the voice should enter release stage (no more notes held), or false if switching to a previous legato note.

Source

pub fn reset(&mut self)

Reset the voice state.

Clears all state and the note stack.

Source

pub fn is_active(&self) -> bool

Returns true if a note is currently active.

Source

pub fn held_note_count(&self) -> usize

Returns the number of notes currently held.

Trait Implementations§

Source§

impl Clone for VoiceState

Source§

fn clone(&self) -> VoiceState

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 VoiceState

Source§

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

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

impl Default for VoiceState

Source§

fn default() -> VoiceState

Returns the “default value” for a type. Read more

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.