module Main where
import Euterpea
import qualified Codec.Midi
-- primitive rock bass line
tonic = c 5 qn
dmnt = g 4 qn -- dominant
sdmnt = f 5 qn -- subdominant
noteList = [sdmnt, tonic, dmnt, tonic] >>= replicate 4
bassLine
= instrument ElectricBassPicked
$ foldr1 (:
+:
) noteList
-- primitive rock drum beat
chh = perc ClosedHiHat
drumBeat = instrument Percussion $ timesM (8 * 4) (chh en)
main = do
Codec.Midi.exportFile "duet.mid" (testMidi $ tempo (100/120) $ drumBeat :=: bassLine)
bW9kdWxlIE1haW4gd2hlcmUKCmltcG9ydCBFdXRlcnBlYQppbXBvcnQgcXVhbGlmaWVkIENvZGVjLk1pZGkKCgotLSBwcmltaXRpdmUgcm9jayBiYXNzIGxpbmUKdG9uaWMgPSBjIDUgcW4KZG1udCAgPSBnIDQgcW4gLS0gZG9taW5hbnQKc2RtbnQgPSBmIDUgcW4gLS0gc3ViZG9taW5hbnQKCm5vdGVMaXN0ID0gW3NkbW50LCB0b25pYywgZG1udCwgdG9uaWNdID4+PSByZXBsaWNhdGUgNApiYXNzTGluZSA9IGluc3RydW1lbnQgRWxlY3RyaWNCYXNzUGlja2VkICQgZm9sZHIxICg6KzopIG5vdGVMaXN0CgotLSBwcmltaXRpdmUgcm9jayBkcnVtIGJlYXQKY2hoID0gcGVyYyBDbG9zZWRIaUhhdApkcnVtQmVhdCA9IGluc3RydW1lbnQgUGVyY3Vzc2lvbiAkIHRpbWVzTSAoOCAqIDQpIChjaGggZW4pCgoKbWFpbiA6OiBJTyAoKQptYWluID0gIGRvCiAgICBDb2RlYy5NaWRpLmV4cG9ydEZpbGUgImR1ZXQubWlkIiAodGVzdE1pZGkgJCB0ZW1wbyAoMTAwLzEyMCkgJCBkcnVtQmVhdCA6PTogYmFzc0xpbmUpCgo=