SuperCollider On Organelle


#13

i would be interested, i am going to catch my research Organelle up hopefully today or tomorrow to i can parallel run some of these. I want to do a SC Gendy
Also i think it would be cool to have an patch that takes say stuff like SCTweets and uses them in patches for effects etc… We need a simple select .SCD and Evaluate Code function i assume so synths can be re-run easily. This is really cool.
I already have Csound&RTCmix working this would be the FLipple crown or functionality :slight_smile:


#14

found another issue with sclang going to 100% cpu, fortunately found a fix too … but will mean I’ll need to update the SC_Installer… but will probably wait until Ive done a bit more testing, and see if there are any other issues to be caught.

but good news is I can update the OLED display without issue, and have had some success in getting knob values from mother host :slight_smile:


#15

that’s encouraging

pp


#16

I had literally just googled “supercollider hardware”. On the day my Organelle arrived. Opened the forum and saw this. Auspicious.
Fantastic @thetechnobear, thanks.


#17

i just want to share lightly that i have AT least as many SC patches as pure data ones that i have created, saved and curated since around 1998, so the games will begin when everything is tested out

:slight_smile:


#18

Ok, Its very nearly ready… Im working on mother.scd (mother.pd equiv.) as we speak…

currently, my test polyphonic synth is working… with full organelle functionality :slight_smile:

Actually I quite like SC, as you’ll see below in my example, is really compact for coding things up.

things still left to do for mother.scd

  • aux key

  • encoder handling

  • expression pedal

  • volume knob, this will patches using an audio bus, rather than using bus 0 (similar to throw~ in PD)

  • vumeter display

  • midi
    possibly, similar default CC/note I/O like PD, not decided, as i dont really use this, and it can be patches

Im not planning on initially on multiple page menu, user patches can do that… so think of its a mother.pd (v1).

Im pretty new to SC, so if there are some SC gurus out there that want to help on developing the mother.scd please shout… there are some interesting ‘technical issues’ :slight_smile:

anyway, unfortunately other things to do today… so will be a few days before release , but its getting there !


Ok, so on to the test synth … and what it looks like…

code breakdown of main.scd

all in one file, called main.scd, in the Patches directory… like PD.

Initialisation

notice here how I send messages to the OLED.

~voices = Dictionary.new;
~cutoff = 5000.0;
~oled.screen(5,"Test Patch Loaded");
~oled.screen(1,format("Cutoff % Hz",~cutoff.asInteger));

knob handling

create a callback function for handling the knobs, and then register it for callbacks (addDependent).
you can see I also take the opportunity to update the display… and any playing voices.

~knobfunc = {
    arg func, msg, knob, value;
    if(knob==0, {
        ~cutoff = value.linexp(0,1,50,20000);
        ~oled.screen(1,format("Cutoff % Hz",~cutoff.asInteger));
        ~voices.values.do({  arg  v;  v.set(\cutoff,~cutoff);  }
        );
    });
};
~knobs.addDependant(~knobfunc);

key handling

create a callback function for handling the keys, and then register it for callbacks (addDependent).
simply here, I create a voice if necessary for the key, and turn it off on note-off

~keyfunc = {
    arg func, msg, key, vel;
    if(vel>0 , {
        if(~voices[key]!=nil,{~voices[key].set(\gate,0);});
        ~voices[key] = Synth.new(\testSynth,[
            \freq, (key+59).midicps,
            \cutoff, ~cutoff,
        ]
    );
    } , {
        if(~voices[key]!=nil,{~voices[key].set(\gate,0);});
        ~voices[key] = nil;
    };
    )
};
~keys.addDependant(~keyfunc);

a synth to play :slight_smile:

and then a simply synth that has a low pass filter, so I can demonstrate the knobs (via cutoff)

SynthDef(\testSynth,
    {
        arg freq=440,gate=1,cutoff=440;
        var sig,env,amp=0.3;
        sig = Saw.ar(freq);
        env = EnvGen.ar(Env.adsr(),gate,doneAction:2);
        sig = sig * env * amp;
        sig = LPF.ar(sig,cutoff.clip(10,24000));
        Out.ar(0,sig!2);
    }
).add;

#19

this is cool. I’m gonna hop on this today after i squash some bugs and get sketches organized
cheers~


#20

nothing really to ‘hop on’ yet as Ive not pushed everything needed…
as mentioned in the last post, theres still a few things I want to complete first, then Im going to need to release a new SC_Installer, new ‘firmware’ and also hopefully a small ‘surprise’ extra… oh and some commented demos so that users have an idea of how to use it all.

as always, its one thing having it working on my own organelles, and another to have it in a state where I’m happy to release it :slight_smile:

but it was a weeks since I talked about it, so wanted to give a small status update, and to say its not too far away now… (I’ll admit the OTC 1.2 update, did sidetrack me a little ;))


#21

This is fantastic! I had given up on this. Thanks @thetechnobear! Can’t wait to try it on my Organelle. :slight_smile:


#22

i had not read through it all it looked like you were close to releasing it so just give a holler when you have it where you like and i’ll pull some examples for testing

cheers~

pp


#23

Ok, an initial release is now available, including a test patch

Notes:
SC_Install has been updated, and is required to be reinstalled
You will need to install TB17 to launch supercollider patches

mother.scd should be considered ‘experimental’, i.e. it will be changing/updated, the current release is to allow myself and others to get some experiences of what might need to be changed etc.
so dont start building huge patches based on it… or if you do, be prepared to have to update them :wink:

Install instructions etc, in top post …

p.s. if you install let me know if you can get the test patch working ok…
also if your experienced with SC, Im happy to consider changed to mother.scd to make it easier for users to use.

one thing, Im particularly interested in, is less client side dependency… so that its easier to use with a remote client… e.g. currently s.freeAll will clear the mainOutput object, which is not a problem, apart from a dependency with the volume knob. (I do not want to make them permanent, to fix this)


#24

after installing the OS and the supercollider installer, is it simple a case of putting the patch on the USB and then clicking on it to open it? does it automatically know which mother patch to use?


#25

just put the patch in the patches directory, in the same way you would do a pure data patch.


#26

thanks. i’m going to try it out later.


#27

EDIT: I noticed the OS2.2TB17 and SC_install zip previously uploaded were corrupt on Patchstorage.
Ive just uploaded new versions, which work fine now (00:30 CET)


#28

Oh working nicely, green led flashing while playing Organelle keys… “full” polyphony!! all keys - cpu %33…

ummm what else…


#29

i just downloaded but inside the SC_install zip, after unzipping, there are some other zipped files, and some of them don’t seem to unzip. it’s seems odd. can you check?


#30

you only need to unzip the file you download off patchstorage, then transfer the entire folder over to /usbdrive/system … don’t unzip/touch anything in that folder :slight_smile:

I tested it last night it’s fine
(Just make sure you downloaded after midnight last night :))


#31

i ran it from ‘patches’ (right?) then a black screen comes up on the LED


#32

the new OSTB17 installed fine, but the SC test patch isn’t working.