[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [sc-users] recording mouse gestures
> On 29/12/2015, at 18:58 , Iain Mott <mott@xxxxxxxxxxxxxxx> wrote:
>
> Many thanks for your help Alberto. I'm testing these examples now. One
> thing I notice, when I run:
>
> KtlLoopGui(k, parent: w, bounds: 310@180).skipjack.dt_(0.05);
>
> in the code for the "KtlLoop.help" window, it results in the following
> warning:
>
> WARNING: TdefGui : object a TaskProxy not accepted!
> a SkipJack
I fixed this a while ago in current SC.
which version of SC are you using?
best is a current 3.7 alpha build.
If you need to stick to an earlier version (3.6.6?),
you can overwrite the “accepts" method of TaskProxyGui with this one:
+ TaskProxyGui {
accepts { |obj| ^obj.isNil or: { obj.isKindOf(PatternProxy) } }
}
hth, best adc
> Much the same thing happens when I run "e = KtlLoopGui(k, bounds:
> 250@180);" in the KtlLoopGui help file.
>
>
> Is there another Quark that i need to install? I installed
> JITLibExtensions and JITMIDIKtl.
>
>
> Iain
>
>
>
>
>
>
>
>
>
>
>
>
>
> Em Ter, 2015-12-29 às 14:15 +0100, alberto.decampo escreveu:
>> // and here an example with 8 synths ktlloops and guis:
>>
>> (
>> s.scope(8);
>>
>> SynthDef(\spat, { |out, amp = 0.2, dens = 300, freq = 600, rq = 0.01, azim = 0, dist = 1|
>> var snd = Ringz.ar(Dust2.ar(300), freq, 0.01) * amp;
>> var ring = PanAz.ar(8, snd, azim);
>> var panned = (snd * (1/8)).blend(ring, dist);
>> Out.ar(out, panned);
>> }).add;
>>
>> // make an 8 8chan pannable synths
>> ~spats = 8.collect {
>> Synth(\spat, [
>> \freq, exprand(300, 3000), \dens, exprand(50, 500),
>> \azim, 2.0.rand;
>> ]);
>> };
>>
>> // make 8 ktlloops for them
>> ~ktlps = ~spats.collect { |sp, i|
>> var ktlname = ("sp" ++ i).asSymbol;
>> var ktloop = KtlLoop(ktlname, { |ev| sp.set(\azim, ev.azim, \dist, ev.dist) });
>> ktloop.object = sp;
>> };
>>
>> ~wins = ~ktlps.collect { |kl, i|
>> var w, sl2d;
>> w = Window("KtlLoop.help", Rect(320 * (i % 4), 380 * (i div: 4), 320, 380).postln).front;
>> w.view.addFlowLayout;
>> sl2d = Slider2D(w, Rect(5,5,190,190))
>> .action_({ |sl|
>> var polar = Polar(sl.x * 2 - 1, sl.y * 2 - 1);
>> var azim = polar.angle / pi; // scale to 0, 2
>> var dist = polar.magnitude;
>>
>> var event = (azim: azim, dist: dist);
>> // store it,
>> kl.recordEvent(event.put(\type, \set));
>> // and set the object from it
>> kl.object.set(\azim, azim, \dist, dist);
>> });
>>
>> // make an eventloopgui for KtlLoop
>> KtlLoopGui(kl, parent: w, bounds: 310@180).skipjack.dt_(0.05);
>> };
>> )
>>
>>> On 29/12/2015, at 13:53 , alberto.decampo <alberto.decampo@xxxxxxxxx> wrote:
>>>
>>> Hi Ian,
>>>
>>>> On 29/12/2015, at 12:22 , Iain Mott <mott@xxxxxxxxxxxxxxx> wrote:
>>>>
>>>> A question about KtlLoop:
>>>>
>>>> in the sample code in the help file for KtlLoop, the sound to be
>>>> controlled is defined within a node proxy definition (ndef).
>>>
>>> yes. should also work with plain synths, example below.
>>> Ndefs are really convenient placeholders for single synths,
>>> which are easy to control, modify, play, pause, stop,
>>> they remember their settings etc. etc., so I tend to use them
>>> rather than raw synths most of the time.
>>>
>>> Also, I just updated some things in the KtlLoop quarks, so please update.
>>>
>>>>
>>>> The thing or things that I'm wishing to control are instances of a
>>>> synthdef that perform 2D spatialisation. These receive their audio input
>>>> via busses and perform ambisonic encoding and other steps in response to
>>>> distance and azimuth data received via the "set" method. So it's the
>>>> distance and azimuth data for each sound source that I wish to record
>>>> and play back (rather than x and y coords from the mouse directly).
>>>
>>> what you want to control is freely definable, so distance and azimuth should also work.
>>>
>>> for rescaling movements in space, using x y and converting to azim/dist in the synth func
>>> may actually work nicely :-)
>>>
>>>>
>>>> What I was thinking of doing was to create an array of KtlLoop objects
>>>> for each of the instances synthdef. Something like this:
>>>
>>>
>>>> number_of_sound_sources.do { arg i;
>>>>
>>>> k[i] = KtlLoop(2Dspatializerinstances[i]);
>>>>
>>>> };
>>>>
>>>>
>>>> This however gives a "wrong type" error.
>>>>
>>>> Can synthdef instances be controlled by KtlLoop and if so how?
>>>
>>> yes, based on your question, something like this:
>>>
>>> SynthDef(\spat, { |out, amp = 0.2, dens = 300, freq = 600, rq = 0.01, azim = 0, dist = 1|
>>> var snd = Ringz.ar(Dust2.ar(300), freq, 0.01) * amp;
>>> var ring = PanAz.ar(8, snd, azim);
>>> var panned = (snd * (1/8)).blend(ring, dist);
>>> Out.ar(out, panned);
>>> }).add;
>>>
>>> s.scope(8);
>>>
>>> // make an 8chan pannable sound
>>> ~sp1 = Synth(\spat, [\freq, 600]);
>>>
>>> // move ~sp1 - azim goes from 0..2, because it uses PanAz
>>> ~sp1.set(\azim, 0.5);
>>> ~sp1.set(\azim, 1);
>>>
>>> ~sp1.set(\dist, 0); // in center of all 8
>>> ~sp1.set(\dist, 0.5); // centered on chans 5, 6, but present in all
>>> ~sp1.set(\dist, 1.0); // just on chans 5, 6
>>>
>>> // a KtlLoop for sp1
>>> k = KtlLoop(\sp1, { |ev| ~sp1.set(\azim, ev.azim, \dist, ev.dist) });
>>> k.object = ~sp1;
>>> k.func.postcs;
>>> (
>>> w = Window("KtlLoop.help", Rect(0,500, 400, 550)).front;
>>> w.view.addFlowLayout;
>>> ~sl2d = Slider2D(w, Rect(0,0,190,190))
>>> .action_({ |sl|
>>> var polar = Polar(sl.x * 2 - 1, sl.y * 2 - 1);
>>> var azim = polar.angle / pi; // scale to 0, 2
>>> var dist = polar.magnitude;
>>>
>>> var event = (azim: azim, dist: dist);
>>> // store it,
>>> k.recordEvent(event.put(\type, \set));
>>> // and set the object from it
>>> k.object.set(\azim, azim, \dist, dist);
>>> });
>>>
>>> // make an eventloopgui for KtlLoop
>>> KtlLoopGui(k, parent: w, bounds: 310@180).skipjack.dt_(0.05);
>>> )
>>> // a second synth would be
>>> ~sp2 = Synth(\spat, [\freq, 800, \dens, 200]);
>>>
>>> // or make an array of synths
>>> ~spats = 8.collect { Synth(\spat, [\freq, exrand(300, 3000), \dens, 200]); };
>>>
>>> …
>>> but that will need a lot more admin by hand that Ndefs can take care of very easily.
>>>
>>>> I did try entering the name of the synthdef itself as an argument to
>>>> KtlLoop and this produced no error, but I didn't go any further with
>>>> this. Not understanding ndef, I also tried redefining a synthdef
>>>> instance within an ndef - this produced a string of errors.
>>>
>>> Try going thru the Ndef helpfile, it has lots of examples :-)
>>>
>>> best adc
>>
>>
>> _______________________________________________
>> sc-users mailing list
>>
>> info (subscription, etc.): http://www.birmingham.ac.uk/facilities/ea-studios/research/supercollider/mailinglist.aspx
>> archive: https://listarc.bham.ac.uk/marchives/sc-users/
>> search: https://listarc.bham.ac.uk/lists/sc-users/search/
>
>
>
> _______________________________________________
> sc-users mailing list
>
> info (subscription, etc.): http://www.birmingham.ac.uk/facilities/ea-studios/research/supercollider/mailinglist.aspx
> archive: https://listarc.bham.ac.uk/marchives/sc-users/
> search: https://listarc.bham.ac.uk/lists/sc-users/search/
_______________________________________________
sc-users mailing list
info (subscription, etc.): http://www.birmingham.ac.uk/facilities/ea-studios/research/supercollider/mailinglist.aspx
archive: https://listarc.bham.ac.uk/marchives/sc-users/
search: https://listarc.bham.ac.uk/lists/sc-users/search/