pub struct StreamAligner {
pub hasher: Hasher,
pub hashed_target: Vec<NoteHash>,
pub hashed_source: Vec<NoteHash>,
pub distance_matrix: Vec<Vec<i64>>,
pub changes: Vec<Change>,
pub similarity_score: FloatType,
}Expand description
Two streams aligned by their notes’ hashes, the cheapest edit from one to
the other: music21’s StreamAligner.
Inserting or deleting a note costs as many as the values in its hash, and changing one as many values as differ.
Fields§
§hasher: HasherHow notes are hashed: by default by MIDI pitch and rounded length, each with what it was made from.
hashed_target: Vec<NoteHash>The target’s hashes.
hashed_source: Vec<NoteHash>The source’s hashes.
distance_matrix: Vec<Vec<i64>>The cost of the cheapest edit from each opening of the target to each of the source.
changes: Vec<Change>The changes, in order.
similarity_score: FloatTypeThe share of the changes that change nothing.
Implementations§
Source§impl StreamAligner
impl StreamAligner
Sourcepub fn new() -> Self
pub fn new() -> Self
An aligner with music21’s default hasher: pitch and length, each hash with what it was made from.
Sourcepub fn with_hasher(hasher: Hasher) -> Self
pub fn with_hasher(hasher: Hasher) -> Self
An aligner hashing notes as this hasher does.
Sourcepub fn align(&mut self, target: &Stream, source: &Stream) -> Result<()>
pub fn align(&mut self, target: &Stream, source: &Stream) -> Result<()>
Aligns two streams: music21’s align.
§Errors
A stream with nothing to hash, or a hash the hasher refuses.
Sourcepub fn changes_count(&self, op: ChangeOp) -> usize
pub fn changes_count(&self, op: ChangeOp) -> usize
How many changes of each kind there are: music21’s changesCount.
Trait Implementations§
Source§impl Clone for StreamAligner
impl Clone for StreamAligner
Source§impl Debug for StreamAligner
impl Debug for StreamAligner
Auto Trait Implementations§
impl Freeze for StreamAligner
impl RefUnwindSafe for StreamAligner
impl Send for StreamAligner
impl Sync for StreamAligner
impl Unpin for StreamAligner
impl UnsafeUnpin for StreamAligner
impl UnwindSafe for StreamAligner
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more