#lang scribble/manual @(require (for-label racket)) @title{Dbufwr} Buffer write demand ugen@section{categories} UGens>Buffer, UGens>Demand @section{related} Classes/Dbufrd @section{classmethods} @section{method} new @section{argument} input single channel input @section{argument} bufnum buffer number to write to (single channel buffer) @section{argument} phase index into the buffer @section{argument} loop when phase exceeds number of frames in buffer, loops when set to 1 (default :1) @section{discussion} all inputs can be either demand ugen or any other ugen. @section{examples} @racketblock[ // alloc a single channel buffer b = Buffer.alloc(s, 24, 1); b.setn(0, { 210 } ! b.numFrames); // post some info: fork { loop { 0.5.wait; b.getn(0, b.numFrames, {|x| x.postln }) } }; // write demand sequence into a buffer ( { var read, write, readpos, writepos, writetrig; writetrig = Dust.kr(1); readpos = Dseries(0, 1, inf); writepos = Dseq([Dseries(0, 3, 30), Dseries(0, 1, 30)], inf); read = Dbufrd(b, readpos); write = Dbufwr(Dseq([Dseries(1, 1, 16), Dwhite(1, 16, 8)], inf) * 60, b, writepos); Demand.kr(writetrig, 0, write); // write on trigger SinOsc.ar( Demand.kr(Impulse.kr(16), 0, read).lag(0.01) * [1, 1.01] ) * 0.1 }.play; ) // write into buffer with mouse clicks ( { var val = MouseY.kr(1000, 200, 1); // cursor y pos controls frequency var pos = MouseX.kr(0, BufFrames.kr(b) - 1); // cursor x position controls buffer pos var write = MouseButton.kr; // button controls write action Demand.kr(write, 0, Dbufwr(val, b, pos, 1)); SinOsc.ar( Duty.kr(Dseq([0.5, 0.75, 0.5, 1.0], inf) * 0.2, 0, Dbufrd(b, Dseries(0, 1, inf))) ) * 0.1 }.play; ) // write demand sequence into a buffer b.free; b = Buffer.alloc(s, 2, 1); fork { loop { 0.5.wait; b.getn(0, b.numFrames, {|x| x.postln }) } }; b.setn(0, [1, 0]); ( { var read, write, readpos, writepos, writetrig; writetrig = Impulse.kr(2); readpos = Dbufrd(b, 1); // first buffer val is position writepos = Dbufrd(b, 0); // second buffer val is position read = Dbufrd(b, readpos); write = Dbufwr(read, b, writepos); Demand.kr(writetrig, 0, write); // write on trigger }.play; ) // free buffer: b.free; :: ]