Skip to content

Commit

Permalink
Merge pull request #164 from vaffeine/fix/issue-162-interpolator-reset
Browse files Browse the repository at this point in the history
Add reset method to Interpolator
  • Loading branch information
mitchmindtree authored Aug 5, 2021
2 parents 465c104 + bcb937f commit 66e8b83
Show file tree
Hide file tree
Showing 4 changed files with 22 additions and 0 deletions.
4 changes: 4 additions & 0 deletions dasp_interpolate/src/floor.rs
Original file line number Diff line number Diff line change
Expand Up @@ -45,4 +45,8 @@ where
fn next_source_frame(&mut self, source_frame: Self::Frame) {
self.left = source_frame;
}

fn reset(&mut self) {
self.left = Self::Frame::EQUILIBRIUM;
}
}
5 changes: 5 additions & 0 deletions dasp_interpolate/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -48,4 +48,9 @@ pub trait Interpolator {

/// To be called whenever the Interpolator value steps passed 1.0.
fn next_source_frame(&mut self, source_frame: Self::Frame);

/// Resets the state of the interpolator.
///
/// Call this when there's a break in the continuity of the input data stream.
fn reset(&mut self);
}
5 changes: 5 additions & 0 deletions dasp_interpolate/src/linear.rs
Original file line number Diff line number Diff line change
Expand Up @@ -59,4 +59,9 @@ where
self.left = self.right;
self.right = source_frame;
}

fn reset(&mut self) {
self.left = Self::Frame::EQUILIBRIUM;
self.right = Self::Frame::EQUILIBRIUM;
}
}
8 changes: 8 additions & 0 deletions dasp_interpolate/src/sinc/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -121,4 +121,12 @@ where
self.idx += 1;
}
}

fn reset(&mut self) {
self.idx = 0;
self.frames.set_first(0);
for frame in self.frames.iter_mut() {
*frame = Self::Frame::EQUILIBRIUM;
}
}
}

0 comments on commit 66e8b83

Please sign in to comment.