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
|
samer@0
|
7
|
samer@0
|
8
|
samer@0
|
9 ;;; Audio output from given vector to given AudioSink
|
samer@0
|
10 ;;; Task is added to current task list, and functions line-on
|
samer@0
|
11 ;;; and line-off are defined to insert and remove the lineout task.
|
samer@0
|
12 ;;; Function set-step defined to change hop size.
|
samer@0
|
13 ;;; Optional final parameter is hop size
|
samer@0
|
14 (define-method (lineout sink (in Vec) hop)
|
samer@0
|
15 (let ((out (LineOut. in sink))
|
samer@0
|
16 (tlist (tasks)))
|
samer@0
|
17 (set! set-step (lambda (m) (.setWindow out 0 m)))
|
samer@0
|
18 (set! line-on (lambda ()
|
samer@0
|
19 (.starting out) (Thread.sleep 200L)
|
samer@0
|
20 (.addTask tlist out)))
|
samer@0
|
21 (set! line-off (lambda ()
|
samer@0
|
22 (.removeTask tlist out)
|
samer@0
|
23 (.stopping out) (Thread.sleep 200L)))
|
samer@0
|
24 (set-step hop)
|
samer@0
|
25 (addtasks out)
|
samer@0
|
26 out))
|
samer@0
|
27
|
samer@0
|
28 (define-method (lineout (in Vec)) (lineout (linesnk) in))
|
samer@0
|
29 (define-method (lineout sink (in Vec)) (lineout sink in (.size in)))
|
samer@0
|
30 (define-method (lineout sink (in LineIn))
|
samer@0
|
31 (put "lineout.scale" 1.0)
|
samer@0
|
32 (let ((out (lineout sink (.output in))))
|
samer@0
|
33 (set-step (.getStep in))
|
samer@0
|
34 (set! set-step (lambda (n)
|
samer@0
|
35 (.setStep in n)
|
samer@0
|
36 (.setWindow out 0 n)))))
|
samer@0
|
37
|
samer@0
|
38 (define-method (overlap-and-add sink x hop)
|
samer@0
|
39 (define oa (OverlapAndAdd. x hop))
|
samer@0
|
40 (define line (LineOut. (.output oa) sink))
|
samer@0
|
41 (.setWindow oa (Hanning.))
|
samer@0
|
42 (.setWindow line 0 hop)
|
samer@0
|
43 (addtasks oa line)
|
samer@0
|
44 (set! _lineout line)
|
samer@0
|
45 (set! set-step (lambda (h)
|
samer@0
|
46 (.setHop oa h)
|
samer@0
|
47 (.setWindow line 0 h)))
|
samer@0
|
48 line)
|
samer@0
|
49
|