duncanmalashock / elm-music-theory / Music.PitchClass

A pitch class is like a pitch, but with no octave specified. E.g. the pitch class "B♭".


type alias PitchClass =
Music.Internal.PitchClass.PitchClass

Helpers

fromPitch : Music.Internal.Pitch.Pitch -> PitchClass

Convert a Pitch to a PitchClass.

fromPitch Pitch.c4 == c

areEnharmonicEquivalents : PitchClass -> PitchClass -> Basics.Bool

Check whether two pitch classes are enharmonic equivalents of each other. Enharmonic equivalents are two pitch classes with different names but the same sound:

areEnharmonicEquivalents cFlat b == True

letter : PitchClass -> Letter

Get the letter name of a pitch class:

letter fSharp =
    F


type Letter
    = A
    | B
    | C
    | D
    | E
    | F
    | G

accidentals : PitchClass -> Basics.Int

Get the accidentals of a pitch class.

Sharps are positive:

accidentals fSharp =
    1

Flats are negative:

accidentals aFlat =
    -1

Naturals are zero:

accidentals c =
    0

Conversion

toString : PitchClass -> String

Get a pitch class's letter name and accidental:

toString bFlat == "B♭"

Constructors

c : PitchClass

cSharp : PitchClass

d : PitchClass

dSharp : PitchClass

dFlat : PitchClass

e : PitchClass

eFlat : PitchClass

f : PitchClass

fSharp : PitchClass

g : PitchClass

gSharp : PitchClass

gFlat : PitchClass

a : PitchClass

aSharp : PitchClass

aFlat : PitchClass

b : PitchClass

bFlat : PitchClass

Less common pitch classes

These are used less frequently in music. Most likely you want a pitch from the previous section.

Enharmonic equivalents of natural notes

cFlat : PitchClass

eSharp : PitchClass

fFlat : PitchClass

bSharp : PitchClass

Pitch classes with double accidentals

cDoubleSharp : PitchClass

cDoubleFlat : PitchClass

dDoubleSharp : PitchClass

dDoubleFlat : PitchClass

eDoubleSharp : PitchClass

eDoubleFlat : PitchClass

fDoubleSharp : PitchClass

fDoubleFlat : PitchClass

gDoubleSharp : PitchClass

gDoubleFlat : PitchClass

aDoubleSharp : PitchClass

aDoubleFlat : PitchClass

bDoubleSharp : PitchClass

bDoubleFlat : PitchClass