pub enum PrototypeTemperament {
    Meantone7,
    Mavila9,
    Porcupine7,
    Porcupine8,
}
Expand description

The temperament providing the generation schema and layout rules for a given scale as a prototype.

Variants§

§

Meantone7

Octave-reduced temperament treating 4 fifths to be equal to one major third.

The major third can be divided into two equal parts which form the primary steps of the scale.

The note names are derived from the genchain of fifths (3/2) [ … Bb F C G D A E B F# … ]. This results in standard music notation with G at one fifth above C and D at two fifths == 1/2 major third == 1 primary step above C.

This prototype template also applies to other chain-of-fifth-based temperaments like Mavila and Superpyth.

§

Mavila9

Similar to PrototypeTemperament::Meantone7 but with 9 natural notes instead of 7.

Due to the added notes, the usual relationships between interval names and just ratios no longer apply. For instance, a Mavila[9] major third will sound similar to a Meantone[7] minor third and a Mavila[9] minor fourth will sound similar to a Meantone[7] major third.

The generator (perfect sixth) needs to be a rather flat version of 3/2 in order to make this prototype work. The genchain order is [ … Fb, B, G, C, H, D, J, E, A, F, B# ].

§

Porcupine7

Octave-reduced temperament treating 3 “major” thirds to be equal to two major fourths.

This temperament is best described in terms of primary steps, three of which form a major fourth. A primary step, usually being smaller than a secondary step, can be formally considered a minor second but in terms of just ratios may be closer to a major second.

The note names are derived from the genchain of primary steps [ … Gb A B C D E F G A# … ]. In contrast to meantone, the intervals E-F and F-G have the same size of one primary step while G-A is different, usually larger.

§

Porcupine8

Similar to PrototypeTemperament::Porcupine7 but with 8 natural notes instead of 7.

Adding an additional note makes the primary step larger than the secondary step, resolving the issue of major intervals being smaller than minor intervals.

The genchain order is [ … Hb A B C D E F G H A# … ].

Trait Implementations§

source§

impl Clone for PrototypeTemperament

source§

fn clone(&self) -> PrototypeTemperament

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for PrototypeTemperament

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Display for PrototypeTemperament

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Hash for PrototypeTemperament

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl PartialEq for PrototypeTemperament

source§

fn eq(&self, other: &PrototypeTemperament) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl Copy for PrototypeTemperament

source§

impl Eq for PrototypeTemperament

source§

impl StructuralEq for PrototypeTemperament

source§

impl StructuralPartialEq for PrototypeTemperament

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T> ToOwned for T
where T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T> ToString for T
where T: Display + ?Sized,

source§

default fn to_string(&self) -> String

Converts the given value to a String. Read more
source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.