Mercurial > hg > jslab
diff src/scheme/old/lineout.scm @ 0:bf79fb79ee13
Initial Mercurial check in.
author | samer |
---|---|
date | Tue, 17 Jan 2012 17:50:20 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/scheme/old/lineout.scm Tue Jan 17 17:50:20 2012 +0000 @@ -0,0 +1,68 @@ +(define set-step null) +(define line-on null) +(define line-off null) +(define _lineout null) + +(define-method (overlap-and-add x hop) + (define oa (OverlapAndAdd. x hop)) + (define line (LineOut. (.output oa))) + (.setWindow oa (Hanning.)) + (.setWindow line 0 hop) + (addtasks oa line) + (set! _lineout line) + (set! set-step (lambda (h) + (.setHop oa h) + (.setWindow line 0 h))) +) + +(define-method (overlap-and-add sink x hop) + (define oa (OverlapAndAdd. x hop)) + (.setWindow oa (Hanning.)) + (addtasks oa (.writer sink (.array (.output oa)) 0 hop)) +) + +(define-method (lineout (linein LineIn)) + (put "audio.scale" 1.0) + (let ((lineout (LineOut. (.output linein)))) + (.setWindow lineout 0 (.getStep linein)) + (set! set-step (lambda (n) + (.setStep linein n) + (.setWindow lineout 0 n))) + (set! line-on (lambda () + (.starting lineout) + (Thread.sleep 200L) + (addafter linein lineout))) + (set! line-off (lambda () + (remove lineout) + (.stopping lineout) + (Thread.sleep 200L))))) + +(define-method (lineout (in Vec)) + (let ((lineout (LineOut. in) (n (.size in))) + (tasklist (tasks))) + (set! set-step (lambda (m) + (.setWindow lineout (- n m) n))) + (set! line-on (lambda () + (.starting lineout) + (Thread.sleep 200L) + (.addTask tasklist lineout))) + (set! line-off (lambda () + (.removeTask tasklist lineout) + (.stopping lineout) + (Thread.sleep 200L))))) + +(define-method (lineout n) + (put "audio.scale" 32767.0) + (let ( (lineout (LineOut. n))) + (set! set-step (lambda (m) + (.setWindow lineout (- n m) n))) + (set! line-on (lambda () + (.starting lineout) + (Thread.sleep 200L) + (addtask lineout))) + (set! line-off (lambda () + (remove lineout) + (.stopping lineout) + (Thread.sleep 200L))))) + +