From 9d24a19cd9a392d5a2067a3e233a5a26a1518c35 Mon Sep 17 00:00:00 2001 From: Astatin Date: Sat, 12 Jul 2025 02:45:38 +0200 Subject: Update audio registers without trigger + add stereo --- src/desktop/audio.rs | 24 +++++++++++------------- 1 file changed, 11 insertions(+), 13 deletions(-) (limited to 'src/desktop/audio.rs') diff --git a/src/desktop/audio.rs b/src/desktop/audio.rs index c32433b..db15a4f 100644 --- a/src/desktop/audio.rs +++ b/src/desktop/audio.rs @@ -1,7 +1,7 @@ use rodio::{OutputStream, Sink, Source}; use crate::audio::SAMPLE_RATE; -use crate::io::Audio; +use crate::io::{Wave, Audio}; use std::time::Duration; pub struct RodioAudio { @@ -9,29 +9,27 @@ pub struct RodioAudio { _sink: Sink, } -struct RodioWave(W); +struct RodioWave(W, usize); -impl Iterator for RodioWave -where - ::Item: rodio::Sample, +impl Iterator for RodioWave { - type Item = W::Item; + type Item = f32; fn next(&mut self) -> Option { - self.0.next() + self.1 += 1; + let left = self.1 % 2 == 0; + self.0.next(left) } } -impl Source for RodioWave -where - ::Item: rodio::Sample, +impl Source for RodioWave { fn current_frame_len(&self) -> Option { None } fn channels(&self) -> u16 { - 1 + 2 } fn sample_rate(&self) -> u32 { @@ -44,11 +42,11 @@ where } impl Audio for RodioAudio { - fn new + Send + 'static>(wave: S) -> Self { + fn new(wave: S) -> Self { let (stream, stream_handle) = OutputStream::try_default().unwrap(); let sink = Sink::try_new(&stream_handle).unwrap(); - sink.append(RodioWave(wave)); + sink.append(RodioWave(wave, 0)); RodioAudio { _stream: stream, -- cgit v1.2.3-70-g09d2