Advertisement
Guest User

Untitled

a guest
Feb 11th, 2016
52
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.31 KB | None | 0 0
  1. cps 1
  2.  
  3. -- for `espeak`
  4. import System.Cmd
  5.  
  6. -- lazy helpers
  7. let wf0 n = within(0, n)
  8. sw f = sometimes(wf0 0.5 f)
  9. sw' d h f = sometimes(within (d, h) f)
  10. nm p = note $ toMIDI p
  11. ---
  12. ch :: Int -> [Int] -> Pattern Int ; ch n chord = listToPat [ch + n | ch <- chord]
  13. --- q $ note (cho 48 "1 [~ 1] 1 1 " [0, 3, 7, 5])
  14. cho n pat chord = preplace(1,1) pat $ listToPat [ch + n | ch <- chord]
  15. --- q $ note (cho' 48 3 "1 [~ 1] 1 1 " [0, 3, 7, 5])
  16. cho' n off pat chord = cho (n+off) pat chord
  17. --- q $ slowcho [47, 45, 42] "[1 !] 1 1 1" [0, 3, 0, 3]
  18. slowcho nlist pat chord = slowcat[note (cho n pat chord) | n <- nlist]
  19. --- q $ slowcho' [47, 45, 42] 3 "[1 !] 1 1 1" [0, 3, 0, 3]
  20. slowcho' nlist off pat chord = slowcat[note (cho' n off pat chord) | n <- nlist]
  21. -- q $ slowcat[note (cho 60 "1 1 1" (rotate i [0,3,7,10])) | i <- [0..3]]
  22. rotate :: Int -> [a] -> [a]
  23. rotate _ [] = []
  24. rotate n xs = zipWith const (drop n (cycle xs)) xs
  25. -- q $ chrot [51, 48] "1 1 1 1" [0, 3, 5, 7] 3
  26. chrot nlist pat chord chordn = slowcat[slowcho nlist pat (rotate i chord) | i <- [0..chordn]]
  27. -- espeak: msg, voice, amp, pitch, speed
  28. espeak' m v a p s = system $ "espeak -v " ++ v ++ " -a " ++ a ++ " -p " ++ p ++ " -s " ++ s ++ " \"" ++ m ++ "\""
  29. espeak m = espeak' m "en" "25" "50" "160"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement