view src/scheme/old/lineout.scm @ 8:5e3cbbf173aa tip

Reorganise some more
author samer
date Fri, 05 Apr 2019 22:41:58 +0100
parents bf79fb79ee13
children
line wrap: on
line source
(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)))))