#lang scribble/manual @(require (for-label racket)) @title{(record-buf bufnum offset reclevel prelevel run loop trigger inputs)} Records input into a Buffer. If recLevel is 1.0 and preLevel is 0.0 then the new input overwrites the old data. If they are both 1.0 then the new data is added to the existing data. (Any other settings are also valid.) bufnum - the index of the buffer to use offset - an offset into the buffer in samples, default 0 recLevel - value to multiply by input before mixing with existing data. Default is 1.0. preLevel - value to multiply to existing data in buffer before mixing with input. Default is 0.0. run - If zero, then recording stops, otherwise recording proceeds. Default is 1. loop - If zero then don't loop, otherwise do. This is modulate-able. Default is 1. trigger - a trigger causes a jump to the start of the Buffer. A trigger occurs when a signal changes from <=0 to >0. inputArray - an Array of input channels @racketblock[ (with-sc3 (lambda (fd) (send-synth fd "recorder" (letc ((in 0) (bufnum 0) (offset 1) (recLevel 1) (preLevel 0) (run 1) (loop 1) (trigger 1)) (let ((i (in 2 ar in))) (out 0 (record-buf bufnum offset recLevel preLevel run loop trigger i))))) (let ((b 10) (y 1001) (z 1002)) (async fd (/b_alloc b 44100 2)) (send fd (/s_new "recorder" y add-to-tail 1 "bufnum" b "in" 8)) (send fd (/n_trace y)) (send-synth fd "player" (letc ((bufnum 0) (rate 1) (trigger 1) (startPos 0) (loop 1) (gain 1)) (out 0 (mul (play-buf 2 bufnum rate trigger startPos loop) gain)))) (send fd (/s_new "player" z add-to-tail 1 "bufnum" b))))) ] @racketblock[ (define do-send (lambda (m) (with-sc3 (lambda (fd) (send fd m))))) ] @racketblock[ (do-send (/n_set 1001 "run" 1)) ] @racketblock[ (do-send (/n_set 1002 "loop" 1)) ] @racketblock[ (do-send (/n_set 1002 "gain" 2)) ] @racketblock[ (do-send (/n_set 1002 "trigger" 1)) ] @racketblock[ (do-send (/n_free 1001)) ] @racketblock[ (do-send (/n_free 1002)) ] @racketblock[ (with-sc3 (lambda (fd) (async fd (/b_free 10)))) ]