From df2314cfab13cd339f0175f05ab93f7ca6047b0c Mon Sep 17 00:00:00 2001 From: Roms1383 Date: Fri, 29 Nov 2024 22:16:18 +0700 Subject: [PATCH] :bug: stereo and adjust tracks routing --- crates/audioware/src/engine/tracks/car_radio.rs | 7 ++++++- crates/audioware/src/engine/tracks/holocall.rs | 13 +++++++++++-- crates/audioware/src/engine/tracks/mod.rs | 2 +- crates/audioware/src/engine/tracks/music.rs | 10 ++++++++-- crates/audioware/src/engine/tracks/radioport.rs | 10 ++++++++-- 5 files changed, 34 insertions(+), 8 deletions(-) diff --git a/crates/audioware/src/engine/tracks/car_radio.rs b/crates/audioware/src/engine/tracks/car_radio.rs index ef9466ad2..26780e05b 100644 --- a/crates/audioware/src/engine/tracks/car_radio.rs +++ b/crates/audioware/src/engine/tracks/car_radio.rs @@ -21,7 +21,12 @@ impl CarRadio { ) -> Result { let track = manager.add_sub_track( TrackBuilder::new() - .routes(TrackRoutes::parent(ambience.environmental())) + .routes( + // sum must be 1.0 otherwise sounds crackle + TrackRoutes::empty() + .with_route(ambience.environmental(), 0.75) + .with_route(ambience.reverb(), 0.25), + ) .with_effect(modulators.car_radio_volume.try_effect()?), )?; Ok(Self(track)) diff --git a/crates/audioware/src/engine/tracks/holocall.rs b/crates/audioware/src/engine/tracks/holocall.rs index 4cca22a87..0fa94c561 100644 --- a/crates/audioware/src/engine/tracks/holocall.rs +++ b/crates/audioware/src/engine/tracks/holocall.rs @@ -1,7 +1,7 @@ use kira::{ effect::filter::{FilterBuilder, FilterMode}, manager::{backend::Backend, AudioManager}, - track::{TrackBuilder, TrackHandle}, + track::{TrackBuilder, TrackHandle, TrackRoutes}, OutputDestination, }; @@ -13,15 +13,24 @@ use crate::{ error::Error, }; +use super::ambience::Ambience; + pub struct Holocall(TrackHandle); impl Holocall { pub fn try_new( manager: &mut AudioManager, + ambience: &Ambience, modulators: &Modulators, ) -> Result { + let main = manager.main_track().id(); let track = manager.add_sub_track({ - let mut builder = TrackBuilder::new(); + let mut builder = TrackBuilder::new().routes( + // sum must be 1.0 otherwise sounds crackle + TrackRoutes::empty() + .with_route(main, 1.) + .with_route(ambience.reverb(), 0.), + ); builder.add_effect( FilterBuilder::default() .cutoff(EQ_LOW_PASS_PHONE_CUTOFF) diff --git a/crates/audioware/src/engine/tracks/mod.rs b/crates/audioware/src/engine/tracks/mod.rs index 468d60063..48335604e 100644 --- a/crates/audioware/src/engine/tracks/mod.rs +++ b/crates/audioware/src/engine/tracks/mod.rs @@ -74,7 +74,7 @@ impl Tracks { ) -> Result { let ambience = Ambience::try_new(manager, modulators)?; let v = V::try_new(manager, &ambience, modulators)?; - let holocall = Holocall::try_new(manager, modulators)?; + let holocall = Holocall::try_new(manager, &ambience, modulators)?; let sfx = Sfx::try_new(manager, &ambience, modulators)?; let radioport = Radioport::try_new(manager, &ambience, modulators)?; let music = Music::try_new(manager, &ambience, modulators)?; diff --git a/crates/audioware/src/engine/tracks/music.rs b/crates/audioware/src/engine/tracks/music.rs index f62b580eb..647f4a80c 100644 --- a/crates/audioware/src/engine/tracks/music.rs +++ b/crates/audioware/src/engine/tracks/music.rs @@ -16,12 +16,18 @@ pub struct Music(TrackHandle); impl Music { pub fn try_new( manager: &mut AudioManager, - #[allow(unused_variables, reason = "check routing")] ambience: &Ambience, + ambience: &Ambience, modulators: &Modulators, ) -> Result { + let main = manager.main_track().id(); let track = manager.add_sub_track( TrackBuilder::new() - .routes(TrackRoutes::new()) + .routes( + // sum must be 1.0 otherwise sounds crackle + TrackRoutes::empty() + .with_route(main, 1.) + .with_route(ambience.reverb(), 0.), + ) .with_effect(modulators.music_volume.try_effect()?), )?; Ok(Self(track)) diff --git a/crates/audioware/src/engine/tracks/radioport.rs b/crates/audioware/src/engine/tracks/radioport.rs index d94bc5dd0..43849d90c 100644 --- a/crates/audioware/src/engine/tracks/radioport.rs +++ b/crates/audioware/src/engine/tracks/radioport.rs @@ -16,12 +16,18 @@ pub struct Radioport(TrackHandle); impl Radioport { pub fn try_new( manager: &mut AudioManager, - #[allow(unused_variables, reason = "check routing")] ambience: &Ambience, + ambience: &Ambience, modulators: &Modulators, ) -> Result { + let main = manager.main_track().id(); let track = manager.add_sub_track( TrackBuilder::new() - .routes(TrackRoutes::new()) + .routes( + // sum must be 1.0 otherwise sounds crackle + TrackRoutes::empty() + .with_route(main, 1.) + .with_route(ambience.reverb(), 0.), + ) .with_effect(modulators.radioport_volume.try_effect()?), )?; Ok(Self(track))