From fbfb3ad0f70ebbc5db9e5d5fc41c53c15b082d9d Mon Sep 17 00:00:00 2001 From: Freya Murphy Date: Sat, 22 Nov 2025 16:00:35 -0500 Subject: audio: some changes --- audio/src/program.rs | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) (limited to 'audio/src/program.rs') diff --git a/audio/src/program.rs b/audio/src/program.rs index 28a5f41..d8ece2c 100644 --- a/audio/src/program.rs +++ b/audio/src/program.rs @@ -41,19 +41,20 @@ const fn map_volume(volume: u8) -> f32 { pub struct Program { ins: Vec, pc: usize, - looping: bool, pause_cnt: u32, pause_len: u32, + looping: bool, + playing: bool, } impl Program { pub const fn new(ins: Vec, looping: bool) -> Self { - let pc = ins.len(); Self { ins, - pc, - looping, + pc: 0, pause_cnt: 0, pause_len: 4, + looping, + playing: false, } } @@ -150,6 +151,9 @@ impl Program { } pub fn exec(&mut self, channels: &mut Channels) { + if !self.playing { + return; + } if self.pause_cnt > 0 { self.pause_cnt -= 1; } @@ -157,10 +161,11 @@ impl Program { if self.pause_cnt > 0 { break; } - if self.finished() { + if self.is_finished() { if self.looping { self.pc = 0; } else { + self.playing = false; break; } } @@ -170,11 +175,16 @@ impl Program { } } - pub const fn finished(&self) -> bool { + pub const fn is_finished(&self) -> bool { self.pc >= self.ins.len() } + pub const fn is_playing(&self) -> bool { + self.playing + } + pub const fn play(&mut self) { + self.playing = true; self.pc = 0; } -- cgit v1.2.3-freya