blob: 908ffaa09d697a2e1403ebc7527a99c437913b7e (
plain)
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
30
31
32
33
34
35
36
37
38
39
40
41
42
|
;;; ADDITIVE SYNTHESIS
;;; Risset Endless
;;; coded by Pedro Jose Morales
;;; pmorales@iele-ab.uclm.es
(setf *pmorales-path* (current-path))
(load (strcat *pmorales-path* "pjmg.lsp"))
(setf *twopi* (* 2 pi))
(defun bell-table ()
(setf *bell-table* (make-array 512))
(dotimes (i 512)
(setf (aref *bell-table* i)
(exp (* -4.8283 (- 1 (cos (* *twopi* (- i 255.5) (/ 511.0))))))))
(setf *bell-table* (snd-from-array 0.0 512 *bell-table*))
(setf *bell-table* (list *bell-table* (hz-to-step 1.0) T)))
(if (not (boundp '*bell-table*)) (bell-table))
(defun frq-table ()
(setf *frq-table*
(list (sim (pwe 1.0 16e-4) (const -1.0 1.0)) (hz-to-step 1.0) T)))
(if (not (boundp '*frq-table*)) (frq-table))
(defun endless-partial ()
(mult (osc (hz-to-step 0.025) 40 *bell-table*)
(fmosc (hz-to-step 16000) (scale 16000
(osc (hz-to-step 0.025) 40 *frq-table*)))))
(setf *endless-partial* (endless-partial))
(defun risset-endless ()
(scale 0.25 (apply #'sim (mapcar #'(lambda (x)
(at x (cue *endless-partial*)))
'(0.0 2.0 4.0 6.0 8.0 10.0 12.0
14.0 16.0 18.0 20.0)))))
(defun risset-endless-demo () (ss (risset-endless)))
|