(
var v1,v2,w,z,h, plug;
v1 = Wavetable.chebyFill(512, #[1,0]);
v2 = v1.copy;
w = GUIWindow.new("wavetable", Rect.newBy(10, 372, 300, 250));
z = WavetableView.new(w, Rect.newBy(8,8,280,200), v2).hElastic.vElastic;
h = HarmonicsDialog.new(v2);
Updater(v2,{ plug.gate(1, 0.1); });
Synth.play({
plug = Plug.kr(0,0);
TrigXFade.ar({ arg spawn, i, synth;
v1 = v2.copy;
Shaper.ar(v1, SinOsc.ar(220, 0, 0.5));
}, plug);
});
w.close;
h.close;
)
//this needs a modified Updater class (crucial lib):
Updater {
var <>model,<>refreshFunc;
*new { arg model,refreshFunc,layoutOfView;
^super.new.model_(model).refreshFunc_(refreshFunc).init(layoutOfView)
}
init {arg layoutOfView;
model.addDependant(this);
// when the layout closes, we need to break the dependancy
// so the GC troll can drag off the corpse
if(layoutOfView.notNil, {layoutOfView.autorelease(this) });
}
update { arg ... args;
refreshFunc.valueArray(args)
}
remove {
model.removeDependant(this);
}
}
***
/*authors so far: andrew hayleck jrh */ |
//sc2 code |