- sc.synth currently places all synth instances into the synth-group by default, which is an Overtone specific feature that should probably be done in studio. Maybe we should have the creation of synthdefs be on overtone.sc.synth, but the live creation of them and specialization in studio? Discuss on list.
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
create a couple functions to append a ugen to the root of a synth, for attaching out, pan, etc...
-
inst and synth forms should evalute the defaults rather than expecting them to be numbers (to use equations, constant vars, etc...)
- rather than using a plain multiply for volume adjustment, we should have a built-in helper that uses dbamp and multiply to adjust volume logarithmically, corresponding to perception.
- use a range of 0 - 1.0, so it works automatically with GUI controls and other ugens.
-
have a mechanism to route sound to a preview channel for listening to something in headphones to try it out.
-
create a basic EQ that can be used on any track
-
implement a portamento helper on top of slew
-
view a table or tree of running synths with the ability to kill and maybe modify control params
-
allow for re-arranging nodes and groups using a tree/table view
-
figure out how best to attach meta-data to the [unary,binary]-op-ugen
-
make midi->hz and friends multimethods (or use types and protocols?) so they operate immediately on numbers, but generate ugens on input proxy or ugen arguments.
-
add docs to Unary and Binary op ugens
{loop{play{GVerb.ar(LeakDC.ar(Crackle.ar([a=Phasor.ar(1,Line.kr(0.0020.rand,0,9),0,1),a],0.5,0)))0.05EnvGen.kr(Env.sine(9))};5.wait}}.fork
{loop{play{|q|c=EnvGen.kr(Env.sine(6),b=(6..1));Pan2.ar(PMOsc.ar(a=40bb.rand,a/2-1,1+qc90,c,0.01).sum.tan,2.0.rand-1)c5};1.wait}}.fork
play{b=LocalBuf(2**20,2).clear;n=LFNoise2.ar(Rand(500)!2);w=Warp1.ar(2,b,n+1/2,[a=0.5,1,2,4]).sum/50;RecordBuf.ar(LeakDC.ar(w+n),b,0,a,a);w}
{loop{play{GVerb.ar(Pan2.ar(HenonC.ar(11025/(16.rand+1),0.4.rand+1,0.3.rand),2.rand-1).tanh)0.01EnvGen.kr(Env.sine(4))};0.8.wait}}.fork
play{n=12;Splay.ar(Ringz.ar(Decay2.ar(Impulse.ar({2.0.rand.round(0.25)}!n),0.01,0.1,0.1),{|i|50+(i*50)+4.0.rand2}!n,{8.0.rand}!n),0.1)}