Mercurial > hg > jslab
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)))))