{-# LANGUAGE TypeFamilies #-}
import System.Process (runCommand)
import Music.Prelude.Basic
import Music.Pitch -- DEBUG
import qualified Music.Lilypond as Lilypond -- DEBUG
import qualified Music.Score as Score
main = do
-- writeMidi "test.mid" score
-- writeXml "test.xml" $ score^/4
-- openXml score
openLy score
-- playMidiIO "Graphic MIDI" $ score^/10
subject = legato $ accent $ scat [c,cs^*2,d,db]
score :: Score Note
score =
(times 5 $ up _P5 $ subject ^*(2/3 * 1/4))
</>
(times 5 $ up _M3 $ subject ^*(1/4))
</>
(times 5 $ up _P1 $ subject ^*(2/3 * 1/2))
</>
(times 5 $ down _P4 $ subject ^*(1/2))
-- TODO
instance HasPitch Pitch where { type Pitch Pitch = Pitch ; getPitch = id; modifyPitch = id }
instance Tiable Pitch where { beginTie = id ; endTie = id }
instance HasLilypond Pitch where
getLilypond d p = Lilypond.note (Lilypond.NotePitch (Lilypond.Pitch (pc,acc,oct+5)) Nothing) ^*(fromDurationT $ d*4)
where
pc = toEnum $ fromEnum $ name p
acc = fromIntegral $ accidental p
oct = fromIntegral $ octaves (p .-. c)