module Weihnachten where
import Music
import MDL
-- import Haskore


-- Alle Jahre wieder
ajw :: Music
ajw = let o = 4 in 
       (g o dqn :+: a o en :+: g o qn :+: f o qn) :+:
       (e o hn  :+: d o hn) :+:
       (c o qn  :+: d o en :+: e o en :+: f o qn :+: e o qn) :+:
       d o dhn :+: qnr  :+:
       e o qn :+: g o qn :+: a o qn :+: g o qn :+:
       c (o+1) hn :+: b o qn :+: a o qn :+:
       g o qn :+: f o en :+: e o en :+: f o qn :+: g o qn :+:
       e o dhn :+: qnr 

ajw2 :: Music
ajw2 = let o = 4 in 
       (e o dqn :+: f o en :+: e o qn :+: d o qn) :+:
       (c o hn  :+: b (o-1) hn) :+:
       (c o qn  :+: b (o-1) en :+: c o en :+: d o qn :+: c o qn) :+:
       b (o-1) dhn :+: qnr :+:
       e o hn :+: f o qn :+: e o qn :+:
       a o hn :+: g o qn :+: f o qn :+:
       e o qn :+: d o en :+: c o en :+: d o qn :+: b (o-1) qn :+:
       c o dhn :+: qnr 


test1 =   Tempo 2 $ Instr Flute ajw 

test2 =  Tempo 2 $ Trans 5 (Instr Flute $ ajw  
         :=: Instr HammondOrgan ajw2)

fMaj = [ n 4 qn | n <- [f,a] ] ++ [c 5 qn]  
gMaj = [ n 4 qn | n <- [g,b] ] ++ [d 5 qn]
dMaj = [ n 4 qn | n <- [d,ff,a] ]
bMaj = [ n 4 qn | n <- [f,bs] ] ++ [d 5 qn]

ajw3 :: [Music]
ajw3 = let o = 4 in 
         [n (o-1) f, chord fMaj, n (o-1) c, chord cMaj,
          n (o-1) f, chord fMaj, n (o-1) c, chord cMaj,
          chord fMaj, qnr, n (o-1) e, n (o-1) f, 
          n (o-1) c, chord cMaj, chord cMaj, chord cMaj,
          n (o-1) f, chord fMaj, qnr,  chord fMaj,
          n (o-1) bs, chord bMaj, chord bMaj, chord bMaj,
          n (o-1) f, chord fMaj, n (o-1) c, chord cMaj,
          n (o-1) f, n (o+1) c, chord fMaj, qnr]
          where n o p = p o qn 

test3 =  Tempo 2 ((Trans 5  (Instr Flute $  ajw  
         :=: Instr Flute ajw2))
         :=: Instr HammondOrgan (line ajw3))
           
-- mehrere Strophen
repeatNM 	:: Int -> Music -> Music	
repeatNM 0 m = Rest 0
repeatNM n m = m :+: repeatNM (n-1) m	

test4 = repeatNM 3 test3 

-- rückwärts
-- revM :: Music  -> Music

test5 = revM test3

-- Begleitung
begleit = let p1 = perc LowTom qn			   
              p2 = perc AcousticSnare en		
          in Tempo 2 (Instr Percussion (cut 8 (repeatM
             		    ((p1 :+: qnr :+: p2 :+: qnr :+: p2 :+:
             		    		       p1 :+: p1 :+: qnr :+: p2 :+: enr)
        		    :=: roll en (perc ClosedHiHat 2) ) )))

test6 = test3 :=: begleit


