esluyter / super-bufrd

UGens for accessing long buffers with subsample accuracy
GNU General Public License v3.0
26 stars 3 forks source link

Can't build Mac M2 #31

Open unculcated opened 3 months ago

unculcated commented 3 months ago

Terminal output:

ss@sss-Laptop build % cmake -DSC_PATH=/Users/ss/SuperCollider -DCMAKE_BUILD_TYPE=Release .. CMake Deprecation Warning at CMakeLists.txt:1 (cmake_minimum_required): Compatibility with CMake < 3.5 will be removed from a future version of CMake.

Update the VERSION argument value or use a ... suffix to tell CMake that the project does not need compatibility with older versions.

-- Project name is SuperBufRd -- The C compiler identification is AppleClang 15.0.0.15000309 -- The CXX compiler identification is AppleClang 15.0.0.15000309 -- Detecting C compiler ABI info -- Detecting C compiler ABI info - done -- Check for working C compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc - skipped -- Detecting C compile features -- Detecting C compile features - done -- Detecting CXX compiler ABI info -- Detecting CXX compiler ABI info - done -- Check for working CXX compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++ - skipped -- Detecting CXX compile features -- Detecting CXX compile features - done -- Performing Test HAS_SSE -- Performing Test HAS_SSE - Success -- Performing Test HAS_CXX_SSE -- Performing Test HAS_CXX_SSE - Success -- Performing Test HAS_SSE2 -- Performing Test HAS_SSE2 - Success -- Performing Test HAS_CXX_SSE2 -- Performing Test HAS_CXX_SSE2 - Success -- Performing Test HAS_FPMATH_SSE -- Performing Test HAS_FPMATH_SSE - Failed -- Performing Test HAS_CXX_FPMATH_SSE -- Performing Test HAS_CXX_FPMATH_SSE - Failed -- Configuring done (0.7s) -- Generating done (0.0s) -- Build files have been written to: /Users/ss/super-bufrd/build ss@sss-Laptop build % cmake --build . --config Release [ 16%] Building CXX object CMakeFiles/SuperBufRd.dir/SuperBufRd.cpp.o clang: warning: argument unused during compilation: '-msse' [-Wunused-command-line-argument] clang: warning: argument unused during compilation: '-msse2' [-Wunused-command-line-argument] In file included from /Users/ss/super-bufrd/SuperBufRd.cpp:1: In file included from /Users/ss/SuperCollider/include/plugin_interface/SC_PlugIn.hpp:25: In file included from /Users/ss/SuperCollider/include/plugin_interface/SC_PlugIn.h:25: /Users/ss/SuperCollider/include/plugin_interface/SC_Unit.h:96:32: error: 'auto' return without trailing return type; deduced return types are a C++14 extension [[nodiscard]] inline constexpr auto copyAndCastToTypeOfFirstArg(const ToType&, const Value& value) noexcept { ^ /Users/ss/SuperCollider/include/plugin_interface/SC_Unit.h:97:26: error: no template named 'remove_cv_t' in namespace 'std' using TargetT = std::remove_cv_t<std::remove_reference_t>;


/Users/ss/SuperCollider/include/plugin_interface/SC_Unit.h:97:43: error: no template named 'remove_reference_t' in namespace 'std'; did you mean 'remove_reference'?
    using TargetT = std::remove_cv_t<std::remove_reference_t<ToType>>;
                                     ~~~~~^~~~~~~~~~~~~~~~~~
                                          remove_reference
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX14.5.sdk/usr/include/c++/v1/__type_traits/remove_reference.h:23:8: note: 'remove_reference' declared here
struct remove_reference {
       ^
In file included from /Users/ss/super-bufrd/SuperBufRd.cpp:1:
In file included from /Users/ss/SuperCollider/include/plugin_interface/SC_PlugIn.hpp:25:
In file included from /Users/ss/SuperCollider/include/plugin_interface/SC_PlugIn.h:25:
/Users/ss/SuperCollider/include/plugin_interface/SC_Unit.h:98:24: error: unknown type name 'TargetT'
    return static_cast<TargetT>(value);
                       ^
4 errors generated.
make[2]: *** [CMakeFiles/SuperBufRd.dir/SuperBufRd.cpp.o] Error 1
make[1]: *** [CMakeFiles/SuperBufRd.dir/all] Error 2
make: *** [all] Error 2
esluyter commented 3 months ago

SuperBufRd build apple silicon.zip

I'm getting the same error. Trying to update the CMakeFIle is way above my head but I've hacked at it and think I've gotten a usable build. Can you try these compiled files and confirm?

unculcated commented 3 months ago

Im able to compile everything in Extensions. No errors. (im not using supernova), but I get Class not defined errors when trying out the examples. So, not working

esluyter commented 3 months ago

Oh sorry you still need the .SC and .schelp files in this repository. Just add the files in that zip

unculcated commented 3 months ago

Ok, I see a few sc files and one that says Overwrite Do I open the supercollider app contents and put these files in there? Where do I over write extSuperPair.sc? Where do I put SuperBufRd.sc SuperPair.sc TestSuperBinaryOpUGen.sc TestSuperPair.sc

? Thanks

esluyter commented 3 months ago

Download or clone this whole repository into your extensions folder. Then add the unzipped binaries

unculcated commented 3 months ago

some of it works like a charm :). some help files im getting errors. ill post em tomorrow

unculcated commented 3 months ago
ok, here are the errors from some examples. The audio plays for some of them

this doesn't play at all 
b = Buffer.read(s, Platform.resourceDir +/+ "sounds/a11wlk01.wav");
​
(
{
  var phaseInt, phaseDec;
  # phaseInt, phaseDec = SuperPhasor.ar(0, BufRateScale.kr(b), 0, 0, Float.from32Bits(b.numFrames), 0);
  SuperBufRd.ar(1, b, phaseInt, phaseDec);
}.play;
)

ERROR: Message 'at' not understood.
Perhaps you misspelled 'as', or meant to call 'at' on another receiver?
RECEIVER:
Instance of SuperPair {    (0x150245b88, gc=0C, fmt=00, flg=00, set=02)
  instance variables [2]
    msd : instance of OutputProxy (0x1502b8ce8, size=11, set=4)
    lsd : instance of OutputProxy (0x1502b94b8, size=11, set=4)
}
ARGS:
   Integer 0

PROTECTED CALL STACK:
    Meta_MethodError:new    0x139123640
        arg this = DoesNotUnderstandError
        arg what = nil
        arg receiver = SuperPair(an OutputProxy, an OutputProxy)
    Meta_DoesNotUnderstandError:new 0x139125980
        arg this = DoesNotUnderstandError
        arg receiver = SuperPair(an OutputProxy, an OutputProxy)
        arg selector = at
        arg args = [0]
    Object:doesNotUnderstand    0x120409f00
        arg this = SuperPair(an OutputProxy, an OutputProxy)
        arg selector = at
        arg args = nil
    a FunctionDef   0x30013d5b8
        sourceCode = "{
  var phaseInt, phaseDec;
  # phaseInt, phaseDec = SuperPhasor.ar(0, BufRateScale.kr(b), 0, 0, Float.from32Bits(b.numFrames), 0);
  SuperBufRd.ar(1, b, phaseInt, phaseDec);
}"
        var phaseInt = nil
        var phaseDec = nil
    SynthDef:buildUgenGraph 0x13bd1cc40
        arg this = a SynthDef
        arg func = a Function
        arg rates = nil
        arg prependArgs = []
        var result = nil
        var saveControlNames = [ControlName  P 0 i_out scalar 0]
    a FunctionDef   0x13a6bda80
        sourceCode = "<an open Function>"
        arg i_out = an OutputProxy
        var result = nil
        var rate = nil
        var env = nil
    SynthDef:buildUgenGraph 0x13bd1cc40
        arg this = a SynthDef
        arg func = a Function
        arg rates = nil
        arg prependArgs = []
        var result = nil
        var saveControlNames = nil
    a FunctionDef   0x13bd1b1c0
        sourceCode = "<an open Function>"
    Function:prTry  0x1394ce4c0
        arg this = a Function
        var result = nil
        var thread = a Thread
        var next = nil
        var wasInProtectedFunc = false

CALL STACK:
    DoesNotUnderstandError:reportError
        arg this = <instance of DoesNotUnderstandError>
    Nil:handleError
        arg this = nil
        arg error = <instance of DoesNotUnderstandError>
    Thread:handleError
        arg this = <instance of Thread>
        arg error = <instance of DoesNotUnderstandError>
    Object:throw
        arg this = <instance of DoesNotUnderstandError>
    Function:protect
        arg this = <instance of Function>
        arg handler = <instance of Function>
        var result = <instance of DoesNotUnderstandError>
    SynthDef:build
        arg this = <instance of SynthDef>
        arg ugenGraphFunc = <instance of Function>
        arg rates = nil
        arg prependArgs = nil
    Function:play
        arg this = <instance of Function>
        arg target = <instance of Group>
        arg outbus = 0
        arg fadeTime = 0.02
        arg addAction = 'addToHead'
        arg args = nil
        var def = nil
        var synth = nil
        var server = <instance of Server>
        var bytes = nil
        var synthMsg = nil
    Interpreter:interpretPrintCmdLine
        arg this = <instance of Interpreter>
        var res = nil
        var func = <instance of Function>
        var code = "(
{
  var phaseInt, phaseDec..."
        var doc = nil
        var ideClass = <instance of Meta_ScIDE>
    Process:interpretPrintCmdLine
        arg this = <instance of Main>
^^ ERROR: Message 'at' not understood.
Perhaps you misspelled 'as', or meant to call 'at' on another receiver?
RECEIVER: SuperPair(an OutputProxy, an OutputProxy)
unculcated commented 3 months ago
this plays but I get the warning ;
b = Buffer.read(s, Platform.resourceDir +/+ "sounds/a11wlk01.wav");

{ SuperPlayBufX.ar(1, b, MouseX.kr(0.1, 10, \exponential), cuePos:b.atSec(b.duration / 2), cueTrig: MouseButton.kr(0, 1, 0))!2 }.play;

-> Buffer(3, nil, nil, nil, /Applications/SuperCollider.app/Contents/Resources/sounds/a11wlk01.wav)
WARNING: keyword arg 'cuePos' not found in call to Meta_SuperPlayBufX:ar
WARNING: keyword arg 'cueTrig' not found in call to Meta_SuperPlayBufX:ar
-> Synth('temp__26' : 1061)
unculcated commented 3 months ago

b = Buffer.read(s, Platform.resourceDir +/+ "sounds/a11wlk01.wav");


(
{
  var phaseInt, phaseDec;
  # phaseInt, phaseDec = SuperPhasor.ar(0, BufRateScale.kr(b), 0, 0, Float.from32Bits(b.numFrames), 0);
  SuperBufRd.ar(1, b, phaseInt, phaseDec);
}.play;
)

error:
ERROR: Message 'at' not understood.
Perhaps you misspelled 'as', or meant to call 'at' on another receiver?
RECEIVER:
Instance of SuperPair {    (0x3000b0828, gc=10, fmt=00, flg=00, set=02)
  instance variables [2]
    msd : instance of OutputProxy (0x178015608, size=11, set=4)
    lsd : instance of OutputProxy (0x178014698, size=11, set=4)
}
ARGS:
   Integer 0
PATH: /Users/ss/Library/Application Support/SuperCollider/Extensions/super-bufrd-superpair/HelpSource/Classes/SuperBufRd.schelp

PROTECTED CALL STACK:
    Meta_MethodError:new    0x139123640
        arg this = DoesNotUnderstandError
        arg what = nil
        arg receiver = SuperPair(an OutputProxy, an OutputProxy)
    Meta_DoesNotUnderstandError:new 0x139125980
        arg this = DoesNotUnderstandError
        arg receiver = SuperPair(an OutputProxy, an OutputProxy)
        arg selector = at
        arg args = [0]
    Object:doesNotUnderstand    0x120409f00
        arg this = SuperPair(an OutputProxy, an OutputProxy)
        arg selector = at
        arg args = nil
    a FunctionDef   0x15015edd8
        sourceCode = "{
  var phaseInt, phaseDec;
  # phaseInt, phaseDec = SuperPhasor.ar(0, BufRateScale.kr(b), 0, 0, Float.from32Bits(b.numFrames), 0);
  SuperBufRd.ar(1, b, phaseInt, phaseDec);
}"
        var phaseInt = nil
        var phaseDec = nil
    SynthDef:buildUgenGraph 0x13bd1cc40
        arg this = a SynthDef
        arg func = a Function
        arg rates = nil
        arg prependArgs = []
        var result = nil
        var saveControlNames = [ControlName  P 0 i_out scalar 0]
    a FunctionDef   0x13a6bda80
        sourceCode = "<an open Function>"
        arg i_out = an OutputProxy
        var result = nil
        var rate = nil
        var env = nil
    SynthDef:buildUgenGraph 0x13bd1cc40
        arg this = a SynthDef
        arg func = a Function
        arg rates = nil
        arg prependArgs = []
        var result = nil
        var saveControlNames = nil
    a FunctionDef   0x13bd1b1c0
        sourceCode = "<an open Function>"
    Function:prTry  0x1394ce4c0
        arg this = a Function
        var result = nil
        var thread = a Thread
        var next = nil
        var wasInProtectedFunc = false

CALL STACK:
    DoesNotUnderstandError:reportError
        arg this = <instance of DoesNotUnderstandError>
    Nil:handleError
        arg this = nil
        arg error = <instance of DoesNotUnderstandError>
    Thread:handleError
        arg this = <instance of Thread>
        arg error = <instance of DoesNotUnderstandError>
    Object:throw
        arg this = <instance of DoesNotUnderstandError>
    Function:protect
        arg this = <instance of Function>
        arg handler = <instance of Function>
        var result = <instance of DoesNotUnderstandError>
    SynthDef:build
        arg this = <instance of SynthDef>
        arg ugenGraphFunc = <instance of Function>
        arg rates = nil
        arg prependArgs = nil
    Function:play
        arg this = <instance of Function>
        arg target = <instance of Group>
        arg outbus = 0
        arg fadeTime = 0.02
        arg addAction = 'addToHead'
        arg args = nil
        var def = nil
        var synth = nil
        var server = <instance of Server>
        var bytes = nil
        var synthMsg = nil
    Interpreter:interpretPrintCmdLine
        arg this = <instance of Interpreter>
        var res = nil
        var func = <instance of Function>
        var code = "(
{
  var phaseInt, phaseDec..."
        var doc = nil
        var ideClass = <instance of Meta_ScIDE>
    Process:interpretPrintCmdLine
        arg this = <instance of Main>
^^ ERROR: Message 'at' not understood.
Perhaps you misspelled 'as', or meant to call 'at' on another receiver?
RECEIVER: SuperPair(an OutputProxy, an OutputProxy)
unculcated commented 3 months ago
b = Buffer.read(s, Platform.resourceDir +/+ "sounds/a11wlk01.wav");

(
{
  var sig, playhead;
  # sig, playhead = SuperPlayBufDetails.ar(1, b, MouseX.kr(0.1, 10, \exponential), cuePos:b.atSec(b.duration / 2), cueTrig: MouseButton.kr(0, 1, 0));
  SendTrig.ar(Impulse.ar(10), 0, playhead[0]); // send integer component of playhead
  sig!2;
}.play;

// print the elapsed time:
OSCdef(\trig, { |msg|
  if (msg[2] == 0) {
    ("Start: %       Playhead: %       End: %".format(
      0.asTimeString,
      b.atPair([msg[3], 0]).asSecs.asTimeString,
      b.duration.asTimeString)
    ).postln;
  };
}, '/tr');
)

ERROR: Class not defined.
  in interpreted text
  line 4 char 39:

    # sig, playhead = SuperPlayBufDetails.ar(1, b, MouseX.kr(0.1, 10, \exponential), cuePos:b.atSec(b.duration / 2), cueTrig: MouseButton.kr(0, 1, 0));

    SendTrig.ar(Impulse.ar(10), 0, playhead[0]); // send integer component of playhead
-----------------------------------
-> nil
unculcated commented 3 months ago
SuperPair works
(
x = {
    var bigValue = \bigValue.skr(0);
    bigValue.poll;
    DC.ar(0);
}.play;
)

x.set(\bigValue, 9000.00002.asPair);

perPair: 0.000000
SuperPair: 0.000000
SuperPair: 0.000000
SuperPair: 0.000000
SuperPair: 0.000000
SuperPair: 0.000000
SuperPair: 0.000000
SuperPair: 0.000000
SuperPair: 0.000000
SuperPair: 0.000000
SuperPair: 0.000000
SuperPair: 0.000000
-> Synth('temp__33' : 1156)
SuperPair: 9000.000020
SuperPair: 9000.000020
SuperPair: 9000.000020
SuperPair: 9000.000020
SuperPair: 9000.000020
SuperPair: 9000.000020
unculcated commented 3 months ago
SuperPhasor no sound

b = Buffer.read(s, Platform.resourceDir +/+ "sounds/a11wlk01.wav");

(
{
  var phaseInt, phaseDec;
  var trig = MouseButton.kr(0, 1, 0);
  # phaseInt, phaseDec = SuperPhasor.ar(trig, BufRateScale.kr(b) * MouseX.kr(0.1, 10, \exponential), 0, 0, Float.from32Bits(b.numFrames), 0, Float.from32Bits(b.numFrames/2));
  SuperBufRd.ar(1, b, phaseInt, phaseDec)!2;
}.play;
)

error:

-> Buffer(7, nil, nil, nil, /Applications/SuperCollider.app/Contents/Resources/sounds/a11wlk01.wav)
ERROR: Message 'at' not understood.
Perhaps you misspelled 'as', or meant to call 'at' on another receiver?
RECEIVER:
Instance of SuperPair {    (0x300173e28, gc=18, fmt=00, flg=00, set=02)
  instance variables [2]
    msd : instance of OutputProxy (0x13d0d9408, size=11, set=4)
    lsd : instance of OutputProxy (0x1182df398, size=11, set=4)
}
ARGS:
   Integer 0
PATH: /Users/ss/Library/Application Support/SuperCollider/Extensions/super-bufrd-superpair/HelpSource/Classes/SuperPhasor.schelp

PROTECTED CALL STACK:
    Meta_MethodError:new    0x139123640
        arg this = DoesNotUnderstandError
        arg what = nil
        arg receiver = SuperPair(an OutputProxy, an OutputProxy)
    Meta_DoesNotUnderstandError:new 0x139125980
        arg this = DoesNotUnderstandError
        arg receiver = SuperPair(an OutputProxy, an OutputProxy)
        arg selector = at
        arg args = [0]
    Object:doesNotUnderstand    0x120409f00
        arg this = SuperPair(an OutputProxy, an OutputProxy)
        arg selector = at
        arg args = nil
    a FunctionDef   0x150232718
        sourceCode = "{
  var phaseInt, phaseDec;
  var trig = MouseButton.kr(0, 1, 0);
  # phaseInt, phaseDec = SuperPhasor.ar(trig, BufRateScale.kr(b) * MouseX.kr(0.1, 10, \\exponential), 0, 0, Float.from32Bits(b.numFrames), 0, Float.from32Bits(b.numFrames/2));
  SuperBufRd.ar(1, b, phaseInt, phaseDec)!2;
}"
        var phaseInt = nil
        var phaseDec = nil
        var trig = a MouseButton
    SynthDef:buildUgenGraph 0x13bd1cc40
        arg this = a SynthDef
        arg func = a Function
        arg rates = nil
        arg prependArgs = []
        var result = nil
        var saveControlNames = [ControlName  P 0 i_out scalar 0]
    a FunctionDef   0x13a6bda80
        sourceCode = "<an open Function>"
        arg i_out = an OutputProxy
        var result = nil
        var rate = nil
        var env = nil
    SynthDef:buildUgenGraph 0x13bd1cc40
        arg this = a SynthDef
        arg func = a Function
        arg rates = nil
        arg prependArgs = []
        var result = nil
        var saveControlNames = nil
    a FunctionDef   0x13bd1b1c0
        sourceCode = "<an open Function>"
    Function:prTry  0x1394ce4c0
        arg this = a Function
        var result = nil
        var thread = a Thread
        var next = nil
        var wasInProtectedFunc = false

CALL STACK:
    DoesNotUnderstandError:reportError
        arg this = <instance of DoesNotUnderstandError>
    Nil:handleError
        arg this = nil
        arg error = <instance of DoesNotUnderstandError>
    Thread:handleError
        arg this = <instance of Thread>
        arg error = <instance of DoesNotUnderstandError>
    Object:throw
        arg this = <instance of DoesNotUnderstandError>
    Function:protect
        arg this = <instance of Function>
        arg handler = <instance of Function>
        var result = <instance of DoesNotUnderstandError>
    SynthDef:build
        arg this = <instance of SynthDef>
        arg ugenGraphFunc = <instance of Function>
        arg rates = nil
        arg prependArgs = nil
    Function:play
        arg this = <instance of Function>
        arg target = <instance of Group>
        arg outbus = 0
        arg fadeTime = 0.02
        arg addAction = 'addToHead'
        arg args = nil
        var def = nil
        var synth = nil
        var server = <instance of Server>
        var bytes = nil
        var synthMsg = nil
    Interpreter:interpretPrintCmdLine
        arg this = <instance of Interpreter>
        var res = nil
        var func = <instance of Function>
        var code = "(
{
  var phaseInt, phaseDec..."
        var doc = nil
        var ideClass = <instance of Meta_ScIDE>
    Process:interpretPrintCmdLine
        arg this = <instance of Main>
^^ ERROR: Message 'at' not understood.
Perhaps you misspelled 'as', or meant to call 'at' on another receiver?
RECEIVER: SuperPair(an OutputProxy, an OutputProxy)
unculcated commented 3 months ago

SuperPlayBufDetails . not defined

b = Buffer.read(s, Platform.resourceDir +/+ "sounds/a11wlk01.wav");

(
{
  var sig, playhead;
  # sig, playhead = SuperPlayBufDetails.ar(1, b, MouseX.kr(0.1, 10, \exponential), cuePos:b.atSec(b.duration / 2), cueTrig: MouseButton.kr(0, 1, 0));
  SendTrig.ar(Impulse.ar(10), 0, playhead[0]); // send integer component of playhead
  sig!2;
}.play;

// print the elapsed time:
OSCdef(\trig, { |msg|
  if (msg[2] == 0) {
    ("Start: %       Playhead: %       End: %".format(
      0.asTimeString,
      b.atPair([msg[3], 0]).asSecs.asTimeString,
      b.duration.asTimeString)
    ).postln;
  };
}, '/tr');
)

-> Buffer(8, nil, nil, nil, /Applications/SuperCollider.app/Contents/Resources/sounds/a11wlk01.wav)
ERROR: Class not defined.
  in interpreted text
  line 4 char 39:

    # sig, playhead = SuperPlayBufDetails.ar(1, b, MouseX.kr(0.1, 10, \exponential), cuePos:b.atSec(b.duration / 2), cueTrig: MouseButton.kr(0, 1, 0));

    SendTrig.ar(Impulse.ar(10), 0, playhead[0]); // send integer component of playhead
-----------------------------------
-> nil
sorry about all this. I figured the more info the better

here is may startup file.
im using SuperCollider 3.14.0-dev, built from source.

my startup file:

---

//
// Server.local.options.numOutputBusChannels = 2;
// Server.local.options.numInputBusChannels = 2;
// Server.default.options.inDevice_("Built-in Microph");
// Server.default.options.outDevice_("Built-in Output");
//
// Server.local.options.blockSize = 128;
// p = ServerOptions.new;
// p.memSize = 4096;
// // increase block size (default is 64)
// Server.internal.options.blockSize = 128;
// Server.local.options.sampleRate = 48000;
// Server.internal.options.sampleRate = 48000;
// s.latency = 0.05;
// Server.default.boot;
// make sure you have sc3 plugins installed first
// make sure you have sc3 plugins installed first
(
//var inOut = Server.default.options;inOut.outDevice = "BlackHole 2ch";inOut.inDevice = "BlackHole 2ch";//force devices
s.options.numBuffers = 1024 * 64; // increase if you need to load more samples
s.options.numWireBufs = 128; // increase if you get "exception in GraphDef_Recv: exceeded number of interconnect buffers."
s.options.memSize = 4096 * 256; // increase if you get "alloc failed" messages
s.options.maxNodes = 1024 * 32; // increase if dropouts and the message "too many nodes"
s.options.sampleRate= 44100;
s.options.blockSize = 16;
s.options.numOutputBusChannels = 2; // OUTPUT CHANNELS GO HERE
s.recSampleFormat = "int32";
s.recHeaderFormat="wav";
s.options.numInputBusChannels = 2; // set to hardware input channel size, if necessary
s.latency = 0.3;
// MIDIClient.init; // Untoggle this when you want to do MIDI
// m = MIDIOut.new(0); // Maybe yours is different?
// m.latency = 0.3; // This should match s.latency
// thisProcess.platform.recordingsDir = "/your/path/here/"; // choose where supercollider recordings end up

// scnvim
if (\SCNvim.asClass.notNil) {
    Server.default.doWhenBooted {
        \SCNvim.asClass.updateStatusLine(1, 9670);
    }
};

QtGUI.palette = QPalette.dark; // switch to night mode for floating windows like the meter for example.

// A simple triangle wave synth in stereo with panning and a simple low pass filter
// This synthDef was written by Mads Kjeldgaard and requires the sc3 plugins

s.waitForBoot {
    ~clean = SuperClean(2, s); // two output channels, increase if you want to pan across more channels
    ~clean.loadSoundFiles("~/Documents/mmd");
    s.sync; // optionally: wait for samples to be read
    ~clean.start([0,0,0]); // first 8 out looks like [0,2,4,6]
    SuperClean.default = ~clean; // make the clean key sequenceable inside of SuperCollider
    "[ SuperClean up + running ]".postln;
};

Help.gui;
)
esluyter commented 3 months ago

Thank you for the detail! I think some of the help files are still out of date, holdovers from a previous version. I will take a look this week and make sure all the examples work on my end. More soon