GhaSShee


Haskell Music


~~~ brew cask install simplesynth open -a SimpleSynth stack install Euterpea ghci λ> :m Euterpea λ> f l = mapM (\x -> play $ x (1/12)) l λ> r f l = do; f l; r f l λ> do; f [g 3,g 4];r f [a 4, b 4,d 5,c 5,c 5,e 5,d 5,d 5,g 5,fs 5,g 5,d 5,b 4, g 4,a 4,b 4,c 5,d 5,e 5,d 5,c 5,b 4,a 4,b 4,g 4, fs 4,g 4,a 4,d 4,fs 4,a 4,c 5,b 4,a 4,b 4,g 4,a 4, b 4,d 5,c 5,c 5,e 5,d 5,d 5,g 5,fs 5,g 5,d 5,b 4, g 4,a 4,b 4,e 4,d 5,c 5,b 4,a 4,g 4,d 4,g 4,fs 4, g 4,b 4] ~~~
~~~ λ> player l = play $ tempo 16 $ foldr (:+:) (a 0 0) $ map (\x -> x 1) l λ> r player [g 3,g 4,a 4,b 4,d 5,c 5,c 5,e 5,d 5,d 5,g 5,fs 5,g 5,d 5,b 4,g 4,a 4,b 4, c 5,d 5,e 5,d 5,c 5,b 4,a 4,b 4,g 4,fs 4,g 4,a 4,d 4,fs 4,a 4,c 5,b 4,a 4,b 4, g 4,a 4,b 4,d 5,c 5,c 5,e 5,d 5,d 5,g 5,fs 5,g 5,d 5,b 4,g 4,a 4,b 4,e 4,d 5,c 5, b 4,a 4,g 4,d 4,g 4,fs 4,g 4,b 4,d 5,g 5,d 5,b 4,g 4,b 4,d 5,f 5,d 5,b 4,g 4,b 4,d 5,e 5,c 5,a 4, fs 4,a 4,b 4,d 5,b 4,g 4,e 4,g 4,b 4,d 5,b 4,a 4,fs 4,a 4,b 4,d 5,c 5,b 4] ~~~ go up to ~~~ λ> player n l = play $ tempo n $ foldr (:+:) (a 0 0) $ map (\x -> x 1) l λ> r f max min n up l = do; f n l; if n==max then r f max min (n/2)(1/up) l else if n==min then r f max min(n * 2)(1/up) l else r f max min(n*up) up l λ> r player 16384 32 32 2 [g 2,g 4,a 4,b 4,d 5,c 5,c 5,e 5,d 5,d 5,g 5,fs 5,g 5, d 5,b 4,g 4,a 4,b 4,c 5,d 5,e 5,d 5,c 5,b 4,a 4,b 4,g 4,fs 4,g 4,a 4,d 4,fs 4, a 4,c 5,b 4,a 4,b 4,g 4,a 4,b 4,d 5,c 5,c 5,e 5,d 5,d 5,g 5,fs 5,g 5,d 5,b 4,g 4, a 4,b 4,e 4,d 5,c 5,b 4,a 4,g 4,d 4,g 4,fs 4,g 4,b 4,d 5,g 5,d 5,b 4,g 4] ~~~