-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathscheme.scm
29 lines (22 loc) · 864 Bytes
/
scheme.scm
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
(load "lib.scm")
(define (sqr freq t) (if (> 0 (sin (* t freq 2 pi))) 1 0)) ;; square signal (sort-of)
(define (rnd) (- (random 2.) 1)) ;; random number in [-1; 1]
(define (my-sound f t0)
(let ((freq f)
(l (mk-line-down t0 0.3)))
(lambda (t)
(+ (* (sqr freq t) 0.5)
(* (rnd) (* (l t) 0.5)) ))))
(define sequencer
(make-loop-seq :A4 :E4 :G4 :D4 :F4 :C4 :E4 :B3))
(define t1 0) ;; a timestamp
(define dt 0.7) ;; time increment
(define cur-freq 0) ;; current frequency
(define my-snd (my-sound 0 0)) ;; a sound object
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(define (f t in)
(if (>= t (+ t1 dt))
(begin
(set! my-snd (my-sound (note->freq (sequencer)) t))
(set! t1 t)))
(my-snd t))