samer@0: (load "midi.scm") samer@1: (load "streams.scm") samer@0: (import "samer.maths.random.*") samer@0: samer@0: (put "regulated" #t) samer@0: (put "colormap" (redgreen)) samer@0: (put "symmetric" #t) samer@0: samer@0: (tasks) samer@0: samer@0: (define N 64) samer@0: (define M 64) samer@0: samer@0: (define matrix (Matrix. "matrix" M N)) samer@0: (define out (VVector. "out" N)) samer@0: (define vgen (VGenerator. "gen")) samer@0: (define rowcol (RowColumn. matrix)) samer@0: (define decay (VDouble. "decay" 0.002)) samer@0: samer@0: (.setGenerator vgen (Binary.)) samer@0: samer@0: samer@0: ; program 46 is cool! samer@0: ; so are 10, 12, 111 samer@0: (define midiin (VVector. "midiin" 64)) samer@0: (define synth (MidiSynth. midiin)) samer@0: (define m 0) samer@0: samer@0: (addtasks samer@0: (sub 4 (task samer@0: (.timesEquals matrix (- 1 (.get decay))) samer@0: (.add matrix vgen) samer@0: (.changed matrix) samer@0: )) samer@0: samer@0: (Ops.transfer rowcol midiin) samer@0: (Ops.update midiin) samer@0: synth samer@0: (task samer@0: (.setRow rowcol m) samer@0: (set! m (if (< m (- M 1)) (+ m 1) 0)) samer@0: ) samer@0: ) samer@0: samer@0: (define (load-file fn) samer@1: (let ((f (ifstream fn))) samer@0: (.load matrix f) samer@0: (.close f))) samer@0: samer@0: (define (f1) (load-file "walking_zither2")) samer@0: (define (f2) (load-file "walking_zither3")) samer@0: (define (f3) (load-file "walking_zither4")) samer@1: (expose) samer@1: (expose synth)