/examples/temporal_recursion_101.scm

http://github.com/digego/extempore · Scheme · 30 lines · 15 code · 5 blank · 10 comment · 0 complexity · 682ed1dd6ed0564cff2cc5a8de81e620 MD5 · raw file

  1. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  2. ;
  3. ; Good old temporal recursion at it's simplest
  4. ;
  5. ;
  6. ; temporal recursion
  7. ;
  8. (define tr
  9. (lambda (t x rate)
  10. (println t x)
  11. (callback (+ t rate) 'tr (+ t rate) x rate)))
  12. (let ((t (now)))
  13. tr t "a" (* 4 44100))
  14. (tr t " b" (* 2 44100))
  15. (tr t " c" 44100))
  16. ;
  17. ; metro also works
  18. ;
  19. (define metro-test
  20. (lambda (beat x dur)
  21. (println x beat)
  22. (callback (*metro* (+ beat dur)) 'metro-test (+ beat dur)
  23. x dur)))
  24. (metro-test (*metro* 'get-beat 4.0) "A" 2)
  25. (metro-test (*metro* 'get-beat 4.0) "--B" 1/2)