music-pitch-1.3: Abstract representation of musical pitch.

Safe HaskellNone

Music.Pitch.Relative.Pitch

Contents

Synopsis

Pitch

data Pitch Source

Standard pitch representation.

Intervals and pitches can be added using .+^. To get the interval between two pitches, use .-..

Notes with accidentals can be written by adding the s or b suffices (or two for double sharps and flats).

 cs, ds, es ...    -- sharp
 cb, db, eb ...    -- flat
 css, dss, ess ... -- double sharp
 cbb, dbb, ebb ... -- double flat

There is also a convenience syntax for entering pitches one octave up or down, using ' and _ respectively.

 g a b c'
 d c b_ c

Because of some overloading magic, we can actually write sharp and flat as postfix functions. This gives a better read:

 cs == c sharp
 db == c flat

You can of course use typical functional transformation of pitch as well. For example sharpen and flatten are the ordinary (prefix) versions of sharp and flat

 sharpen c             == c sharp       == cs
 flatten d             == d flat        == ds
 (sharpen . sharpen) c == c doubleSharp == css
 (flatten . flatten) d == d doubleFlat  == dss

Note that there is no guarantee that your pitch representation use enharmonic equivalence, so cs == db may or may not hold.

 c .+^ minor third == eb
 f .-. c           == perfect fourth

Pitches are described by name, accidental and octave number.

 c   == fromIntegral 0
 _P4 == perfect fourth   == interval Perfect 5
 d5  == diminished fifth == diminish (perfect fifth)

pitch :: Name -> Accidental -> PitchSource

Creates a pitch from name accidental.

name :: Pitch -> NameSource

Returns the name of a pitch.

See also octaves, and steps and semitones.

accidental :: Pitch -> AccidentalSource

Returns the accidental of a pitch.

See also octaves, and steps and semitones.

asPitch :: Pitch -> PitchSource

This is just the identity function, but is useful to fix the type of Pitch.