Skip to content

Commit c8f9625

Browse files
committed
Remove rate module
1 parent 2f10c23 commit c8f9625

File tree

5 files changed

+37
-251
lines changed

5 files changed

+37
-251
lines changed

examples/wav.rs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ extern crate portaudio as pa;
44
extern crate sample;
55

66
use sample::{signal, Signal, ToFrameSliceMut};
7+
use sample::interpolate::Linear;
78

89
// Thumb piano.
910
mod wav {
@@ -63,7 +64,8 @@ fn frames(file_name: &'static str) -> Vec<wav::Frame> {
6364
let mut reader = hound::WavReader::open(&sample_file).unwrap();
6465
let spec = reader.spec();
6566
let samples = reader.samples().map(|s| s.unwrap());
66-
signal::from_interleaved_samples::<_, wav::Frame>(samples)
67-
.from_hz_to_hz(spec.sample_rate as f64, SAMPLE_RATE as f64)
67+
let mut signal = signal::from_interleaved_samples::<_, wav::Frame>(samples);
68+
let interp = Linear::from_source(&mut signal).unwrap();
69+
signal.from_hz_to_hz(interp, spec.sample_rate as f64, SAMPLE_RATE as f64)
6870
.collect()
6971
}

src/interpolate.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,6 @@ impl<T, I> Converter<T, I>
150150
impl<T, I> Iterator for Converter<T, I>
151151
where T: Iterator,
152152
<T as Iterator>::Item: Frame,
153-
<<T as Iterator>::Item as Frame>::Sample: Duplex<f64>,
154153
I: Interpolator<Frame=<T as Iterator>::Item>
155154
{
156155
type Item = <T as Iterator>::Item;

src/lib.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,6 @@ pub mod slice;
6060
pub mod conv;
6161
pub mod frame;
6262
pub mod signal;
63-
pub mod rate;
6463
pub mod types;
6564
pub mod window;
6665
pub mod interpolate;

src/rate.rs

Lines changed: 0 additions & 230 deletions
This file was deleted.

src/signal.rs

Lines changed: 33 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
//! a simple and familiar API.
2121
2222
use {Duplex, Frame, Sample, Vec, Rc, VecDeque};
23-
use rate;
23+
use interpolate::{Converter, Interpolator};
2424
use core;
2525

2626

@@ -219,19 +219,23 @@ pub trait Signal: Iterator + Sized
219219
/// extern crate sample;
220220
///
221221
/// use sample::Signal;
222+
/// use sample::interpolate::Linear;
222223
///
223224
/// fn main() {
224225
/// let foo = [[0.0], [1.0], [0.0], [-1.0]];
225226
/// let mul = [1.0, 1.0, 0.5, 0.5, 0.5, 0.5];
226-
/// let frames: Vec<_> = foo.iter().cloned().mul_hz(mul.iter().cloned()).collect();
227-
/// assert_eq!(&frames[..], &[[0.0], [1.0], [0.0], [-0.5], [-1.0]][..]);
227+
/// let mut source = foo.iter().cloned();
228+
/// let interp = Linear::from_source(&mut source).unwrap();
229+
/// let frames: Vec<_> = source.mul_hz(interp, mul.iter().cloned()).collect();
230+
/// assert_eq!(&frames[..], &[[0.0], [1.0], [0.0], [-0.5], [-1.0], [-0.5]][..]);
228231
/// }
229232
/// ```
230-
fn mul_hz<I>(self, mul_per_frame: I) -> MulHz<Self, I>
231-
where I: Iterator<Item=f64>,
233+
fn mul_hz<M, I>(self, interpolator: I, mul_per_frame: M) -> MulHz<Self, M, I>
234+
where M: Iterator<Item=f64>,
235+
I: Interpolator,
232236
{
233237
MulHz {
234-
signal: rate::Converter::scale_playback_hz(self, 1.0),
238+
signal: Converter::scale_playback_hz(self, interpolator, 1.0),
235239
mul_per_frame: mul_per_frame,
236240
}
237241
}
@@ -244,15 +248,20 @@ pub trait Signal: Iterator + Sized
244248
/// extern crate sample;
245249
///
246250
/// use sample::Signal;
251+
/// use sample::interpolate::Linear;
247252
///
248253
/// fn main() {
249254
/// let foo = [[0.0], [1.0], [0.0], [-1.0]];
250-
/// let frames: Vec<_> = foo.iter().cloned().from_hz_to_hz(1.0, 2.0).collect();
251-
/// assert_eq!(&frames[..], &[[0.0], [0.5], [1.0], [0.5], [0.0], [-0.5], [-1.0]][..]);
255+
/// let mut source = foo.iter().cloned();
256+
/// let interp = Linear::from_source(&mut source).unwrap();
257+
/// let frames: Vec<_> = source.from_hz_to_hz(interp, 1.0, 2.0).collect();
258+
/// assert_eq!(&frames[..], &[[0.0], [0.5], [1.0], [0.5], [0.0], [-0.5], [-1.0], [-0.5]][..]);
252259
/// }
253260
/// ```
254-
fn from_hz_to_hz(self, source_hz: f64, target_hz: f64) -> rate::Converter<Self> {
255-
rate::Converter::from_hz_to_hz(self, source_hz, target_hz)
261+
fn from_hz_to_hz<I>(self, interpolator: I, source_hz: f64, target_hz: f64) -> Converter<Self, I>
262+
where I: Interpolator,
263+
{
264+
Converter::from_hz_to_hz(self, interpolator, source_hz, target_hz)
256265
}
257266

258267
/// Multiplies the rate at which frames of the `Signal` are yielded by the given value.
@@ -263,15 +272,20 @@ pub trait Signal: Iterator + Sized
263272
/// extern crate sample;
264273
///
265274
/// use sample::Signal;
275+
/// use sample::interpolate::Linear;
266276
///
267277
/// fn main() {
268278
/// let foo = [[0.0], [1.0], [0.0], [-1.0]];
269-
/// let frames: Vec<_> = foo.iter().cloned().scale_hz(0.5).collect();
270-
/// assert_eq!(&frames[..], &[[0.0], [0.5], [1.0], [0.5], [0.0], [-0.5], [-1.0]][..]);
279+
/// let mut source = foo.iter().cloned();
280+
/// let interp = Linear::from_source(&mut source).unwrap();
281+
/// let frames: Vec<_> = source.scale_hz(interp, 0.5).collect();
282+
/// assert_eq!(&frames[..], &[[0.0], [0.5], [1.0], [0.5], [0.0], [-0.5], [-1.0], [-0.5]][..]);
271283
/// }
272284
/// ```
273-
fn scale_hz(self, multi: f64) -> rate::Converter<Self> {
274-
rate::Converter::scale_playback_hz(self, multi)
285+
fn scale_hz<I>(self, interpolator: I, multi: f64) -> Converter<Self, I>
286+
where I: Interpolator,
287+
{
288+
Converter::scale_playback_hz(self, interpolator, multi)
275289
}
276290

277291
/// Delays the `Signal` by the given number of frames.
@@ -560,11 +574,12 @@ pub struct ScaleAmpPerChannel<S, F> {
560574
/// This happens by wrapping `self` in a `rate::Converter` and calling `set_playback_hz_scale`
561575
/// with the value yielded by `signal`
562576
#[derive(Clone)]
563-
pub struct MulHz<S, M>
577+
pub struct MulHz<S, M, I>
564578
where S: Signal,
565579
S::Item: Frame,
580+
I: Interpolator,
566581
{
567-
signal: rate::Converter<S>,
582+
signal: Converter<S, I>,
568583
mul_per_frame: M,
569584
}
570585

@@ -1522,11 +1537,12 @@ impl<S, F> ExactSizeIterator for OffsetAmpPerChannel<S, F>
15221537
}
15231538

15241539

1525-
impl<S, M> Iterator for MulHz<S, M>
1540+
impl<S, M, I> Iterator for MulHz<S, M, I>
15261541
where S: Signal,
15271542
S::Item: Frame,
15281543
<S::Item as Frame>::Sample: Duplex<f64>,
15291544
M: Iterator<Item=f64>,
1545+
I: Interpolator<Frame=<S as Iterator>::Item>,
15301546
{
15311547
type Item = S::Item;
15321548
#[inline]

0 commit comments

Comments
 (0)