diff src/scheme/old/synthesis.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/synthesis.scm	Tue Jan 17 17:50:20 2012 +0000
@@ -0,0 +1,52 @@
+(import "samer.maths.random.*")
+(load "lineout.scm")
+
+; sets the Generator of a VGenerator to one
+; constructed in it's own context.
+(define (load-generator gen)
+	(letrec ((nd (.getNode gen))
+		(spec (Shell.getString (.fullName nd)))
+		(g (node nd (eval-string spec))) )
+		(.setGenerator gen g)
+	)
+)
+
+
+(define (filter-gen filt gen) (FilteredGenerator. gen filt))
+(define (gen->vector gen n)
+  (define x (VVector. (cat "buffer(" (.toString gen) ")") n))
+  (define t (GenerateVector. x gen))
+  (addtask t)
+  x)
+
+(define (specsynth in N M)
+  (define filter (SpectralFilter. in N))
+  (addtask filter)
+  ;(gen->vector (filter-gen filter (VGenerator. "source" (Binary.))) M))
+  (gen->vector (filter-gen filter (BipolarUniform.)) M )
+)
+
+(define (specsynth-async in N M)
+  (define filter (SpectralFilter. in N))
+  (addtask filter)
+  (node "synth"
+	  (put "regulator.thread.priority" -0.1)
+	  (let ((new-tasks  (CompoundTask.)))
+	    (RThread. new-tasks)
+		 (with-tasks new-tasks
+			 (gen->vector (filter-gen filter (NormalisedGaussian. ))  M))
+	  )))
+
+(define (synth2 ft mag hop)
+  (define ift (RescaledIFT. ft mag))
+  (addtask ift)
+  (overlap-and-add (.output ift) hop))
+
+ ;;; this generates a white noise signal modulated by
+;;; another signal E
+
+(define (noise-resynth E N)
+	(define buf (gen->vector samer.maths.random.NormalisedGaussian.))
+	(addtask (task (Mathx.mul (.array buf) (- (.get E) 200))))
+	(lineout buf)
+)