Skip to content

Commit

Permalink
sample => dasp
Browse files Browse the repository at this point in the history
  • Loading branch information
coopersimon committed Nov 14, 2020
1 parent 17fdfa6 commit 1de511d
Show file tree
Hide file tree
Showing 5 changed files with 136 additions and 17 deletions.
127 changes: 120 additions & 7 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 4 additions & 1 deletion oxide-7/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,10 @@ path = "src/lib.rs"
bitflags = "1.1.0"
crossbeam-channel = "0.4.2"
fixed = "0.5.4"
sample = "0.10"

[dependencies.dasp]
version = "0.11"
features = ["interpolate", "interpolate-sinc", "ring_buffer", "signal"]

[features]
debug = []
8 changes: 4 additions & 4 deletions oxide-7/src/audio/dsp/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ mod voice;

use bitflags::bitflags;
use crossbeam_channel::Sender;
use sample::frame::{
use dasp::frame::{
Frame,
Stereo
};
Expand Down Expand Up @@ -99,7 +99,7 @@ impl DSP {

echo_buffer_size: 0,

fir_buffer: [Stereo::equilibrium(); 8],
fir_buffer: [Stereo::EQUILIBRIUM; 8],
fir_buffer_index: 0,

noise_level: -0x4000,
Expand Down Expand Up @@ -227,7 +227,7 @@ impl DSP {
let echo = self.generate_echo(ram, echo_left as i16, echo_right as i16);

let frame = if self.is_mute() {
Stereo::equilibrium()
Stereo::EQUILIBRIUM
} else {
let mut left = clamp!((main_left * (self.regs.main_vol_left as i32)) >> 7, MIN, MAX);
let mut right = clamp!((main_right * (self.regs.main_vol_right as i32)) >> 7, MIN, MAX);
Expand Down Expand Up @@ -276,7 +276,7 @@ impl DSP {
fn calculate_fir(&mut self, new_sample: Stereo<i16>) -> Stereo<i16> {
self.fir_buffer[self.fir_buffer_index] = new_sample;

let out = (0..8).fold(Stereo::equilibrium(), |acc: Stereo<i32>, i| {
let out = (0..8).fold(Stereo::EQUILIBRIUM, |acc: Stereo<i32>, i| {
let index = self.fir_buffer_index.wrapping_sub(7 - i) & 7;
let buffer_sample = self.fir_buffer[index];
let fir_coef = self.regs.echo_fir_coefs[i] as i32;
Expand Down
2 changes: 1 addition & 1 deletion oxide-7/src/audio/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ use crossbeam_channel::{
Receiver
};

use sample::frame::Stereo;
use dasp::frame::Stereo;

use crate::constants::timing;

Expand Down
11 changes: 7 additions & 4 deletions oxide-7/src/audio/resampler.rs
Original file line number Diff line number Diff line change
@@ -1,10 +1,13 @@
// Module that resamples from 32_000 to the output sample rate.
use crossbeam_channel::Receiver;
use sample::{
use dasp::{
frame::{Frame, Stereo},
interpolate::{Converter, Sinc},
interpolate::sinc::Sinc,
ring_buffer::Fixed,
signal::Signal
signal::{
interpolate::Converter,
Signal,
}
};

pub struct Resampler {
Expand All @@ -13,7 +16,7 @@ pub struct Resampler {

impl Resampler {
pub fn new(receiver: Receiver<super::SamplePacket>, target_sample_rate: f64) -> Self {
let sinc = Sinc::new(Fixed::from([Stereo::equilibrium(); 2]));
let sinc = Sinc::new(Fixed::from([Stereo::EQUILIBRIUM; 2]));
Resampler {
converter: Source::new(receiver).from_hz_to_hz(sinc, 32_000.0, target_sample_rate)
}
Expand Down

0 comments on commit 1de511d

Please sign in to comment.