aboutsummaryrefslogtreecommitdiffstats
path: root/mumd/src
diff options
context:
space:
mode:
Diffstat (limited to 'mumd/src')
-rw-r--r--mumd/src/audio.rs22
1 files changed, 12 insertions, 10 deletions
diff --git a/mumd/src/audio.rs b/mumd/src/audio.rs
index d86cb84..2c7eead 100644
--- a/mumd/src/audio.rs
+++ b/mumd/src/audio.rs
@@ -5,11 +5,14 @@ pub mod output;
use crate::audio::output::SaturatingAdd;
use cpal::traits::{DeviceTrait, HostTrait, StreamTrait};
use cpal::{SampleFormat, SampleRate, Stream, StreamConfig};
+#[cfg(feature = "sound-effects")]
+use {
+ dasp_interpolate::linear::Linear,
+ dasp_signal::{self as signal, Signal, interpolate::Converter},
+};
use log::*;
use mumble_protocol::voice::VoicePacketPayload;
use opus::Channels;
-#[cfg(feature = "sound-effects")]
-use samplerate::ConverterType;
use std::collections::hash_map::Entry;
use std::collections::{HashMap, VecDeque};
use std::sync::{Arc, Mutex};
@@ -236,14 +239,13 @@ impl Audio {
.map(|e| cpal::Sample::to_f32(&e.unwrap()))
.collect::<Vec<_>>(),
};
- let samples = samplerate::convert(
- spec.sample_rate,
- SAMPLE_RATE,
- spec.channels as usize,
- ConverterType::SincBestQuality,
- &samples,
- )
- .unwrap();
+ let mut signal = signal::from_iter(samples.iter().cloned());
+ let interp = Linear::new(signal.next(), signal.next());
+ let converter = Converter::from_hz_to_hz(signal,
+ interp,
+ spec.sample_rate.into(),
+ SAMPLE_RATE.into());
+ let samples = converter.until_exhausted().collect::<Vec<_>>();
(*event, samples)
})
.collect();