pub struct PcmRenderer {
pub sample_rate: u32,
pub channels: u8,
}Expand description
A renderer that synthesizes tones into interleaved PCM f32 samples and
encodes them as WAV.
Fields§
§sample_rate: u32Output sample rate, in hertz.
channels: u8Output channel count (1 for mono, 2 for stereo).
Implementations§
Source§impl PcmRenderer
impl PcmRenderer
Sourcepub fn new(options: RendererOptions) -> Result<Self, SoundRenderError>
pub fn new(options: RendererOptions) -> Result<Self, SoundRenderError>
Builds a renderer from validated RendererOptions.
Sourcepub fn render_tone(&self, tone: &Tone) -> Vec<f32>
pub fn render_tone(&self, tone: &Tone) -> Vec<f32>
Renders a single tone to interleaved PCM samples, centered in the stereo field.
§Examples
use std::time::Duration;
use sim_lib_sound_core::{Frequency, Tone};
use sim_lib_sound_render::{PcmRenderer, RendererOptions};
let renderer = PcmRenderer::new(RendererOptions::new(8_000, 1).unwrap()).unwrap();
let tone = Tone::sine(Frequency::new(440.0).unwrap(), Duration::from_millis(10));
assert_eq!(renderer.render_tone(&tone).len(), 80);Sourcepub fn render_mix(&self, tones: &[ScheduledTone]) -> Vec<f32>
pub fn render_mix(&self, tones: &[ScheduledTone]) -> Vec<f32>
Renders and sums a set of scheduled tones into a single mixed PCM buffer, honoring each tone’s start time and pan.
Trait Implementations§
Source§impl Clone for PcmRenderer
impl Clone for PcmRenderer
Source§fn clone(&self) -> PcmRenderer
fn clone(&self) -> PcmRenderer
Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreimpl Copy for PcmRenderer
Source§impl Debug for PcmRenderer
impl Debug for PcmRenderer
impl Eq for PcmRenderer
Source§impl PartialEq for PcmRenderer
impl PartialEq for PcmRenderer
Source§fn eq(&self, other: &PcmRenderer) -> bool
fn eq(&self, other: &PcmRenderer) -> bool
Tests for
self and other values to be equal, and is used by ==.impl StructuralPartialEq for PcmRenderer
Auto Trait Implementations§
impl Freeze for PcmRenderer
impl RefUnwindSafe for PcmRenderer
impl Send for PcmRenderer
impl Sync for PcmRenderer
impl Unpin for PcmRenderer
impl UnsafeUnpin for PcmRenderer
impl UnwindSafe for PcmRenderer
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