Skip to main content

Harte

Struct Harte 

Source
pub struct Harte { /* private fields */ }
Expand description

A chord read from a Harte label, with the Chord it sounds.

The chord’s pitches stand in degree order above the root in octave 4, the bass an octave lower where it is not the root, and the root and bass are fixed on the chord as the label names them. A label of N or X is no chord at all: it has no root and an empty chord.

Two labels are equal when they sound the same chord: the same root, the same degrees once the shorthand is unwrapped, and the same bass. C:maj equals C:(3,5).

Implementations§

Source§

impl Harte

Source

pub fn new(label: &str) -> Result<Self>

Reads a label and builds the chord it names.

Source

pub fn label(&self) -> &str

The label as it was given.

Source

pub fn is_empty(&self) -> bool

Whether the label names no chord, N or X.

Source

pub fn chord(&self) -> &Chord

The chord the label sounds.

Source

pub fn into_chord(self) -> Chord

The chord, handed over.

Source

pub fn root_name(&self) -> Option<&str>

The root as written, Bb; harte-library’s get_root.

Source

pub fn bass_degree(&self) -> Option<&str>

The bass as a degree above the root, 1 when none was written; harte-library’s get_bass.

Source

pub fn shorthand(&self) -> Option<&str>

The shorthand, where the label carries one; harte-library’s get_shorthand.

Source

pub fn degrees(&self) -> Option<&[String]>

The degrees written in parentheses, *3 included, or None when there were none; harte-library’s get_degrees.

Source

pub fn unwrap_shorthand(&self) -> Option<&[String]>

Every degree the chord sounds, the shorthand’s and the written ones together with the root and the bass, in order; harte-library’s unwrap_shorthand, which answers the written degrees alone for a label with no shorthand and nothing for one with neither.

Source

pub fn sounding_degrees(&self) -> &[String]

Every degree the chord sounds, the root and the bass among them, in order; empty for no chord.

Source

pub fn bass_is_root(&self) -> bool

Whether the bass is the root.

Source

pub fn contains_shorthand(&self) -> bool

Whether the label carries a shorthand.

Source

pub fn midi_pitches(&self) -> Vec<IntegerType>

The MIDI numbers of the pitches, lowest first.

Source

pub fn multi_hot_encoding(&self, transpose: bool) -> [u8; 12]

Which of the twelve pitch classes the chord sounds, one flag each, counted from C, or from the root with transpose.

Source

pub fn prettify(&self) -> String

The label rewritten with the largest shorthand its degrees contain, the degrees left over in parentheses and the bass after a slash: C:(b3,5) is C:min. A label whose degrees fit no shorthand comes back as it was written; so does N.

Trait Implementations§

Source§

impl Clone for Harte

Source§

fn clone(&self) -> Harte

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

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

Performs copy-assignment from source. Read more
Source§

impl Debug for Harte

Source§

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

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

impl<'de> Deserialize<'de> for Harte

Available on crate feature serde only.
Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl Display for Harte

Source§

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

The label in its canonical spelling: root, shorthand, degrees and bass, without spaces; N for no chord.

Source§

impl FromStr for Harte

Source§

type Err = Error

The associated error which can be returned from parsing.
Source§

fn from_str(label: &str) -> Result<Self>

Parses a string s to return a value of this type. Read more
Source§

impl PartialEq for Harte

Source§

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

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

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

Inequality operator !=. Read more
Source§

impl Serialize for Harte

Available on crate feature serde only.
Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more

Auto Trait Implementations§

§

impl Freeze for Harte

§

impl RefUnwindSafe for Harte

§

impl Send for Harte

§

impl Sync for Harte

§

impl Unpin for Harte

§

impl UnsafeUnpin for Harte

§

impl UnwindSafe for Harte

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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,

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> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts 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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts 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
Source§

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

Source§

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§

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>,

Source§

type Error = !

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

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

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

Source§

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.