SuperCollider 4: First Thoughts

IIRC Nick Collins did a proof of concept for this years ago.

Interesting. Any pointers on where/when to help me try and track it down?

1 Like

@clicksonnil can you help?

experimental Clang UGen code, precompiled for OS X 10.6, SC 3.5 only (though the source should be portable); a draft of putting an LLVM jit compiler inside a SuperCollider UGen. Uses Clang in the background to create LLVM intermediate code for compilation.

4 Likes

I have a tiny thing working using Dear ImGui and written in Haskell, using very basic DSP code. One can feel what you tried to describe, but to make it a full system would be a huge amount of work rs))))))

But itā€™s true, those new immediate GUIs are really what you described. (Those GUIs are made for game debug/dev, not for making regular apps, maybe thatā€™s why it fits audio/live coding, even this sort of smalltalk playfulness).

Interesting, those floating widgets on a ā€˜deskā€™ makes me think of the Bespoke Synth graphical interface. But what is the ā€˜deskā€™ exactly in your story, is that provided by egui by default (for native /desktop applications)? Are there similar GUI libraries for C/C++ ?

Dear ImGui is C++, with bindings to some other languages. I donā€™ t know about egui, I think thatā€™s Rust only. egui is prettier, dear imgui more used behind the scenes by game devs, but they are equivalent in features I think

check the galleries and demos https://www.youtube.com/watch?v=Du--cH01ZWI

Immediate mode GUIs arenā€™t really a good fit for stuff like IDEs, or more complicated layouts.

Theyā€™re pretty good for throw away User Interfaces, and I think would probably be a good way to replace the existing GUI toolkit in SuperColliders.

egui is prettier, dear imgui more used behind the scenes by game devs, but they are equivalent in features I think

Iā€™m pretty sure you can make imgui prettier. Itā€™s just the defaults for EGui are a little better (neither are awesome in my opinion). Similar libraries are Nuklear and RayGui (both of which are super simple C libraries - and great for integrating into other languages). Nuklear is I believe a little more advanced that RayGui, though I havenā€™t used it.

3 Likes

Sure, not IDE, of course. But, for example, in my case on Linux, vscode interrupts the sound. Itā€™s pretty weird. I would not use it in a performance.

This is a positive point to imgui, itā€™s well supported by the industry and well tested: Funding Ā· ocornut/imgui Wiki Ā· GitHub

ImGui is fine if someone has developed good bindings for your environment. Itā€™s kind of a pain to use if they havenā€™t (due to being a C++ library, ABI, etc).

Obviously if youā€™re using C++ then itā€™s great - but as someone who loathes the language Iā€™d prefer not to :slightly_smiling_face:

2 Likes

So far so good in Haskell, but Iā€™m sure it would fit c++ betterā€¦ of courseā€¦

Ia it good or bed?

I see an interesting interaction with still a text-based programming, but nothing is forbidden in terms of annotation, GUI, connected graphs, etc All in the same " desk" or workspace.

Good. A more visual max msp?

Itā€™s nice when youā€™re not tight to a language indeed I think.

Another positive aspect of Imgui is that itā€™s not only free software, but it doesnā€™t depend on anything. There is no drama about what will happen with qt, for example. And many people just write their own widgets, which others can also use.

Dear Imgui and egui both have text/code editors as widgets (even with syntax colorizing) , but, of course, itā€™s not comparable to popular IDEs. They also have graph editors, which would be idiomatic to node connections, for example.

This falls also in that domain more or less:
https://git.open-music-kontrollers.ch/~hp/synthpod

1 Like

I donā€™t see myself programming with anything similar to PD. But the integration with graphics is something I would really much want. I think something like how APL plots their arrays, or jupyter notebooks plot graphs, or even musical scores if you import abjad. Something that doesnā€™t require one to waste time coding a custom GUI, but something that is part of the workflow.

The server node tree visualization in SC, for example, is very raw. It could provide more, and incorporate annotation by default, for example.

Even for debugging and optimization of short code blocks, it would be useful. For example:

https://dennis.felsing.org/ghc-vis/

Those Nuklear / egui widgets could as well be small TUI applications in a tmux session maybe. Functioning as a from SC decoupled GUI which communicates with sclang using OSC.

Yes, I thought about creating a small application with its GUI. What did you think, a multi-client setup or just OSC communication with sclang?

multi-client setups need a bit more care, because the state of the server, and possibly other things, needs to be accessible both ways always.

(sorry, maybe this conversation is off-topic and should be moved already :slight_smile: )

One client (sclang), one server (scsynth), multiple GUI widgets talking to sclang.

Thatā€™s quite possible, and I believe there wonā€™t be any relevant penalty regarding latency.

1 Like