diff options
| author | Eskil <eskilq@kth.se> | 2020-11-21 15:56:27 +0100 |
|---|---|---|
| committer | Eskil <eskilq@kth.se> | 2020-11-21 15:56:27 +0100 |
| commit | 08397f89fd6fdefed67533bf9403bde07f1ee40e (patch) | |
| tree | 731613e6e00d66e7d35e782a1171677388c83306 /mumd/src/audio/output.rs | |
| parent | ff9a37af7ddf5484bb7db61ae01f8aafd9d1e91d (diff) | |
| parent | be4d273fa8778ec87ad4a34502d0f3c75657fbbc (diff) | |
| download | mum-08397f89fd6fdefed67533bf9403bde07f1ee40e.tar.gz | |
Merge branch 'sound-effect' into 'main'
Sound effects on events
Closes #68
See merge request gustav/mum!32
Diffstat (limited to 'mumd/src/audio/output.rs')
| -rw-r--r-- | mumd/src/audio/output.rs | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/mumd/src/audio/output.rs b/mumd/src/audio/output.rs index ce116a8..5e0cb8d 100644 --- a/mumd/src/audio/output.rs +++ b/mumd/src/audio/output.rs @@ -71,8 +71,9 @@ impl SaturatingAdd for u16 { } } -pub fn curry_callback<T: Sample + AddAssign + SaturatingAdd>( - buf: Arc<Mutex<HashMap<u32, ClientStream>>>, +pub fn curry_callback<T: Sample + AddAssign + SaturatingAdd + std::fmt::Display>( + effect_sound: Arc<Mutex<VecDeque<f32>>>, + user_bufs: Arc<Mutex<HashMap<u32, ClientStream>>>, output_volume_receiver: watch::Receiver<f32>, user_volumes: Arc<Mutex<HashMap<u32, (f32, bool)>>>, ) -> impl FnMut(&mut [T], &OutputCallbackInfo) + Send + 'static { @@ -83,8 +84,9 @@ pub fn curry_callback<T: Sample + AddAssign + SaturatingAdd>( let volume = *output_volume_receiver.borrow(); - let mut lock = buf.lock().unwrap(); - for (id, client_stream) in &mut *lock { + let mut effects_sound = effect_sound.lock().unwrap(); + let mut user_bufs = user_bufs.lock().unwrap(); + for (id, client_stream) in &mut *user_bufs { let (user_volume, muted) = user_volumes .lock() .unwrap() @@ -98,5 +100,11 @@ pub fn curry_callback<T: Sample + AddAssign + SaturatingAdd>( } } } + + for sample in data.iter_mut() { + *sample = sample.saturating_add(Sample::from( + &(effects_sound.pop_front().unwrap_or(0.0) * volume), + )); + } } } |
