Copyright | (c) 2012--2016, Chordify BV |
---|---|
License | LGPL-3 |
Maintainer | haskelldevelopers@chordify.net |
Stability | experimental |
Portability | non-portable |
Safe Haskell | Safe |
Language | Haskell2010 |
Summary: this module provides some functions that transform notes and chords into pitch classes and pitch class sets. See for more info: http://en.wikipedia.org/wiki/Pitch_class
- data PCSet
- pc :: PCSet -> IntSet
- toPitchClass :: Diatonic a => Note a -> Int
- pcToRoot :: Int -> Root
- toPitchClasses :: ChordLabel -> PCSet
- rootPC :: ChordLabel -> Int
- bassPC :: ChordLabel -> Int
- ignorePitchSpelling :: ChordLabel -> ChordLabel
- keyPitchClasses :: Key -> PCSet
- intValToPitchClss :: Root -> Interval -> Int
- intSetToPC :: IntSet -> Root -> PCSet
- class EnHarEq a where
- class (Generic a, Show a, Enum a, Bounded a) => Diatonic a
Documentation
We hide the constructors, such that a PCSet can only be constructed with
toPitchClasses
, this to overcome confusion between interval sets and
pitch class sets, which are both IntSet
s
Pitch classes
toPitchClass :: Diatonic a => Note a -> Int Source #
Returns the semitone value [0 .. 11] of a ScaleDegree
where
0 = C, e.g. F# = 6. For the constructors N
and X
an error is thrown.
pcToRoot :: Int -> Root Source #
The reverse of toPitchClass
returning the 'Note DiatonicNatural' given a
Integer [0..11] semitone, where 0 represents C. All pitch spelling is ignored
and the the following twelve pitch names will be output: C, C#, D, Eb, E, F
F#, G, Ab, A, Bb, B. When the integer is out of the range [0..11] an
error is thrown.
Pitch classes applied to chords
toPitchClasses :: ChordLabel -> PCSet Source #
Similar to toIntSet
but returns Int
pitch classes and includes the
Root
and the bass Note
of the the Chord
. toPitchClasses
throws an
error when applied to a NoChord
or UndefChord
.
rootPC :: ChordLabel -> Int Source #
A short-cut applying toPitchClass
to a Chord
. rootPC
throws an
error when applied to a NoChord
or UndefChord
.
bassPC :: ChordLabel -> Int Source #
A short-cut applying intValToPitchClss
to a Chord
. bassPC
throws an
error when applied to a NoChord
or UndefChord
.
ignorePitchSpelling :: ChordLabel -> ChordLabel Source #
Ignores the pitch spelling of a chord by applying pcToRoot
and
toPitchClass
to the root of a ChordLabel
.
Pitch classes applied to keys
keyPitchClasses :: Key -> PCSet Source #
Return the set of pitches for the given key.
Pitch classes applied to interval sets
intValToPitchClss :: Root -> Interval -> Int Source #
As toIntervalClss
, but returns the Int
pitch class.
Enharmonic Equivalence
class EnHarEq a where Source #
A class to compare datatypes that sound the same (they contain the same pitch class content): http://en.wikipedia.org/wiki/Enharmonic