aboutsummaryrefslogtreecommitdiffstats
path: root/.config/SuperCollider/startupfiles/startup_example_customize.scd
diff options
context:
space:
mode:
Diffstat (limited to '.config/SuperCollider/startupfiles/startup_example_customize.scd')
-rw-r--r--.config/SuperCollider/startupfiles/startup_example_customize.scd98
1 files changed, 98 insertions, 0 deletions
diff --git a/.config/SuperCollider/startupfiles/startup_example_customize.scd b/.config/SuperCollider/startupfiles/startup_example_customize.scd
new file mode 100644
index 0000000..6bd342e
--- /dev/null
+++ b/.config/SuperCollider/startupfiles/startup_example_customize.scd
@@ -0,0 +1,98 @@
+"startup example - customising Menus.".postln;
+
+ // choose which server to use,
+ // e.g. for teaching, take internal, so scope works
+Server.default = s = Server.internal;
+{ try { Server.local.window.close } }.defer(0.5);
+
+s.options
+ .numAudioBusChannels_(1024) // lots of busses for JITLib
+ .zeroConf_(false) // don't wait for zeroconf when booting server
+// .device_() // maybe set a specific device ?
+// .numInputBusChannels_() // with a specific number of ins
+// .numOutputBusChannels() // ... and outs - default is 8.
+ .memSize_(8192 * 32) // memSize is in kB, so 8 * 32 = 256 MB for soundfiles, buffers
+
+ ;
+
+
+ // JIT preparation
+q = q ? (); // make a global dictionary for everything
+p = ProxySpace.push(s); // make a proxyspace and push it.
+q.numChans = 8; // number of channels of audio setup
+
+ //text editor tweaks & Library Menu
+Platform.case(\osx, {
+ // put the post window where you prefer
+ Document.listener.bounds_(Rect(Window.screenBounds.width - 400, 2, 400, 300)); Document.listener.background_(Color.blue(0.2, 0.9)); // and color it. // .alwaysOnTop_(true);
+ Document.listener.stringColor_(Color(1, 0.62, 0));
+ Document.postColor_(Document.listener.stringColor);
+
+
+ SkipJack.verbose = false; // reduce info posting
+
+
+ // put things in the Library menu:
+ // Custom Menu Items - OSX only - configure here
+ CocoaMenuItem.add(["server meter"],{ Server.default.meter });
+ CocoaMenuItem.add(["server window"],{ Server.default.window });
+ CocoaMenuItem.add(["scope Ins"],{ q.scope = s.scope(q.numChans, index: s.options.numOutputBusChannels, zoom: 9) });
+ CocoaMenuItem.add(["scope Outs"],{ q.scope = s.scope(q.numChans, index: 0, zoom: 9) });
+ CocoaMenuItem.add(["FreqScope"],{ q.fscope = FreqScope.new });
+
+ // an 8 chan test sound
+ CocoaMenuItem.add(["TestSound8"],{
+ p[\zztest] = { BPF.ar(Dust.ar(5 ! q.numChans, 50), { exprand(200, 2010) } ! q.numChans, 0.05)
+ * GrayNoise.ar(0.1, 1) };
+ p[\zztest].playN(vol: 0.25);
+ });
+
+ CocoaMenuItem.add(["places", "recordings"],{ unixCmd("open" + quote(thisProcess.platform.recordingsDir)) });
+ CocoaMenuItem.add(["places", "~/scwork"],{ unixCmd("open ~/scwork") });
+ CocoaMenuItem.add(["places", "supportDirs"],{
+ unixCmd("open " ++ Platform.userAppSupportDir.asCompileString);
+ unixCmd("open " ++ Platform.systemAppSupportDir.asCompileString);
+ });
+ CocoaMenuItem.add(["places", "extensionDirs"],{
+ unixCmd("open " ++ Platform.userExtensionDir.asCompileString);
+ unixCmd("open " ++ Platform.systemExtensionDir.asCompileString);
+ });
+
+ CocoaMenuItem.add(["quarks", "Quarks.find"], { Window("find in Quarks folder dialog ...").front });
+ CocoaMenuItem.add(["quarks", "Quarks.listInstalled"], {
+ var str = "/**** All currently installed quarks: ****/\n";
+ Quarks.installed.do { |quark|
+ str = str + ("\t" ++ quark.name.asCompileString ++ ".include;\n");
+ };
+ Document("All currently installed quarks", str);
+ });
+ CocoaMenuItem.add(["quarks", "Quarks.gui"], { Quarks.gui; });
+ CocoaMenuItem.add(["quarks", "Quarks.update"], { Quarks.checkoutAll; });
+});
+
+ // now really start the server, then load setup in doWhenBooted
+Task {
+ 0.5.wait;
+ s.quit; // sometimes the server must be quit first,
+ 1.wait; // and waiting between steps can be helpful.
+ // tell me the new server configuration when booting:
+ s.boot; // now boot.
+ s.sync; // wait for doWhenBooted before continuing
+
+ 1.wait;
+ // do whatever else belongs to setup: e.g. load some buffers,
+// q.bufs = "~/scwork/XYZ/sounds/*".pathMatch.do { |path| Buffer.read(s, path) };
+// s.sync; // wit till buffers are there
+
+ // load some code files, wait between loads
+// 1.wait;
+// "~/scwork/XYZ/patches/*.rtf".pathMatch.collect { |path|
+// path.load; 0.5.wait;
+// };
+
+ // s.scope(q.numChans, zoom: 9);
+
+ "startup example with custom Menus done.".postln;
+
+}.play(AppClock);
+