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 +23/−25
- src/Data/Semigroup/Applicative.hs +0/−19
- src/Music/Pitch/Alterable.hs +56/−0
- src/Music/Pitch/Augmentable.hs +52/−0
- src/Music/Pitch/Literal/Interval.hs +53/−54
- src/Music/Pitch/Literal/Pitch.hs +107/−108
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)