    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))