View this PageEdit this PageUploads to this PageHistory of this PageTop of the SwikiRecent ChangesSearch the SwikiHelp Guide

a little Buffer-Host

Home   How To   Code Pool   Public Library   Theory   Events

// this patch is a rough implementation of a utility to handle buffers.
// jan t. has made it into a class artwork in his distribution and added many cool features // checkout http://wiki.sampleandhold.org

// ____inspired by lloop environment for max. http://lloopp.klingt.org/start.html____


Routine({
var patchArray, orig, dir;
var window, fileNames, pathNames, a, c, d, f, t, n, m, b, p, u, l, o, q, r, v;

if(~newDir.isNil, {dir = "/Users/df/Desktop/DoWN/_LooPS/"}, {dir = ~newDir; ~newDir=nil;}); // a default sample directory

fileNames = Cocoa.getPathsInDirectory(dir).select({| file | file.contains(".aif") });

patchArray = Array.fill(
				fileNames.size
				, { arg i; [
							fileNames.at(i).asString
							, dir++ Cocoa.getPathsInDirectory(dir).select({| file | file.contains(".aif") }).at(i) 
						]
				}
			);

window = SCWindow("BuFFeR-HoST"
				, Rect(10, 770, 265, 70)
				, false
//				, false
			).front;
			
window.view.background = Color.rand;	
        
t = 0;
u = 0;
c = 0;


SynthDef("x", {arg buf=0, gate=1; Out.ar(0, Pan2.ar(PlayBuf.ar(1, buf, loop:1))*EnvGen.ar(Env.adsr(0.01, 0, 1, 0.01), gate, doneAction:2))}).load(s);

SynthDef("y", {arg buf=0, gate=1; RecordBuf.ar(AudioIn.ar, buf, loop:1)*EnvGen.ar(Env.adsr(0.01, 0, 1, 0.01), gate, doneAction:2)}).load(s);


d = SCStaticText(window, Rect(2, 25, 50, 15));
d.string = "allocate";
d.font = Font("LucidaGrande-Bold", 8);

d = SCStaticText(window, Rect(87, 25, 50, 15));
d.string = "buffer";
d.font = Font("LucidaGrande-Bold", 8);

d = SCStaticText(window, Rect(132, 25, 50, 15));
d.string = "channels";
d.font = Font("LucidaGrande-Bold", 8);

d = SCStaticText(window, Rect(184, 25, 50, 15));
d.string = "buf";
d.font = Font("LucidaGrande-Bold", 8);

d = SCStaticText(window, Rect(2, 0, 50, 15));
d.string = "sample dir";
d.font = Font("LucidaGrande-Bold", 8);


d = SCStaticText(window, Rect(87, 0, 50, 15));
d.string = "add sample";
d.font = Font("LucidaGrande-Bold", 8);


d = SCStaticText(window, Rect(184, 0, 50, 15));
d.string = "buf";
d.font = Font("LucidaGrande-Bold", 8);






b = SCPopUpMenu(window
			, Rect(5, 13, 80, 15)
			).focus.background_(Color.yellow)
        .font = (Font("Helvetica", 9));
			
b.items = fileNames;
b.action = {arg b;
		s.sendMsg("/b_allocRead", u, dir++ fileNames.at(b.value));
};

SCButton(window, Rect(87, 13, 40, 15))
        .states_([["samp", Color.black,Color.white]])
        .action_({
        		CocoaDialog.getPaths({ arg paths;
									paths.do({ arg p;
									s.sendMsg("/b_allocRead", u, p)									})
								},{
									"cancelled".postln;
								});
							})
        .font = (Font("Helvetica", 9));

m = SCNumberBox(window, Rect(184, 12, 40, 15))
        .font = (Font("Helvetica", 9));
m.setProperty(\align,\center);
m.value = 0;
m.action = { arg numb;
p.set(\buf, numb.value;);
c = numb.value;
};

SCButton(window, Rect(227, 12, 15, 15))
        .states_([[">", Color.black,Color.green]])
        .action_({ if(p.isNil.not, {p.free}); p=Synth("x", [\buf, c])})
        .font = (Font("Helvetica", 9)); 

SCButton(window, Rect(243, 12, 15, 15))
        .states_([["||", Color.black,Color.green]])
        .action_({p.set(\gate, 0); p = 0})
        .font = (Font("Helvetica", 9));
        
       
        
orig = thisFunction;        
        
        

l = SCNumberBox(window, Rect(2, 37, 80, 15))
        .font = (Font("Helvetica", 9));
l.setProperty(\align,\center);
l.value = 0;
l.action = {arg num;
		s.sendMsg("/b_alloc", u, num.value, c);
};

o = SCNumberBox(window, Rect(87, 37, 40, 15))
        .font = (Font("Helvetica", 9));
o.setProperty(\align,\center);
o.value = 0;
o.action = { arg num; u = num.value };

q = SCNumberBox(window, Rect(132, 37, 40, 15))
        .font = (Font("Helvetica", 9));
q.setProperty(\align,\center);
q.value = 1;
q.action = { arg num; c = num.value };

v = SCNumberBox(window, Rect(184, 37, 40, 15))
        .font = (Font("Helvetica", 9));
v.setProperty(\align,\center);
v.value = 0;
v.action = { arg numb;
r.set(\buf, numb.value;);
t = numb.value;
};

SCButton(window, Rect(227, 35, 15, 15))
        .states_([["*", Color.black,Color.green]])
        .action_({if(r.isNil.not, {r.free}); r=Synth("y", [\buf, t])})
        .font = (Font("Helvetica", 9)); 

SCButton(window, Rect(243, 35, 15, 15))
        .states_([["||", Color.black,Color.green]])
        .action_({r.set(\gate, 0); r = 0})
        .font = (Font("Helvetica", 9));




SCButton(window, Rect(2, 55, 15, 15))
        .states_([["X", Color.black,Color.white]])
        .action_({window.close; p.set(\gate, 0); r.set(\gate, 0)})
        .font = (Font("Helvetica", 9));
        
SCButton(window, Rect(15, 55, 80, 15))
        .states_([["DiR=>DeFaulT", Color.black,Color.white]])
        .action_({window.close; ~newDir = nil; orig.value; })  // this patch
        .font = (Font("Helvetica", 9));

SCButton(window, Rect(95, 55, 80, 15))
        .states_([["GeT=>NeWDiR", Color.black,Color.white]])
        .action_({	CocoaDialog.getPaths({ arg paths;
									paths.do({ arg p;
										~newDir = p.dirname++ "/";
										~newDir.postln;
									})
								},{
									"cancelled".postln;
								});
							})
        .font = (Font("Helvetica", 9));

SCButton(window, Rect(175, 55, 85, 15))
        .states_([["LoaD=>NeWDiR", Color.black,Color.white]])
        .action_({window.close; orig.value}) // this patch
        .font = (Font("Helvetica", 9));	
}).run



editors so far
tom tlalim

Link to this Page