A scale is a set of pitch classes in a certain order. E.g. the "C major scale."
Music.Internal.Scale.Scale
root : Scale -> Music.PitchClass.PitchClass
Get the root pitch class of a scale:
root (major PitchClass.eFlat) == PitchClass.eFlat
scaleType : Scale -> Music.Internal.ScaleType.ScaleType
Get the scale type for a scale:
scaleType (lydian PitchClass.c) == ScaleType.lydian
toList : Scale -> List Music.PitchClass.PitchClass
Get the pitch classes contained in the scale:
toList (major PitchClass.f)
== [ PitchClass.f
, PitchClass.g
, PitchClass.a
, PitchClass.bFlat
, PitchClass.c
, PitchClass.d
, PitchClass.e
]
containsPitchClass : Music.PitchClass.PitchClass -> { ignoreSpelling : Basics.Bool } -> Scale -> Basics.Bool
Find out whether a scale contains a given pitch class:
containsPitchClass PitchClass.f
{ ignoreSpelling = False }
(major PitchClass.c)
== True
Set the ignoreSpelling
flag to allow enharmonic equivalents. This returns True
because G♭ is not in C Lydian, but F♯ (an equivalent) is:
containsPitchClass PitchClass.gFlat
{ ignoreSpelling = True }
(lydian PitchClass.c)
== True
containsChord : Music.Internal.Chord.Chord -> Music.Internal.Scale.Scale -> Basics.Bool
Find out whether a scale contains a given chord:
containsChord (Chord.majorSeventhSharpEleven PitchClass.f)
(major PitchClass.c)
== True
allChords : List Music.ChordType.ChordType -> Music.Internal.Scale.Scale -> List Music.Internal.Chord.Chord
Get all chords contained in a scale, choosing from a list of chord types to detect:
allChords [ ChordType.minorSeventh ] (major PitchClass.c)
== [ Chord.minorSeventh PitchClass.d
, Chord.minorSeventh PitchClass.e
, Chord.minorSeventh PitchClass.a
]
degree : Basics.Int -> Scale -> Music.PitchClass.PitchClass
Get a degree of the scale:
degree 3 (major PitchClass.c) == PitchClass.e
Note: like many numbers in music theory, degrees are 1-based; 2
means the second degree of the scale. 0 and negative integers are ignored.
mode : Basics.Int -> Scale -> Scale
Get a mode of a scale by shifting the order of its pitch classes. For example, E Phrygian is the third mode of the C major scale:
mode 3 (major PitchClass.c) == phrygian PitchClass.e
Note: like many numbers in music theory, modes are 1-based; 2
means the second mode of the scale type. 0 and negative integers are ignored.
major : Music.PitchClass.PitchClass -> Scale
Same as ionian
minor : Music.PitchClass.PitchClass -> Scale
Also known as the "natural minor" scale. Same as aeolian
ionian : Music.PitchClass.PitchClass -> Scale
dorian : Music.PitchClass.PitchClass -> Scale
phrygian : Music.PitchClass.PitchClass -> Scale
lydian : Music.PitchClass.PitchClass -> Scale
mixolydian : Music.PitchClass.PitchClass -> Scale
aeolian : Music.PitchClass.PitchClass -> Scale
locrian : Music.PitchClass.PitchClass -> Scale
melodicMinor : Music.PitchClass.PitchClass -> Scale
dorianFlat2 : Music.PitchClass.PitchClass -> Scale
lydianAugmented : Music.PitchClass.PitchClass -> Scale
acoustic : Music.PitchClass.PitchClass -> Scale
majorMinor : Music.PitchClass.PitchClass -> Scale
minorLocrian : Music.PitchClass.PitchClass -> Scale
superlocrian : Music.PitchClass.PitchClass -> Scale
harmonicMinor : Music.PitchClass.PitchClass -> Scale
locrianNatural6 : Music.PitchClass.PitchClass -> Scale
majorAugmented : Music.PitchClass.PitchClass -> Scale
lydianDiminished : Music.PitchClass.PitchClass -> Scale
phrygianDominant : Music.PitchClass.PitchClass -> Scale
aeolianHarmonic : Music.PitchClass.PitchClass -> Scale
ultralocrian : Music.PitchClass.PitchClass -> Scale
diminishedWholeToneHalfTone : Music.PitchClass.PitchClass -> Scale
diminishedHalfToneWholeTone : Music.PitchClass.PitchClass -> Scale
wholeTone : Music.PitchClass.PitchClass -> Scale
majorPentatonic : Music.PitchClass.PitchClass -> Scale
minorPentatonic : Music.PitchClass.PitchClass -> Scale
custom : Music.PitchClass.PitchClass -> Music.Internal.ScaleType.ScaleType -> Scale
Create a scale from a custom scale type. For use with ScaleType.customPentatonic, ScaleType.customHexatonic, ScaleType.customHeptatonic, and ScaleType.customOctatonic:
myCustomScaleType =
customPentatonic
{ rootToSecond = Interval.minorThird
, rootToThird = Interval.perfectFourth
, rootToFourth = Interval.perfectFifth
, rootToFifth = Interval.minorSeventh
}
myCustomScale =
|> custom PitchClass.c myCustomScaleType
-- Equivalent to `minorPentatonic PitchClass.c`