Skip to main content

AudioBlockMonoViewMut

Struct AudioBlockMonoViewMut 

Source
pub struct AudioBlockMonoViewMut<'a, S: Sample> { /* private fields */ }
Expand description

A mutable view of mono (single-channel) audio data.

This provides a lightweight, non-owning mutable reference to a slice of mono audio samples.

  • Layout: [sample0, sample1, sample2, ...]
  • Interpretation: A simple sequence of samples representing a single audio channel.
  • Usage: Ideal for mono audio processing, side-chain signals, or any single-channel audio data.

§Example

use audio_blocks::{mono::AudioBlockMonoViewMut, AudioBlock};

let mut data = vec![0.0, 1.0, 2.0, 3.0, 4.0];
let mut block = AudioBlockMonoViewMut::from_slice(&mut data);

*block.sample_mut(0) = 10.0;
assert_eq!(block.sample(0), 10.0);

Implementations§

Source§

impl<'a, S: Sample> AudioBlockMonoViewMut<'a, S>

Source

pub fn from_slice(data: &'a mut [S]) -> Self

Creates a new mono audio block view from a mutable slice of audio samples.

§Parameters
  • data - The mutable slice containing mono audio samples
§Example
use audio_blocks::{mono::AudioBlockMonoViewMut, AudioBlock};

let mut samples = [1.0, 2.0, 3.0, 4.0, 5.0];
let mut block = AudioBlockMonoViewMut::from_slice(&mut samples);
assert_eq!(block.num_frames(), 5);
Source

pub fn from_slice_limited( data: &'a mut [S], num_frames_visible: usize, num_frames_allocated: usize, ) -> Self

Creates a new mono audio block view from a mutable slice with limited visibility.

This function allows creating a view that exposes only a subset of the allocated frames, which is useful for working with a logical section of a larger buffer.

§Parameters
  • data - The mutable slice containing mono audio samples
  • num_frames_visible - Number of audio frames to expose in the view
  • num_frames_allocated - Total number of frames allocated in the data buffer
§Panics
  • Panics if the length of data doesn’t equal num_frames_allocated
  • Panics if num_frames_visible exceeds num_frames_allocated
§Example
use audio_blocks::{mono::AudioBlockMonoViewMut, AudioBlock};

let mut samples = [1.0, 2.0, 3.0, 4.0, 5.0];
let mut block = AudioBlockMonoViewMut::from_slice_limited(&mut samples, 3, 5);
assert_eq!(block.num_frames(), 3);
assert_eq!(block.num_frames_allocated(), 5);
Source

pub unsafe fn from_ptr(ptr: *mut S, num_frames: usize) -> Self

Creates a new mono audio block view from a mutable pointer.

§Safety

The caller must ensure that:

  • ptr points to valid memory containing at least num_frames elements
  • The memory referenced by ptr must be valid for the lifetime of the returned view
  • No other references (mutable or immutable) exist to the same memory
§Example
use audio_blocks::{mono::AudioBlockMonoViewMut, AudioBlock};

let mut samples = [1.0, 2.0, 3.0, 4.0, 5.0];
let mut block = unsafe { AudioBlockMonoViewMut::from_ptr(samples.as_mut_ptr(), 5) };
assert_eq!(block.num_frames(), 5);
Source

pub unsafe fn from_ptr_limited( ptr: *mut S, num_frames_visible: usize, num_frames_allocated: usize, ) -> Self

Creates a new mono audio block view from a mutable pointer with limited visibility.

§Safety

The caller must ensure that:

  • ptr points to valid memory containing at least num_frames_allocated elements
  • The memory referenced by ptr must be valid for the lifetime of the returned view
  • No other references (mutable or immutable) exist to the same memory
Source

pub fn sample(&self, frame: usize) -> S

Returns the sample at the specified frame index.

§Panics

Panics if frame index is out of bounds.

Source

pub fn sample_mut(&mut self, frame: usize) -> &mut S

Returns a mutable reference to the sample at the specified frame index.

§Panics

Panics if frame index is out of bounds.

Source

pub fn samples(&self) -> &[S]

Provides direct access to the underlying samples as a slice.

Returns only the visible samples (up to num_frames).

Source

pub fn samples_mut(&mut self) -> &mut [S]

Provides direct mutable access to the underlying samples as a slice.

Returns only the visible samples (up to num_frames).

Source

pub fn raw_data(&self) -> &[S]

Provides direct access to all allocated memory, including reserved capacity.

Source

pub fn raw_data_mut(&mut self) -> &mut [S]

Provides direct mutable access to all allocated memory, including reserved capacity.

Source

pub fn view(&self) -> AudioBlockMonoView<'_, S>

Source

pub fn view_mut(&mut self) -> AudioBlockMonoViewMut<'_, S>

Trait Implementations§

Source§

impl<S: Sample> AudioBlock<S> for AudioBlockMonoViewMut<'_, S>

Source§

type PlanarView = [S; 0]

Source§

fn num_channels(&self) -> u16

Returns the number of active audio channels.
Source§

fn num_frames(&self) -> usize

Returns the number of audio frames (samples per channel).
Source§

fn num_channels_allocated(&self) -> u16

Returns the total number of channels allocated in memory. Read more
Source§

fn num_frames_allocated(&self) -> usize

Returns the total number of frames allocated in memory. Read more
Source§

fn layout(&self) -> BlockLayout

Returns the memory layout of this audio block (interleaved, sequential, or planar).
Source§

fn sample(&self, channel: u16, frame: usize) -> S

Returns the sample value at the specified channel and frame position. Read more
Source§

fn channel_iter(&self, channel: u16) -> impl Iterator<Item = &S>

Returns an iterator over all samples in the specified channel. Read more
Source§

fn channels_iter( &self, ) -> impl Iterator<Item = impl Iterator<Item = &S> + '_> + '_

Returns an iterator that yields an iterator for each channel.
Source§

fn frame_iter(&self, frame: usize) -> impl Iterator<Item = &S>

Returns an iterator over all samples in the specified frame (across all channels). Read more
Source§

fn frames_iter( &self, ) -> impl Iterator<Item = impl Iterator<Item = &S> + '_> + '_

Returns an iterator that yields an iterator for each frame.
Source§

fn as_view(&self) -> impl AudioBlock<S>

Creates a non-owning view of this audio block. Read more
Source§

fn as_interleaved_view(&self) -> Option<AudioBlockInterleavedView<'_, S>>

Attempts to downcast this generic audio block to a concrete interleaved view. This enables access to frame slices and the underlying raw data. Read more
Source§

fn as_planar_view( &self, ) -> Option<AudioBlockPlanarView<'_, S, Self::PlanarView>>

Attempts to downcast this generic audio block to a concrete planar view. This enables access to frame slices and the underlying raw data. Read more
Source§

fn as_sequential_view(&self) -> Option<AudioBlockSequentialView<'_, S>>

Attempts to downcast this generic audio block to a concrete sequential view. This enables access to frame slices and the underlying raw data. Read more
Source§

impl<S: Sample> AudioBlockMut<S> for AudioBlockMonoViewMut<'_, S>

Source§

type PlanarViewMut = [S; 0]

Source§

fn set_num_channels_visible(&mut self, num_channels: u16)

Sets the visible size of the audio block to the specified number of channels. Read more
Source§

fn set_num_frames_visible(&mut self, num_frames: usize)

Sets the visible size of the audio block to the specified number of frames. Read more
Source§

fn sample_mut(&mut self, channel: u16, frame: usize) -> &mut S

Returns a mutable reference to the sample at the specified channel and frame position. Read more
Source§

fn channel_iter_mut(&mut self, channel: u16) -> impl Iterator<Item = &mut S>

Returns a mutable iterator over all samples in the specified channel. Read more
Source§

fn channels_iter_mut( &mut self, ) -> impl Iterator<Item = impl Iterator<Item = &mut S> + '_> + '_

Returns a mutable iterator that yields mutable iterators for each channel.
Source§

fn frame_iter_mut(&mut self, frame: usize) -> impl Iterator<Item = &mut S>

Returns a mutable iterator over all samples in the specified frame (across all channels). Read more
Source§

fn frames_iter_mut( &mut self, ) -> impl Iterator<Item = impl Iterator<Item = &mut S> + '_> + '_

Returns a mutable iterator that yields mutable iterators for each frame.
Source§

fn as_view_mut(&mut self) -> impl AudioBlockMut<S>

Creates a non-owning mutable view of this audio block. Read more
Source§

fn set_visible(&mut self, num_channels: u16, num_frames: usize)

Sets the visible size of the audio block to the specified number of channels and frames. Read more
Source§

fn as_interleaved_view_mut( &mut self, ) -> Option<AudioBlockInterleavedViewMut<'_, S>>

Attempts to downcast this generic audio block to a concrete interleaved view. This enables access to frame slices and the underlying raw data. Read more
Source§

fn as_planar_view_mut( &mut self, ) -> Option<AudioBlockPlanarViewMut<'_, S, Self::PlanarViewMut>>

Attempts to downcast this generic audio block to a concrete planar view. This enables access to frame slices and the underlying raw data. Read more
Source§

fn as_sequential_view_mut( &mut self, ) -> Option<AudioBlockSequentialViewMut<'_, S>>

Attempts to downcast this generic audio block to a concrete sequential view. This enables access to frame slices and the underlying raw data. Read more
Source§

impl<S: Sample + Debug> Debug for AudioBlockMonoViewMut<'_, S>

Source§

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

Formats the value using the given formatter. Read more

Auto Trait Implementations§

§

impl<'a, S> Freeze for AudioBlockMonoViewMut<'a, S>

§

impl<'a, S> RefUnwindSafe for AudioBlockMonoViewMut<'a, S>
where S: RefUnwindSafe,

§

impl<'a, S> Send for AudioBlockMonoViewMut<'a, S>
where S: Send,

§

impl<'a, S> Sync for AudioBlockMonoViewMut<'a, S>
where S: Sync,

§

impl<'a, S> Unpin for AudioBlockMonoViewMut<'a, S>

§

impl<'a, S> !UnwindSafe for AudioBlockMonoViewMut<'a, S>

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<S, B> AudioBlockOps<S> for B
where S: Sample, B: AudioBlock<S>,

Source§

fn mix_to_mono(&self, dest: &mut AudioBlockMonoViewMut<'_, S>)
where S: AddAssign + Div<Output = S> + From<u16>,

Mix all channels to mono by averaging them. Panics if source and destination don’t have the same number of frames.
Source§

impl<S, B> AudioBlockOpsMut<S> for B
where S: Sample, B: AudioBlockMut<S>,

Source§

fn copy_from_block(&mut self, block: &impl AudioBlock<S>)

Copy samples from source block, clamping to the smaller dimensions. Resizes destination to min(src, dst) channels and frames. Never panics - safely handles mismatched block sizes.
Source§

fn copy_from_block_exact(&mut self, block: &impl AudioBlock<S>)

Copy samples from source block, requiring exact size match. Panics if source and destination don’t have identical channels and frames.
Source§

fn copy_mono_to_all_channels(&mut self, mono: &AudioBlockMonoView<'_, S>)

Copy a mono block to all channels of this block. Panics if blocks don’t have the same number of frames.
Source§

fn for_each(&mut self, f: impl FnMut(&mut S))

Gives access to all samples in the block.
Source§

fn for_each_including_non_visible(&mut self, f: impl FnMut(&mut S))

Gives access to all samples in the block. This is faster than for_each by not checking bounds of the block. It can be used if your algorithm does not change if wrong samples are accessed. For example this is the case for gain, clear, etc.
Source§

fn enumerate(&mut self, f: impl FnMut(u16, usize, &mut S))

Gives access to all samples in the block while supplying the information about which channel and frame number the sample is stored in.
Source§

fn enumerate_including_non_visible(&mut self, f: impl FnMut(u16, usize, &mut S))

Gives access to all samples in the block while supplying the information about which channel and frame number the sample is stored in. Read more
Source§

fn fill_with(&mut self, sample: S)

Sets all samples in the block to the specified value
Source§

fn clear(&mut self)
where S: Default,

Sets all samples in the block to the default value (zero for numeric types)
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> 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, 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.