Guest User

Untitled

a guest
Nov 23rd, 2017
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.11 KB | None | 0 0
  1. import Euterpea
  2.  
  3. import System.Random
  4. import Data.Map hiding (map,foldr,foldl)
  5.  
  6. fisherYatesStep :: RandomGen g => (Map Int a, g) -> (Int, a) -> (Map Int a, g)
  7. fisherYatesStep (m, gen) (i, x) = ((insert j x . insert i (m ! j)) m, gen')
  8. where
  9. (j, gen') = randomR (0, i) gen
  10.  
  11. fisherYates :: RandomGen g => g -> [a] -> ([a], g)
  12. fisherYates gen [] = ([], gen)
  13. fisherYates gen l =
  14. toElems $ foldl fisherYatesStep (initial (head l) gen) (numerate (tail l))
  15. where
  16. toElems (x, y) = (elems x, y)
  17. numerate = zip [1..]
  18. initial x gen = (singleton 0 x, gen)
  19.  
  20. dMinor = d 4 wn :=: f 4 wn :=: a 4 wn
  21. gMajor = g 4 wn :=: b 4 wn :=: d 5 wn
  22. cMajor = c 4 bn :=: e 4 bn :=: g 4 bn
  23.  
  24. t251 = dMinor :+: gMajor :+: cMajor
  25.  
  26. notes = [c,d,e,f,g,a,b]
  27.  
  28. l = map (\x -> x 4 hn) notes
  29. m = foldr (:+:) (rest hn) l
  30.  
  31. main = do g <- getStdGen
  32. let (sf,bla) = fisherYates g [60..71]
  33. nnotes = map (\x -> note en $ pitch x) sf
  34. msc = foldr (:+:) (rest hn) nnotes
  35. playDev 2 $ msc
  36. playDev 2 $ msc
  37. print msc
  38.  
  39. --main = playDev 2 $ c 4 wn
  40. --main = playDev 2 $ t251
  41.  
  42. --main = playDev 2 m
Add Comment
Please, Sign In to add comment