pub enum LPR {
Leading,
Parallel,
Relative,
}Expand description
Enumerates primary available transformations in Neo-Riemannian theory.
Each transformation is invertible, meaning that consecutive applications of any transformation will return the original triad. Furthermore, LPR transformations may be chained together in discrete or continuous sequences to create complex harmonic progressions.
The transformations are:
- Leading (L):
- [Major] given a major triad, subtract a semitone from the root and move it to the fifth
- [Minor] given a minor triad, add a semitone to the fifth and move it to the root
- Parallel (P):
- [Major] given a major triad, subtract a semitone from the third
- [Minor] given a minor triad, add a semitone to the third
- Relative (R):
- [Major] given a major triad, add a tone to the fifth and move it to the root
- [Minor] given a minor triad, subtract a tone from the root and move it to the fifth
These transformations can be described categorically as morphisms between various triads. More specifically, they are contravariant functors between categories of triads.
Variants§
Leading
Leading (L) transformation
Parallel
Parallel (P) transformation
Relative
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 MulAssign<LPR> for Triad
impl MulAssign<LPR> for Triad
Source§fn mul_assign(&mut self, rhs: LPR)
fn mul_assign(&mut self, rhs: LPR)
*= operation. Read moreSource§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> 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