samer@0
|
1 (define set-step null)
|
samer@0
|
2 (define line-on null)
|
samer@0
|
3 (define line-off null)
|
samer@0
|
4 (define _lineout null)
|
samer@0
|
5
|
samer@0
|
6 (define-method (overlap-and-add x hop)
|
samer@0
|
7 (define oa (OverlapAndAdd. x hop))
|
samer@0
|
8 (define line (LineOut. (.output oa)))
|
samer@0
|
9 (.setWindow oa (Hanning.))
|
samer@0
|
10 (.setWindow line 0 hop)
|
samer@0
|
11 (addtasks oa line)
|
samer@0
|
12 (set! _lineout line)
|
samer@0
|
13 (set! set-step (lambda (h)
|
samer@0
|
14 (.setHop oa h)
|
samer@0
|
15 (.setWindow line 0 h)))
|
samer@0
|
16 )
|
samer@0
|
17
|
samer@0
|
18 (define-method (overlap-and-add sink x hop)
|
samer@0
|
19 (define oa (OverlapAndAdd. x hop))
|
samer@0
|
20 (.setWindow oa (Hanning.))
|
samer@0
|
21 (addtasks oa (.writer sink (.array (.output oa)) 0 hop))
|
samer@0
|
22 )
|
samer@0
|
23
|
samer@0
|
24 (define-method (lineout (linein LineIn))
|
samer@0
|
25 (put "audio.scale" 1.0)
|
samer@0
|
26 (let ((lineout (LineOut. (.output linein))))
|
samer@0
|
27 (.setWindow lineout 0 (.getStep linein))
|
samer@0
|
28 (set! set-step (lambda (n)
|
samer@0
|
29 (.setStep linein n)
|
samer@0
|
30 (.setWindow lineout 0 n)))
|
samer@0
|
31 (set! line-on (lambda ()
|
samer@0
|
32 (.starting lineout)
|
samer@0
|
33 (Thread.sleep 200L)
|
samer@0
|
34 (addafter linein lineout)))
|
samer@0
|
35 (set! line-off (lambda ()
|
samer@0
|
36 (remove lineout)
|
samer@0
|
37 (.stopping lineout)
|
samer@0
|
38 (Thread.sleep 200L)))))
|
samer@0
|
39
|
samer@0
|
40 (define-method (lineout (in Vec))
|
samer@0
|
41 (let ((lineout (LineOut. in) (n (.size in)))
|
samer@0
|
42 (tasklist (tasks)))
|
samer@0
|
43 (set! set-step (lambda (m)
|
samer@0
|
44 (.setWindow lineout (- n m) n)))
|
samer@0
|
45 (set! line-on (lambda ()
|
samer@0
|
46 (.starting lineout)
|
samer@0
|
47 (Thread.sleep 200L)
|
samer@0
|
48 (.addTask tasklist lineout)))
|
samer@0
|
49 (set! line-off (lambda ()
|
samer@0
|
50 (.removeTask tasklist lineout)
|
samer@0
|
51 (.stopping lineout)
|
samer@0
|
52 (Thread.sleep 200L)))))
|
samer@0
|
53
|
samer@0
|
54 (define-method (lineout n)
|
samer@0
|
55 (put "audio.scale" 32767.0)
|
samer@0
|
56 (let ( (lineout (LineOut. n)))
|
samer@0
|
57 (set! set-step (lambda (m)
|
samer@0
|
58 (.setWindow lineout (- n m) n)))
|
samer@0
|
59 (set! line-on (lambda ()
|
samer@0
|
60 (.starting lineout)
|
samer@0
|
61 (Thread.sleep 200L)
|
samer@0
|
62 (addtask lineout)))
|
samer@0
|
63 (set! line-off (lambda ()
|
samer@0
|
64 (remove lineout)
|
samer@0
|
65 (.stopping lineout)
|
samer@0
|
66 (Thread.sleep 200L)))))
|
samer@0
|
67
|
samer@0
|
68
|