Autogui fix - or alternative

I’m trying to use the autogui quark to generate quick and dirty UIs for synths to make the work cycle quicker, but, at least with 3.11.0, I’m getting compile warnings about overwrites

Intentional overwrites must be put in a 'SystemOverwrites' subfolder.

and apparently that’s been the case for a while (at least since 3.10)

Is there a workaround, or alternative auto gui generator? Even semi-auto would be helpful

I asked about this message another time and got no response. I’m not sure the error message means anything, as it isn’t enforced.

But I am sure someone will now say why I am wrong.

Sam

Hi!

This is mostly a warning for Quark developers, but also for users:

  • If a Quark overwrites a method, it does so globally - so you might start seeing unexpected behaviour in normal usage. This is particularly dangerous for core classes, hence the warning. Ultimately, Quarks shouldn’t do this, however they may not do it on purpose, see below
  • If a Quark extends a core class, this is usually fine. But if the core class gets updated and adds a method of the same name, then there’s a big problem - so again, the warning is valid, letting you know the method might not behave as you expect.

Hopefully that’s helpful.

Best,
James

1 Like

I guess I buried the lede here. The problem is that autogui isn’t working - and I assumed it was related to this.
There’s an issue on the git page for the quark that describes the same warning and the same error I’m getting

https://github.com/supercollider-quarks/autogui/issues/1

Has anyone got autogui working with 3.11?

Hi,

in main lib you can use makeGui

SynthDescLib.global[\default].makeGui

or check VarGui from miSCellaneous_lib quark

\default.sVarGui.gui

1 Like

NdefGui is another option but it does require a bit of “retooling” if you only use bare synths, not proxies, e.g.

(d = SynthDef(\beep, {
	var out = \out.ir(0), amp = \amp.kr(0.5), freq = \freq.kr(440);
	Out.ar(out, amp * SinOsc.ar(freq).dup);
}).add;)

n = NodeProxy.audio(s, 2).source_(d);
// also .source_(\beep) works too

n.gui;

There’s also ProxyMixer based on that, but it’s a bit more “heavywheight”, although it does have some advantages over NdefGui, chiefly ProxyMeter overlay.

Instr from cruciallib also comes with a gui (InstrGui), but that code base is less well maintained.

Note that there are some “philosophical differences” between VarGui and the Jitlib guis (NdefGui etc.), chiefly that the former wants to be a controller and the latter are mostly geared as views. Bascially, when you start a VarGui it will immediately “change stuff” in the object it controls, to make it match its VarGui-control settings, whereas the jitlib guis generally don’t do that, but rather update themselves on startup with the underlying object’s state/parameters. See this discussion.

Actually it’s good that SC issues those warnings because

That was something else, but I fixed it, should anyone still care

It’s not a bad gui, by the way. Nifty an compact:

Synth(\default).autogui

image

Still it doesn’t do the group magic I’m hoping for. Will probably have to write my own for that, but was worth checking out what exists already.

Also the monitor function doesn’t appear to work correctly, although maybe I misunderstand how to use it. E.g. if I do

Synth(\default, [\out, 4]).autogui

nothing hapens alas when I click the “m:Off”, besides the fact that it turns to “m:On”. I’m guessing it was inteded to do something similar to what NdefGui play does i.e. allow you to monitor a Synth playing on a “private” bus, but autogui doesn’t seem to quite work in that regard.

Actually, looking at the source code, that does something different. The monitor function for autogui means poll the control busses for external changes, so e.g. if you do

x.set(\freq, 200)

it won’t update the gui unless the monitor is turned on.