pub enum LPR {
Leading = 0,
Parallel = 1,
Relative = 2,
}Expand description
The LPR implementation enumerates the primary transformations considered within the
Neo-Riemannian theory. Each transformation is its own inverse (meaning consecutive
applications of the same transformation will return the original triad) and may be chained
together in both disctrete and continuous space to explore relationships between triads.
These transformation act on the given triad based on the quality of the interval between
the first and second notes (i.e., the root and third chord factors) meaning the effect of
the transformation is dictated by whether the triad starts with a major or minor third.
With The transformations are:
- Leading (L):
- [Major] decrement the root by a semitone; move to the fifth
- [Minor] increment the fifth by a semitone; move to the root
- Parallel (P):
- [Major] decrement the third by a semitone
- [Minor] increment the third by a semitone
- Relative (R):
- [Major] add a whole tone to the fifth; move to the root
- [Minor] subtract a whole tone from the root; move to the fifth
Using category theory we could define these transformations to be contravariant functors mapping between categories of triads.
Variants§
Leading = 0
Leading (L) transformation
Parallel = 1
Parallel (P) transformation
Relative = 2
Relative (R) transformation
Implementations§
Source§impl LPR
impl LPR
Sourcepub const fn is_leading(&self) -> bool
pub const fn is_leading(&self) -> bool
Returns true if the enum is LPR::Leading otherwise false
Sourcepub const fn is_parallel(&self) -> bool
pub const fn is_parallel(&self) -> bool
Returns true if the enum is LPR::Parallel otherwise false
Sourcepub const fn is_relative(&self) -> bool
pub const fn is_relative(&self) -> bool
Returns true if the enum is LPR::Relative otherwise false
Trait Implementations§
Source§impl Ord for LPR
impl Ord for LPR
Source§impl PartialOrd for LPR
impl PartialOrd for LPR
Source§impl VariantNames for LPR
impl VariantNames for LPR
impl Copy for LPR
impl Eq for LPR
impl StructuralPartialEq for LPR
Auto Trait Implementations§
impl Freeze for LPR
impl RefUnwindSafe for LPR
impl Send for LPR
impl Sync for LPR
impl Unpin for LPR
impl UnwindSafe for LPR
Blanket Implementations§
Source§impl<T> AsWeight<T> for Twhere
T: Clone + IntoWeight<T>,
impl<T> AsWeight<T> for Twhere
T: Clone + IntoWeight<T>,
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<Q, K> Comparable<K> for Q
impl<Q, K> Comparable<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.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