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)))))
+
+