{- | Christman song "O Heiland, reiß die Himmel auf" from "Du wurdest meine Sonne - Heft I: Advents- und Weihnachtslieder in einfachen Sätzen" Evangelische Verlagsanstalt Berlin fileFromGeneralMIDIMusic "heiland.mid" song -} module Haskore.Example.HeilandHimmel where import Haskore.Melody.Standard as Melody import Haskore.Music.GeneralMIDI as MidiMusic noAttr :: [Melody.NoteAttributes -> Melody.T] -> Melody.T noAttr = line . map ($ na) melody0, melody1, melody2, melody3, bass0, bass1, bass2, bass3 :: Melody.T melody0 = d 0 qn na +:+ (d 0 hn na =:= f 0 hn na) +:+ (e 0 qn na =:= g 0 qn na) +:+ ((f 0 qn na +:+ e 0 qn na) =:= a 0 hn na) +:+ d 0 qn na +:+ (d 0 hn na +:+ cs 0 qn na =:= f 0 qn na +:+ e 0 hn na) +:+ d 0 dhn na bass0 = noAttr $ [d 1 qn, d 1 qn, c 1 qn, bf 0 qn, a 0 hn, bf 0 qn, bf 0 qn, g 0 qn, a 0 qn, d 0 qn, a 0 qn, d 1 qn] melody1 = (f 0 qn na =:= a 0 qn na) +:+ (e 0 qn na =:= a 0 qn na) +:+ (d 0 qn na =:= b 0 qn na) +:+ ((c 0 qn na +:+ d 0 qn na) =:= c 1 hn na) +:+ f 0 qn na +:+ (f 0 hn na +:+ e 0 qn na =:= a 0 qn na +:+ g 0 hn na) +:+ f 0 dhn na bass1 = noAttr $ [d 1 qn, c 1 qn, b 0 qn, a 0 hn, d 1 qn, d 1 qn, bf 0 qn, c 1 qn, f 0 qn, c 1 qn, f 1 qn] melody2 = (g 0 hn na =:= c 1 qn na +:+ c 1 qn na) +:+ (f 0 qn na =:= c 1 qn na) +:+ (e 0 qn na +:+ g 0 qn na =:= c 1 hn na) +:+ a 0 qn na +:+ (a 0 qn na +:+ g 0 qn na =:= d 1 hn na) +:+ (f 0 qn na =:= d 1 qn na) +:+ (f 0 qn na +:+ d 0 qn na +:+ e 0 qn na =:= c 1 qn na) bass2 = noAttr $ [f 1 qn, e 1 qn, d 1 qn, c 1 qn, e 1 qn, f 1 qn, bf 0 dhn, c 1 qn, g 0 qn, c 0 qn] melody3 = (f 0 qn na =:= a 0 qn na) +:+ (e 0 qn na =:= a 0 qn na) +:+ (d 0 qn na =:= g 0 qn na) +:+ (d 0 qn na +:+ cs 0 qn na =:= a 0 hn na) +:+ (d 0 qn na =:= f 0 qn na) +:+ (d 0 hn na +:+ cs 0 qn na =:= g 0 qn na +:+ e 0 hn na) +:+ d 0 qn na bass3 = noAttr $ [d 0 hn, e 0 qn, a 0 hn, bf 0 qn, bf 0 qn, g 0 qn, a 0 qn, d 0 hn] melody :: Melody.T melody = melody0 +:+ melody1 +:+ melody2 +:+ melody3 bass :: Melody.T bass = bass0 +:+ bass1 +:+ bass2 +:+ bass3 song :: MidiMusic.T song = changeTempo 1.5 $ MidiMusic.fromStdMelody MidiMusic.PercussiveOrgan (transpose ( 12) melody) =:= MidiMusic.fromStdMelody MidiMusic.StringEnsemble1 (transpose (-12) bass)