Wishlist for the IDE

Ah, I also wish the “Evaluation mode” that does not allow editing the opened document, only evaluating codes and navigating that document.


I would like “rectangular editing” or "columnar editing " like in Notepad++ and lots of other code editors.

And generally better completion.

Otherwise I rather like the IDE as a SC beginner but long time programmer

You’re right thought its weird that it only works with cmd-b and not when double clicking that block of code.

  1. I use this bridge to make it possible to have a GUI/interactions in the dockedBrowser.
    This works very well but need to install somes dependencise, run a nodejs program and make html pages.
    this can be better/easier to load Views directly on the dockedBrowser Window.

  2. have a var/id/class for splits to automate somthing like : split[0].open(document[3]). Maybe for sessions too… Session(“abc”).open

In the days of old, when DOS was a thing, 3D Studio had a little + button on the menu bar. With that you’d save the file and a version number, or date?, was added. Very useful and independent of undo - redo.

A more complex way would be to hook up SQLite and every time one hits ctr+enter save the file (or a diff) to it. You could make a textual representation of a live session that way. Kind of like a project file, independent of the text scdfile.

1 Like

You could implement this using the preprocessor. It would not have to be an IDE feature.


If it makes it independent of the editor, maybe even better. Had a quick look for preprocessor, but only found an example turning sines into saws. Is there more?

The preprocessor is a user defined function that receives the user’s code string as input.

Since it is a user defined function, it can do anything that is possible to do with a string.

It’s reasonable for a help example to keep it simple, but it shouldn’t be inferred from this that the help example reflects an outer limit of what is possible.

For instance, the screen image in the linked post shows a dialect that is compiled by a preprocessor hook into SC code.


Automatic indent of right side of “=” would be great!


csv =
pressed.cs.padRight(15, "0") ++ "," +
num ++ "," +
noteOnVel ++ "," +
vel ++ "," +
dur ++ "," +
chan.cs ++ "\n";


csv = (
    pressed.cs.padRight(15, "0") ++ "," +
    num ++ "," +
    noteOnVel ++ "," +
    vel ++ "," +
    dur ++ "," +
    chan.cs ++ "\n");


csv =
    pressed.cs.padRight(15, "0") ++ "," +
    num ++ "," +
    noteOnVel ++ "," +
    vel ++ "," +
    dur ++ "," +
    chan.cs ++ "\n";

“scroll beyond end of page”
“click beyond end of line”

Hell yeah. Just going to shamelessly throw out there that I’ll be a broke person with a doctorate in about a year and would also do this probably. Let’s unionize so we don’t get exploited by the evil supercollider dev corporation
(For real I’ve even considered asking for grant money for this kind of stuff - but I guess you’d need to be somewhere civilized for that to work, i.e. not the US)

Also: Why not scnvim? (I know the answer to that one, probably. It’s been very successful at making me do things other than make music, such as learn about lua and install 723 plugins that I don’t understand - although, imagine a “bottled” scnvim installation with a bunch of plugins that works out of the box and lets you forget that you’re in vim at all? since we’re allowed to dream)

Triple clicking (or double clicking with mod key) selects whole expression:

~someFunction = {
	\\ some code

So triple clicking the first or last curly bracket selects not only the portion between the curly brackets but the whole expression. Should be same when the function is closed with }), ie.

p = ();
p.add(\someFunction -> {
	\\ some code
1 Like

I have two more wishes:

  1. Auto insert matching bars
    arg x, y;
    |x, y|
  2. supporting regular expression in Finding text and Replacing text

Already supported. I use it quite frequently.


Ah, yes!
However, line breaks do not work:

  • \n
  • \r
  • \r\n

\t works.

I thought this was because the regular expression is not fully supported, but I might be wrong.

Yes, it is already implemented:

var freq = 30, deterministicOscillators, win, freqScope;
deterministicOscillators = [
	"SinOsc.ar(" ++ freq ++ ")",
	"LFTri.ar(" ++ freq ++ ")",
	"LFSaw.ar(" ++ freq ++ ")",
	"LFPulse.ar(" ++ freq ++ ")",
	"LFPulse.ar(" ++ freq ++ ", width: 0.8)",
	"Impulse.ar(" ++ freq ++ ")"
if(s.serverRunning) { s.quit };

~images = [];
win = Window("My Analyzer", Rect(0, 600, 511, 300));
s.waitForBoot {
	freqScope = FreqScopeView(win, win.view.bounds);
	win.front.onClose_({ freqScope.kill });
	deterministicOscillators.size.do {|i|
		defer {
				* 0.02
				* Env.sine.kr(doneAction: Done.freeSelf)
			~images = ~images.add({ deterministicOscillators[i].interpret }
				.plot(freq.reciprocal * 2, bounds:Rect(260 * i + 10, 295, 265, 130)))
		defer {
			Image.fromWindow(~images[i*2].parent).write(("~" +/+ deterministicOscillators[i] + "waveform.png").standardizePath);
			~images = ~images.add(Image.fromWindow(win));
			~images[i*2+1].plot(bounds:Rect(260 * i + 10, 455, 265, 130), freeOnClose:true);
			~images[i*2+1].write(("~" +/+ deterministicOscillators[i] + "spectrum.png").standardizePath)

I very much like the IDE as is. However, if ever possible have dockable versions of s.scope, s.meter and s.freqscope would make me happy.


1 Like

One of the following feature would be great:


1 Like