packages feed

music-pitch-literal 1.6 → 1.6.1

raw patch · 6 files changed

+291/−206 lines, 6 filesdep ~basedep ~semigroups

Dependency ranges changed: base, semigroups

Files

music-pitch-literal.cabal view
@@ -1,17 +1,17 @@ -name:               music-pitch-literal-version:            1.6-cabal-version:      >= 1.10-author:             Hans Hoglund-maintainer:         Hans Hoglund-license:            BSD3-license-file:       COPYING-synopsis:           Overloaded pitch literals.-category:           Music-tested-with:        GHC-build-type:         Simple+name:                   music-pitch-literal+version:                1.6.1+author:                 Hans Hoglund+maintainer:             Hans Hoglund+license:                BSD3+license-file:           COPYING+synopsis:               Overloaded pitch literals.+category:               Music+tested-with:            GHC+build-type:             Simple+cabal-version:          >= 1.10 -description: +description:     This package allow you to write the pitches of standard notation as expressions     overloaded on result type. This works exactly like numeric literals. @@ -20,16 +20,14 @@ source-repository head   type:             git   location:         git://github.com/music-suite/music-pitch-literal.git-  -library                    -    build-depends: -        base                    >= 4 && < 5,-        semigroups-    hs-source-dirs: src-    default-language: Haskell2010-    exposed-modules:-        Data.Semigroup.Applicative-        Music.Pitch.Literal-        Music.Pitch.Literal.Pitch-        Music.Pitch.Literal.Interval-    ++library+    build-depends:      base            >= 4        && < 5,+                        semigroups      >= 0.13.0.1 && < 1+    exposed-modules:    Music.Pitch.Literal+                        Music.Pitch.Literal.Pitch+                        Music.Pitch.Literal.Interval+                        Music.Pitch.Augmentable+                        Music.Pitch.Alterable+    hs-source-dirs:     src+    default-language:   Haskell2010
− src/Data/Semigroup/Applicative.hs
@@ -1,19 +0,0 @@--module Data.Semigroup.Applicative where--import Control.Applicative-import Data.Semigroup---- TODO move to semigroups package-instance Functor First where-    fmap f (First x) = First (f x)-instance Applicative First where-    pure x = First x-    First f <*> First x = First (f x)--instance Functor Last where-    fmap f (Last x) = Last (f x)-instance Applicative Last where-    pure x = Last x-    Last f <*> Last x = Last (f x)-
+ src/Music/Pitch/Alterable.hs view
@@ -0,0 +1,56 @@++{-# LANGUAGE GeneralizedNewtypeDeriving, StandaloneDeriving #-}++------------------------------------------------------------------------------------+-- |+-- Copyright   : (c) Hans Hoglund 2012+--+-- License     : BSD-style+--+-- Maintainer  : hans@hanshoglund.se+-- Stability   : experimental+-- Portability : non-portable (TF,GNTD)+--+-------------------------------------------------------------------------------------++module Music.Pitch.Alterable (+        -- * Alterable class+        Alterable(..),+  ) where++import Data.Ratio++-- |+-- Class of things that can be altered.+--+-- > accidental (sharpen a) = sharpen (accidental a)+-- > accidental (flatten a) = flatten (accidental a)+-- > sharpen . flatten      = id+--+class Alterable a where+    -- | +    -- Increase the given pitch by one.+    -- +    sharpen :: a -> a++    -- | +    -- Decrease the given pitch by one.+    -- +    flatten :: a -> a+++instance Alterable a => Alterable (b -> a) where+    sharpen = fmap sharpen+    flatten = fmap flatten++instance Alterable Double where+    sharpen = (+ 1)+    flatten = (subtract 1)++instance Alterable Integer where+    sharpen = (+ 1)+    flatten = (subtract 1)++instance Integral a => Alterable (Ratio a) where+    sharpen = (+ 1)+    flatten = (subtract 1)
+ src/Music/Pitch/Augmentable.hs view
@@ -0,0 +1,52 @@++{-# LANGUAGE GeneralizedNewtypeDeriving, StandaloneDeriving #-}++------------------------------------------------------------------------------------+-- |+-- Copyright   : (c) Hans Hoglund 2012+--+-- License     : BSD-style+--+-- Maintainer  : hans@hanshoglund.se+-- Stability   : experimental+-- Portability : non-portable (TF,GNTD)+--+-------------------------------------------------------------------------------------++module Music.Pitch.Augmentable (+        -- * Augmentable class+        Augmentable(..),+  ) where++import Data.Ratio++-- |+-- Class of types that can be augmented.+--+-- > quality (augment a)  = augment (quality a)+-- > quality (diminish a) = diminish (quality a)+-- > augment . diminish   = id+--+class Augmentable a where++    -- | +    -- Increase the size of this interval by one.+    --+    augment :: a -> a++    -- | +    -- Decrease the size of this interval by one.+    --+    diminish :: a -> a++instance Augmentable Double where+    augment  = (+ 1)+    diminish = (subtract 1)++instance Augmentable Integer where+    augment  = (+ 1)+    diminish = (subtract 1)++instance Integral a => Augmentable (Ratio a) where+    augment  = (+ 1)+    diminish = (subtract 1)
src/Music/Pitch/Literal/Interval.hs view
@@ -41,7 +41,6 @@   ) where  import Data.Semigroup-import Data.Semigroup.Applicative () import Control.Applicative  newtype IntervalL = IntervalL (Integer, Integer, Integer)@@ -68,73 +67,73 @@ instance IsInterval Integer where     fromInterval (IntervalL (o, d, c)) = o * 12 + c -d1   = fromInterval $ IntervalL (0,0,-1)-_P1  = fromInterval $ IntervalL (0,0,0)-_A1  = fromInterval $ IntervalL (0,0,1)+d1   = fromInterval $ IntervalL (0,0,-1)+_P1  = fromInterval $ IntervalL (0,0,0)+_A1  = fromInterval $ IntervalL (0,0,1) -d2   = fromInterval $ IntervalL (0,1,0)-m2   = fromInterval $ IntervalL (0,1,1)-_M2  = fromInterval $ IntervalL (0,1,2)-_A2  = fromInterval $ IntervalL (0,1,3)+d2   = fromInterval $ IntervalL (0,1,0)+m2   = fromInterval $ IntervalL (0,1,1)+_M2  = fromInterval $ IntervalL (0,1,2)+_A2  = fromInterval $ IntervalL (0,1,3) -d3   = fromInterval $ IntervalL (0,2,2)-m3   = fromInterval $ IntervalL (0,2,3)-_M3  = fromInterval $ IntervalL (0,2,4)-_A3  = fromInterval $ IntervalL (0,2,5)+d3   = fromInterval $ IntervalL (0,2,2)+m3   = fromInterval $ IntervalL (0,2,3)+_M3  = fromInterval $ IntervalL (0,2,4)+_A3  = fromInterval $ IntervalL (0,2,5) -d4   = fromInterval $ IntervalL (0,3,4)-_P4  = fromInterval $ IntervalL (0,3,5)-_A4  = fromInterval $ IntervalL (0,3,6)+d4   = fromInterval $ IntervalL (0,3,4)+_P4  = fromInterval $ IntervalL (0,3,5)+_A4  = fromInterval $ IntervalL (0,3,6) -d5   = fromInterval $ IntervalL (0,4,6)-_P5  = fromInterval $ IntervalL (0,4,7)-_A5  = fromInterval $ IntervalL (0,4,8)+d5   = fromInterval $ IntervalL (0,4,6)+_P5  = fromInterval $ IntervalL (0,4,7)+_A5  = fromInterval $ IntervalL (0,4,8) -d6   = fromInterval $ IntervalL (0,5,7)-m6   = fromInterval $ IntervalL (0,5,8)-_M6  = fromInterval $ IntervalL (0,5,9)-_A6  = fromInterval $ IntervalL (0,5,10)+d6   = fromInterval $ IntervalL (0,5,7)+m6   = fromInterval $ IntervalL (0,5,8)+_M6  = fromInterval $ IntervalL (0,5,9)+_A6  = fromInterval $ IntervalL (0,5,10) -d7   = fromInterval $ IntervalL (0,6,9)-m7   = fromInterval $ IntervalL (0,6,10)-_M7  = fromInterval $ IntervalL (0,6,11)-_A7  = fromInterval $ IntervalL (0,6,12)+d7   = fromInterval $ IntervalL (0,6,9)+m7   = fromInterval $ IntervalL (0,6,10)+_M7  = fromInterval $ IntervalL (0,6,11)+_A7  = fromInterval $ IntervalL (0,6,12) -d8   = fromInterval $ IntervalL (1,0,-1)-_P8  = fromInterval $ IntervalL (1,0,0)-_A8  = fromInterval $ IntervalL (1,0,1)+d8   = fromInterval $ IntervalL (1,0,-1)+_P8  = fromInterval $ IntervalL (1,0,0)+_A8  = fromInterval $ IntervalL (1,0,1) -d9   = fromInterval $ IntervalL (1,1,0)-m9   = fromInterval $ IntervalL (1,1,1)-_M9  = fromInterval $ IntervalL (1,1,2)-_A9  = fromInterval $ IntervalL (1,1,3)+d9   = fromInterval $ IntervalL (1,1,0)+m9   = fromInterval $ IntervalL (1,1,1)+_M9  = fromInterval $ IntervalL (1,1,2)+_A9  = fromInterval $ IntervalL (1,1,3) -d10  = fromInterval $ IntervalL (1,2,2)-m10  = fromInterval $ IntervalL (1,2,3)-_M10  = fromInterval $ IntervalL (1,2,4)-_A10 = fromInterval $ IntervalL (1,2,5)+d10  = fromInterval $ IntervalL (1,2,2)+m10  = fromInterval $ IntervalL (1,2,3)+_M10  = fromInterval $ IntervalL (1,2,4)+_A10 = fromInterval $ IntervalL (1,2,5) -d11  = fromInterval $ IntervalL (1,3,4)-_P11 = fromInterval $ IntervalL (1,3,5)-_A11 = fromInterval $ IntervalL (1,3,6)+d11  = fromInterval $ IntervalL (1,3,4)+_P11 = fromInterval $ IntervalL (1,3,5)+_A11 = fromInterval $ IntervalL (1,3,6) -d12  = fromInterval $ IntervalL (1,4,6)-_P12 = fromInterval $ IntervalL (1,4,7)-_A12 = fromInterval $ IntervalL (1,4,8)+d12  = fromInterval $ IntervalL (1,4,6)+_P12 = fromInterval $ IntervalL (1,4,7)+_A12 = fromInterval $ IntervalL (1,4,8) -d13  = fromInterval $ IntervalL (1,5,7)-m13  = fromInterval $ IntervalL (1,5,8)-_M13 = fromInterval $ IntervalL (1,5,9)-_A13 = fromInterval $ IntervalL (1,5,10)+d13  = fromInterval $ IntervalL (1,5,7)+m13  = fromInterval $ IntervalL (1,5,8)+_M13 = fromInterval $ IntervalL (1,5,9)+_A13 = fromInterval $ IntervalL (1,5,10) -d14  = fromInterval $ IntervalL (1,6,9)-m14  = fromInterval $ IntervalL (1,6,10)-_M14 = fromInterval $ IntervalL (1,6,11)-_A14 = fromInterval $ IntervalL (1,6,12)+d14  = fromInterval $ IntervalL (1,6,9)+m14  = fromInterval $ IntervalL (1,6,10)+_M14 = fromInterval $ IntervalL (1,6,11)+_A14 = fromInterval $ IntervalL (1,6,12) -d15  = fromInterval $ IntervalL (2,0,-1)-_P15 = fromInterval $ IntervalL (2,0,0)-_A15 = fromInterval $ IntervalL (2,0,1)+d15  = fromInterval $ IntervalL (2,0,-1)+_P15 = fromInterval $ IntervalL (2,0,0)+_A15 = fromInterval $ IntervalL (2,0,1)   asInteger :: Integer -> Integer
src/Music/Pitch/Literal/Pitch.hs view
@@ -43,7 +43,6 @@   ) where  import Data.Semigroup-import Data.Semigroup.Applicative () import Control.Applicative  -- Pitch literal, defined as @(class, alteration, octave)@, where@@ -77,7 +76,7 @@     fromPitch = pure . fromPitch  instance IsPitch Double where-    fromPitch (PitchL (pc, sem, oct)) = fromIntegral $ semitones sem + diatonic pc + (oct+1) * 12+    fromPitch (PitchL (pc, sem, oct)) = fromIntegral $ semitones sem + diatonic pc + oct * 12         where             semitones = maybe 0 round             diatonic pc = case pc of@@ -90,7 +89,7 @@                 6 -> 11  instance IsPitch Integer where-    fromPitch (PitchL (pc, sem, oct)) = fromIntegral $ semitones sem + diatonic pc + (oct+1) * 12+    fromPitch (PitchL (pc, sem, oct)) = fromIntegral $ semitones sem + diatonic pc + oct * 12         where             semitones = maybe 0 round             diatonic pc = case pc of@@ -102,123 +101,123 @@                 5 -> 9                 6 -> 11 -cs'' = fromPitch $ PitchL (0, Just 1, 6)-ds'' = fromPitch $ PitchL (1, Just 1, 6)-es'' = fromPitch $ PitchL (2, Just 1, 6)-fs'' = fromPitch $ PitchL (3, Just 1, 6)-gs'' = fromPitch $ PitchL (4, Just 1, 6)-as'' = fromPitch $ PitchL (5, Just 1, 6)-bs'' = fromPitch $ PitchL (6, Just 1, 6)+cs'' = fromPitch $ PitchL (0, Just 1, 2)+ds'' = fromPitch $ PitchL (1, Just 1, 2)+es'' = fromPitch $ PitchL (2, Just 1, 2)+fs'' = fromPitch $ PitchL (3, Just 1, 2)+gs'' = fromPitch $ PitchL (4, Just 1, 2)+as'' = fromPitch $ PitchL (5, Just 1, 2)+bs'' = fromPitch $ PitchL (6, Just 1, 2) -c''  = fromPitch $ PitchL (0, Nothing, 6)-d''  = fromPitch $ PitchL (1, Nothing, 6)-e''  = fromPitch $ PitchL (2, Nothing, 6)-f''  = fromPitch $ PitchL (3, Nothing, 6)-g''  = fromPitch $ PitchL (4, Nothing, 6)-a''  = fromPitch $ PitchL (5, Nothing, 6)-b''  = fromPitch $ PitchL (6, Nothing, 6)+c''  = fromPitch $ PitchL (0, Nothing, 2)+d''  = fromPitch $ PitchL (1, Nothing, 2)+e''  = fromPitch $ PitchL (2, Nothing, 2)+f''  = fromPitch $ PitchL (3, Nothing, 2)+g''  = fromPitch $ PitchL (4, Nothing, 2)+a''  = fromPitch $ PitchL (5, Nothing, 2)+b''  = fromPitch $ PitchL (6, Nothing, 2) -cb'' = fromPitch $ PitchL (0, Just (-1), 6)-db'' = fromPitch $ PitchL (1, Just (-1), 6)-eb'' = fromPitch $ PitchL (2, Just (-1), 6)-fb'' = fromPitch $ PitchL (3, Just (-1), 6)-gb'' = fromPitch $ PitchL (4, Just (-1), 6)-ab'' = fromPitch $ PitchL (5, Just (-1), 6)-bb'' = fromPitch $ PitchL (6, Just (-1), 6)+cb'' = fromPitch $ PitchL (0, Just (-1), 2)+db'' = fromPitch $ PitchL (1, Just (-1), 2)+eb'' = fromPitch $ PitchL (2, Just (-1), 2)+fb'' = fromPitch $ PitchL (3, Just (-1), 2)+gb'' = fromPitch $ PitchL (4, Just (-1), 2)+ab'' = fromPitch $ PitchL (5, Just (-1), 2)+bb'' = fromPitch $ PitchL (6, Just (-1), 2) -cs'  = fromPitch $ PitchL (0, Just 1, 5)-ds'  = fromPitch $ PitchL (1, Just 1, 5)-es'  = fromPitch $ PitchL (2, Just 1, 5)-fs'  = fromPitch $ PitchL (3, Just 1, 5)-gs'  = fromPitch $ PitchL (4, Just 1, 5)-as'  = fromPitch $ PitchL (5, Just 1, 5)-bs'  = fromPitch $ PitchL (6, Just 1, 5)+cs'  = fromPitch $ PitchL (0, Just 1, 1)+ds'  = fromPitch $ PitchL (1, Just 1, 1)+es'  = fromPitch $ PitchL (2, Just 1, 1)+fs'  = fromPitch $ PitchL (3, Just 1, 1)+gs'  = fromPitch $ PitchL (4, Just 1, 1)+as'  = fromPitch $ PitchL (5, Just 1, 1)+bs'  = fromPitch $ PitchL (6, Just 1, 1) -c'   = fromPitch $ PitchL (0, Nothing, 5)-d'   = fromPitch $ PitchL (1, Nothing, 5)-e'   = fromPitch $ PitchL (2, Nothing, 5)-f'   = fromPitch $ PitchL (3, Nothing, 5)-g'   = fromPitch $ PitchL (4, Nothing, 5)-a'   = fromPitch $ PitchL (5, Nothing, 5)-b'   = fromPitch $ PitchL (6, Nothing, 5)+c'   = fromPitch $ PitchL (0, Nothing, 1)+d'   = fromPitch $ PitchL (1, Nothing, 1)+e'   = fromPitch $ PitchL (2, Nothing, 1)+f'   = fromPitch $ PitchL (3, Nothing, 1)+g'   = fromPitch $ PitchL (4, Nothing, 1)+a'   = fromPitch $ PitchL (5, Nothing, 1)+b'   = fromPitch $ PitchL (6, Nothing, 1) -cb'  = fromPitch $ PitchL (0, Just (-1), 5)-db'  = fromPitch $ PitchL (1, Just (-1), 5)-eb'  = fromPitch $ PitchL (2, Just (-1), 5)-fb'  = fromPitch $ PitchL (3, Just (-1), 5)-gb'  = fromPitch $ PitchL (4, Just (-1), 5)-ab'  = fromPitch $ PitchL (5, Just (-1), 5)-bb'  = fromPitch $ PitchL (6, Just (-1), 5)+cb'  = fromPitch $ PitchL (0, Just (-1), 1)+db'  = fromPitch $ PitchL (1, Just (-1), 1)+eb'  = fromPitch $ PitchL (2, Just (-1), 1)+fb'  = fromPitch $ PitchL (3, Just (-1), 1)+gb'  = fromPitch $ PitchL (4, Just (-1), 1)+ab'  = fromPitch $ PitchL (5, Just (-1), 1)+bb'  = fromPitch $ PitchL (6, Just (-1), 1) -cs   = fromPitch $ PitchL (0, Just 1, 4)-ds   = fromPitch $ PitchL (1, Just 1, 4)-es   = fromPitch $ PitchL (2, Just 1, 4)-fs   = fromPitch $ PitchL (3, Just 1, 4)-gs   = fromPitch $ PitchL (4, Just 1, 4)-as   = fromPitch $ PitchL (5, Just 1, 4)-bs   = fromPitch $ PitchL (6, Just 1, 4)+cs   = fromPitch $ PitchL (0, Just 1, 0)+ds   = fromPitch $ PitchL (1, Just 1, 0)+es   = fromPitch $ PitchL (2, Just 1, 0)+fs   = fromPitch $ PitchL (3, Just 1, 0)+gs   = fromPitch $ PitchL (4, Just 1, 0)+as   = fromPitch $ PitchL (5, Just 1, 0)+bs   = fromPitch $ PitchL (6, Just 1, 0) -c    = fromPitch $ PitchL (0, Nothing, 4)-d    = fromPitch $ PitchL (1, Nothing, 4)-e    = fromPitch $ PitchL (2, Nothing, 4)-f    = fromPitch $ PitchL (3, Nothing, 4)-g    = fromPitch $ PitchL (4, Nothing, 4)-a    = fromPitch $ PitchL (5, Nothing, 4)-b    = fromPitch $ PitchL (6, Nothing, 4)+c    = fromPitch $ PitchL (0, Nothing, 0)+d    = fromPitch $ PitchL (1, Nothing, 0)+e    = fromPitch $ PitchL (2, Nothing, 0)+f    = fromPitch $ PitchL (3, Nothing, 0)+g    = fromPitch $ PitchL (4, Nothing, 0)+a    = fromPitch $ PitchL (5, Nothing, 0)+b    = fromPitch $ PitchL (6, Nothing, 0) -cb   = fromPitch $ PitchL (0, Just (-1), 4)-db   = fromPitch $ PitchL (1, Just (-1), 4)-eb   = fromPitch $ PitchL (2, Just (-1), 4)-fb   = fromPitch $ PitchL (3, Just (-1), 4)-gb   = fromPitch $ PitchL (4, Just (-1), 4)-ab   = fromPitch $ PitchL (5, Just (-1), 4)-bb   = fromPitch $ PitchL (6, Just (-1), 4)+cb   = fromPitch $ PitchL (0, Just (-1), 0)+db   = fromPitch $ PitchL (1, Just (-1), 0)+eb   = fromPitch $ PitchL (2, Just (-1), 0)+fb   = fromPitch $ PitchL (3, Just (-1), 0)+gb   = fromPitch $ PitchL (4, Just (-1), 0)+ab   = fromPitch $ PitchL (5, Just (-1), 0)+bb   = fromPitch $ PitchL (6, Just (-1), 0) -cs_  = fromPitch $ PitchL (0, Just 1, 3)-ds_  = fromPitch $ PitchL (1, Just 1, 3)-es_  = fromPitch $ PitchL (2, Just 1, 3)-fs_  = fromPitch $ PitchL (3, Just 1, 3)-gs_  = fromPitch $ PitchL (4, Just 1, 3)-as_  = fromPitch $ PitchL (5, Just 1, 3)-bs_  = fromPitch $ PitchL (6, Just 1, 3)+cs_  = fromPitch $ PitchL (0, Just 1, -1)+ds_  = fromPitch $ PitchL (1, Just 1, -1)+es_  = fromPitch $ PitchL (2, Just 1, -1)+fs_  = fromPitch $ PitchL (3, Just 1, -1)+gs_  = fromPitch $ PitchL (4, Just 1, -1)+as_  = fromPitch $ PitchL (5, Just 1, -1)+bs_  = fromPitch $ PitchL (6, Just 1, -1) -c_   = fromPitch $ PitchL (0, Nothing, 3)-d_   = fromPitch $ PitchL (1, Nothing, 3)-e_   = fromPitch $ PitchL (2, Nothing, 3)-f_   = fromPitch $ PitchL (3, Nothing, 3)-g_   = fromPitch $ PitchL (4, Nothing, 3)-a_   = fromPitch $ PitchL (5, Nothing, 3)-b_   = fromPitch $ PitchL (6, Nothing, 3)+c_   = fromPitch $ PitchL (0, Nothing, -1)+d_   = fromPitch $ PitchL (1, Nothing, -1)+e_   = fromPitch $ PitchL (2, Nothing, -1)+f_   = fromPitch $ PitchL (3, Nothing, -1)+g_   = fromPitch $ PitchL (4, Nothing, -1)+a_   = fromPitch $ PitchL (5, Nothing, -1)+b_   = fromPitch $ PitchL (6, Nothing, -1) -cb_  = fromPitch $ PitchL (0, Just (-1), 3)-db_  = fromPitch $ PitchL (1, Just (-1), 3)-eb_  = fromPitch $ PitchL (2, Just (-1), 3)-fb_  = fromPitch $ PitchL (3, Just (-1), 3)-gb_  = fromPitch $ PitchL (4, Just (-1), 3)-ab_  = fromPitch $ PitchL (5, Just (-1), 3)-bb_  = fromPitch $ PitchL (6, Just (-1), 3)+cb_  = fromPitch $ PitchL (0, Just (-1), -1)+db_  = fromPitch $ PitchL (1, Just (-1), -1)+eb_  = fromPitch $ PitchL (2, Just (-1), -1)+fb_  = fromPitch $ PitchL (3, Just (-1), -1)+gb_  = fromPitch $ PitchL (4, Just (-1), -1)+ab_  = fromPitch $ PitchL (5, Just (-1), -1)+bb_  = fromPitch $ PitchL (6, Just (-1), -1) -cs__ = fromPitch $ PitchL (0, Just 1, 2)-ds__ = fromPitch $ PitchL (1, Just 1, 2)-es__ = fromPitch $ PitchL (2, Just 1, 2)-fs__ = fromPitch $ PitchL (3, Just 1, 2)-gs__ = fromPitch $ PitchL (4, Just 1, 2)-as__ = fromPitch $ PitchL (5, Just 1, 2)-bs__ = fromPitch $ PitchL (6, Just 1, 2)+cs__ = fromPitch $ PitchL (0, Just 1, -2)+ds__ = fromPitch $ PitchL (1, Just 1, -2)+es__ = fromPitch $ PitchL (2, Just 1, -2)+fs__ = fromPitch $ PitchL (3, Just 1, -2)+gs__ = fromPitch $ PitchL (4, Just 1, -2)+as__ = fromPitch $ PitchL (5, Just 1, -2)+bs__ = fromPitch $ PitchL (6, Just 1, -2) -c__  = fromPitch $ PitchL (0, Nothing, 2)-d__  = fromPitch $ PitchL (1, Nothing, 2)-e__  = fromPitch $ PitchL (2, Nothing, 2)-f__  = fromPitch $ PitchL (3, Nothing, 2)-g__  = fromPitch $ PitchL (4, Nothing, 2)-a__  = fromPitch $ PitchL (5, Nothing, 2)-b__  = fromPitch $ PitchL (6, Nothing, 2)+c__  = fromPitch $ PitchL (0, Nothing, -2)+d__  = fromPitch $ PitchL (1, Nothing, -2)+e__  = fromPitch $ PitchL (2, Nothing, -2)+f__  = fromPitch $ PitchL (3, Nothing, -2)+g__  = fromPitch $ PitchL (4, Nothing, -2)+a__  = fromPitch $ PitchL (5, Nothing, -2)+b__  = fromPitch $ PitchL (6, Nothing, -2) -cb__ = fromPitch $ PitchL (0, Just (-1), 2)-db__ = fromPitch $ PitchL (1, Just (-1), 2)-eb__ = fromPitch $ PitchL (2, Just (-1), 2)-fb__ = fromPitch $ PitchL (3, Just (-1), 2)-gb__ = fromPitch $ PitchL (4, Just (-1), 2)-ab__ = fromPitch $ PitchL (5, Just (-1), 2)-bb__ = fromPitch $ PitchL (6, Just (-1), 2)+cb__ = fromPitch $ PitchL (0, Just (-1), -2)+db__ = fromPitch $ PitchL (1, Just (-1), -2)+eb__ = fromPitch $ PitchL (2, Just (-1), -2)+fb__ = fromPitch $ PitchL (3, Just (-1), -2)+gb__ = fromPitch $ PitchL (4, Just (-1), -2)+ab__ = fromPitch $ PitchL (5, Just (-1), -2)+bb__ = fromPitch $ PitchL (6, Just (-1), -2)