module Haskore.Example.BesondrerTag where
import Haskore.Melody.Standard as Melody
import Haskore.Music.GeneralMIDI as MidiMusic
import qualified Haskore.Music as Music
noAttr :: [Melody.NoteAttributes -> Melody.T] -> Melody.T
noAttr = line . map ($ na)
bar0, bar1, bass0, bass1 :: Melody.T
bar0 = noAttr $
[b 0 qn, g 0 qn, a 0 qn, d 1 en, c 1 en, b 0 qn, a 0 en, g 0 en, a 0 hn,
g 0 dqn, fs 0 en, e 0 en, fs 0 en, g 0 qn, a 0 qn, b 0 qn, a 0 hn, g 0 hn]
bass0 = noAttr $
[g 1 hn, d 1 hn, e 1 hn, d 1 hn, e 1 hn, c 1 hn, d 1 hn, d 1 hn, g 1 hn,
g 1 hn, fs 1 hn, e 1 hn, d 1 hn, b 0 hn, c 1 hn, cs 1 hn, d 1 hn, g 1 hn]
bar1 = noAttr $
[d 0 dqn, d 0 en, e 0 qn, fs 0 qn, g 0 qn, a 0 en, g 0 en, fs 0 qn, d 0 qn,
g 0 dqn, g 0 en, a 0 qn, b 0 qn, c 1 qn, b 0 qn, a 0 hn, g 0 hn]
bass1 = noAttr $
[d 1 hn, c 1 qn, a 0 qn, e 1 qn, cs 1 qn, d 1 qn, c 1 qn,
b 0 hn, c 1 qn, cs 1 qn, d 1 hn, d 1 hn, g 1 hn]
melody :: Melody.T
melody = Music.replicate 2 bar0 +:+ bar1
bass :: Melody.T
bass = bass0 +:+ bass1
song :: MidiMusic.T
song =
changeTempo 2
(MidiMusic.fromStdMelody MidiMusic.AcousticGrandPiano (transpose ( 24) melody) =:=
MidiMusic.fromStdMelody MidiMusic.StringEnsemble1 (transpose (12) bass))