-- | Bohlen-Pierce tones
module Temporal.Music.Western.BohlenPierce(
        -- * Tones
        StepBP(..),

        c, cs, cf, d, ds, df, e, es, ef,
        f, fs, ff, g, gs, gf, h, hs, hf, 
        j, js, jf, a, as, af, b, bs, bf,

        -- * Scales
        eqBP, justBP
)    
where

import Temporal.Music.Notation.Seg(Seg)
import Temporal.Music.Notation.Pitch
import Temporal.Music.Notation.Scales(eqBP, justBP)

-- | Tones for Bohlen-Pierce 13-tone scale. 
-- Default scale defined in 'Pch' class is equal 
-- temperament Bohlen-Pierce scale
data StepBP = 
      C  | Cs | D  | E  | F  | Fs | G 
    | H  | Hs | J  | A  | As | B
    deriving (Enum, Bounded, Eq, Show)

instance Seg StepBP

instance Pch StepBP where
    pitch = Pitch (eqBP 0 c1)

c, cs, cf, d, ds, df, e, es, ef,
    f, fs, ff, g, gs, gf, h, hs, hf, 
    j, js, jf, a, as, af, b, bs, bf :: Tone StepBP

c  = tone C  
cs = tone Cs 
d  = tone D 
e  = tone E
f  = tone F
fs = tone Fs
g  = tone G
h  = tone H
hs = tone Hs
j  = tone J
a  = tone A
as = tone As
b  = tone B

cf = b
ds = e
df = cs
es = f
ef = d
ff = e
gs = h
gf = fs
hf = g
js = a
jf = hs
af = j

bf = as
bs = c