module Notes.Default
  where

import Data.Map            (Map, (!))
import Language.Modulators
import Language.Notes
import Notes               (generateNotes)

-- Notes

-- | Generate a note map at the base frequency of 440Hz. See 'generateNotes' for the more customisable implementation.
notes440 :: Map Note Double
notes440 :: Map Note Double
notes440 = Double -> Map Note Double
generateNotes Double
440

a5 :: Double
a5 :: Double
a5 = Map Note Double
notes440 Map Note Double -> Note -> Double
forall k a. Ord k => Map k a -> k -> a
! (Tone
A Tone -> Octave -> Note
forall a b. ModulateOctave a b => a -> Octave -> b
^= Octave
Five)

b5 :: Double
b5 :: Double
b5 = Map Note Double
notes440 Map Note Double -> Note -> Double
forall k a. Ord k => Map k a -> k -> a
! (Tone
B Tone -> Octave -> Note
forall a b. ModulateOctave a b => a -> Octave -> b
^= Octave
Five)

c5 :: Double
c5 :: Double
c5 = Map Note Double
notes440 Map Note Double -> Note -> Double
forall k a. Ord k => Map k a -> k -> a
! (Tone
C Tone -> Octave -> Note
forall a b. ModulateOctave a b => a -> Octave -> b
^= Octave
Five)

d5 :: Double
d5 :: Double
d5 = Map Note Double
notes440 Map Note Double -> Note -> Double
forall k a. Ord k => Map k a -> k -> a
! (Tone
D Tone -> Octave -> Note
forall a b. ModulateOctave a b => a -> Octave -> b
^= Octave
Five)

e5 :: Double
e5 :: Double
e5 = Map Note Double
notes440 Map Note Double -> Note -> Double
forall k a. Ord k => Map k a -> k -> a
! (Tone
E Tone -> Octave -> Note
forall a b. ModulateOctave a b => a -> Octave -> b
^= Octave
Five)

f5 :: Double
f5 :: Double
f5 = Map Note Double
notes440 Map Note Double -> Note -> Double
forall k a. Ord k => Map k a -> k -> a
! (Tone
F Tone -> Octave -> Note
forall a b. ModulateOctave a b => a -> Octave -> b
^= Octave
Five)

g5 :: Double
g5 :: Double
g5 = Map Note Double
notes440 Map Note Double -> Note -> Double
forall k a. Ord k => Map k a -> k -> a
! (Tone
G Tone -> Octave -> Note
forall a b. ModulateOctave a b => a -> Octave -> b
^= Octave
Five)


-- Functions