Accueil › Forums › Créer avec IanniX › supercollider help
any examples how to use with supercollider
is there a special class needed?
thank you
I’m not a SC user, but perhaps these links will help to steer you. Pdf of the author’s slide presentation:
http://opensoundcontrol.org/publication/use-open-sound-control-supercollider-server
and this from an ambitious user:
http://www.local-guru.net/blog/2009/03/08/osc-events-in-supercollider
I think there’s been OSC support in SC for a long while now, so I’m guessing some basic classes are part of the standard distribution OSCresponderNode looks like a class for dequeuing and perhaps also parsing OSC messages.
Cheers,
–Bob
hey thanks for your reply
googling i’ve found this
http://sourceforge.net/projects/iannix/files/Old/
There are classes and examples for using iannix with supercollider
but i’m pretty sure it’s based on an old version…
The new public version seem to be much more straightforward and have less configurations
??
I’ve been working around OSCresponderNode but was unsuccessful …
Hi!
Thierry, our Supercollider user, will answer you, but he’s busy these following days, be patient 🙂
I’m looking forward to Thierry’s input. In the meantime, you might be interested in this: One of my Facebook colleagues, https://www.facebook.com/dick.valentine, just put up a Supercollider example video, along with a description of his patch.
Cheers,
–Bob
Hi there,
Bob pointed me to the forum here after I posted my first (ever) IanniX/SuperCollider example at <<https://www.facebook.com/video/video.php?v=2115690658718>>. My goal in constructing the patch was simply to figure out how to to use the two software capabilities together. I posted the example with the hope that it would be useful to demonstrate the minimum conditions for making it work. So with Bob’s encouragement I’m submitting some details here.
My researches suggest there are three basic approaches to using IanniX together with SC:
1. Communicate to the SuperCollider server directly from IanniX. SCserver listens on port 57110, but it’s vain to send just any commands there. The IanniX score must emit commands recognized by the server, documented exhaustively at <<http://supercollider.svn.sourceforge.net/viewvc/supercollider/trunk/common/build/Help/ServerArchitecture/Server-Command-Reference.html>>.
My example is a beginner’s effort. It seemed simpler to start with one of the scores in the IanniX distribution.
2. Use a IanniX-distributed score (unchanged) to communicate with an intermediate environment (say Processing or pd or Max), drive SuperCollider from there. A lot of flexibility might be latent in an approach like this, but it’s just a little too Rube Goldberg for me.
3. Communicate to the SuperCollider language from IanniX. SC has library objects for this, in particular OSCresponderNode filters incoming OSC messages by command. I get the impression SC developers intended to make this the preferred, or anyway easiest path.
OSC is a foundation capability in SC. SCserver and SClang use it communicate with each other. Traffic between the two is constant when the server’s running, but normally invisible to the user. Observe the traffic in the server with s.dumpOSC.
SClang cannot be directed to listen on an arbitrary port number. It has a listening port open (51720, unless it found that one in use on startup), so that’s the port IanniX messages should be directed to. The IanniX distributed scores talk on 2001, so I changed that to 51720. It can also be made an input parameter, like « number of circles » etc.
A SynthDef should be loaded in the server for the score to activate and interact with. My example uses a Karplus-Strong plucked string implementation. All that’s needed then is to start an OSCresponderNode listening. The SClan code is short and quite simple:
g = OSCresponderNode(nil, ‘/trigger’,
{ |time, responder, msg|
var pitch, octave, triggerIndex = msg[1];
var scale = [ 28, 29, 31, 33, 35, 36, 38 ].midicps;
note = scale[ triggerIndex % 7 ];
octave = (triggerIndex / 7).floor;
Synth(« KSpluck », [ pitch, note*(2**octave), amp, 1.5]);
}
).add;
This responder is now listening for trigger messages, calculating pitches based on trigger_id (in msg[1]) and instantiating a sounding Synth for each one.
That’s about it for the highlights. I’m pretty excited about getting this to work, there’s so much potential latent in the objects that IanniX affords. Thanks you guys for a nicely thought out piece of software!
–Dick Valentine
Very nice writeup, Dick. It tempts me to consider taking up Supercollider. However, I’ve been fooling around on the periphery of Pd and Max for a decade and still haven’t gotten past novice stage there!
Cheers,
–Bob
sorry for being such a noob but how do i change 2001 to 51720 ??
got it had to modify the jscript ; )
is it possible to have a look at your KSpluck synthdef aswell?
thanks a lot for the help! 😉
another question how do i show up the script editor for a new document ?
Inspector > File inspector > Scripts & Styles > Current project
Double-click « New script »
@Guest wrote:
another question how do i show up the script editor for a new document ?
Cheers,
–Bob
@Guest wrote:
another question how do i show up the script editor for a new document ?
You can find a version of KSpluck, along with more physically modeled SuperCollider patches, at http://www.informatics.sussex.ac.uk/users/nc81/courses/cm1/scfiles/11.1%20Physical%20Modelling.html
@vvvv1 wrote:
is it possible to have a look at your KSpluck synthdef aswell?
thanks a lot for the help! 😉
… sorry, quoted the wrong question first time …
There’s a version of KSpluck, along with more physically modeled SuperCollider patches, at http://www.informatics.sussex.ac.uk/use … lling.html
Hey thanks dick for everything but i still got some problems
when i change my sawbass arg note to freq to have iannix’s triggerIndex control it’s pitch it just clips and crashes…
hmm don’t get much on how Iannix messages works and the one you wrote either
or perhaps it is just some stupid mistalkes i’ve made
it will be great if i could get some explanations for newbies like me!: )
thanks a lot ; )
(
SynthDef(
« sawbass »,
{
|note = 35, amp=1.2, cutoff=350, decay=1|
var env, audio;
env = EnvGen.kr(Env.new([0,1,0],[0.001,2],[3,-50]),doneAction:2);
audio = RLPF.ar(Saw.ar(note.midicps,amp),cutoff)*env;
audio = CombC.ar(audio,1,0.125,decay);
Out.ar([0,1],audio);
}
).send(s);
)
(
g = OSCresponderNode(nil, ‘/trigger’,
{ |time, responder, msg|
var pitch, octave, triggerIndex = msg[1];
var scale = [ 28, 29, 31, 33, 35, 36, 38 ].midicps;
var note = [ triggerIndex % 7 ];
octave = (triggerIndex / 7).floor;
Synth(« sawbass »/*, [ freq, note*(2**octave), amp, 1.5]*/);
}
).add(s);
)
NetAddr.langPort
© IanniX Association
Qu'est-ce que IanniX ? | Téléchargement | Showcase | Forum | Recherche | À propos
Cookie | Durée | Description |
---|---|---|
cookielawinfo-checkbox-analytics | 11 months | This cookie is set by GDPR Cookie Consent plugin. The cookie is used to store the user consent for the cookies in the category "Analytics". |
cookielawinfo-checkbox-functional | 11 months | The cookie is set by GDPR cookie consent to record the user consent for the cookies in the category "Functional". |
cookielawinfo-checkbox-necessary | 11 months | This cookie is set by GDPR Cookie Consent plugin. The cookies is used to store the user consent for the cookies in the category "Necessary". |
cookielawinfo-checkbox-others | 11 months | This cookie is set by GDPR Cookie Consent plugin. The cookie is used to store the user consent for the cookies in the category "Other. |
cookielawinfo-checkbox-performance | 11 months | This cookie is set by GDPR Cookie Consent plugin. The cookie is used to store the user consent for the cookies in the category "Performance". |
viewed_cookie_policy | 11 months | The cookie is set by the GDPR Cookie Consent plugin and is used to store whether or not user has consented to the use of cookies. It does not store any personal data. |