module Pattern where import Pitch import Midi import List import Prelude ( Int, (*), ($) ) main, voice :: [Event (Channel Message)] ; main = voice ; en, qn, hn :: Time ; en = 200 ; qn = 2 * en ; hn = 2 * qn ; harmonies :: [[Pitch]] ; harmonies = [ c 4, e 4, g 4, c 5 ] : [ d 4, f 4, a 4, c 5 ] : [ b 3, d 4, g 4, b 4 ] : [ c 4, e 4, g 4, c 5 ] : []; pattern :: [ Int ] ; pattern = [0, 1, 2, 1, 2, 3, 2, 1] ; voice = channel 0 (program 0 ++ concatMap ( note en ) ( zipWith index ( concatMap ( replicate 8 ) $ cycle harmonies ) ( cycle pattern ) ) ) ; index :: [a] -> Int -> a ; index xs n = xs !! n ;