[linux-audio-user] Re: [linux-audio-dev] Does anyone have a working example of Supercollider and SCUM GUI where slider or a button does real-time update on the synth

From: Mario Lang <mlang@email-addr-hidden>
Date: Wed May 18 2005 - 12:29:47 EEST

Ivica Bukvic <ico@email-addr-hidden> writes:

> Greetings all,
>
> I guess title says it all. I do have working examples (i.e. the sequencer
> example from the LAD 2004) that make new instances of synths but none of them
> actually do real-time updates to existing instances.
>
> At any rate I would greatly appreciate your help in this matter.
>
> This is as far as I got and cannot figure it out beyond this point (my brain
> is pretty darn fried :-):
>
> s = Server.local.boot;
>
> SynthDef("onetwoonetwo",{ arg out=0, freq;

You are tripping over a common Client-Server-Architecture misunderstanding
here. The code inside a SynthDef is only executed *once* at
the client side to construct the Synth graph. You
can *not* set variables insides a SynthDef from client side GUI objects directly.

What you actually want is:

* A synthDef with arguments which represent the values you want to change.
* A client side GUI with callbacks that *set* the server-side
  Synth arguments on update.

I will try to illustrate, but I dont use SCUM, so its untested,
but I am pretty sure you'll get the idea:

SynthDef("onetwoonetwo",{ arg out=0, freq=440;
         Out.ar(out,
                  SinOsc.ar(freq, 0, 0.5)
         )
}).send(s);

n=Synth(\onetwoonetwo);

w = SCUMWindow.new;
w.title = "Slider example";
w.initialSize = Size(20, 300);
c = SCUMVBox( w );
v = SCUMSlider(c, { |v|
        v.expand = 1;
        v.fill = 1;
        v.bgColor = Color.white;
        v.fgColor = Color.black;
        v.action = {
                n.set(\freq, (v.value * 100)+400);
        };
        v.doAction;
});
w.show;

-- 
CYa,
  Mario
Received on Wed May 18 16:15:07 2005

This archive was generated by hypermail 2.1.8 : Wed May 18 2005 - 16:15:08 EEST