[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [sc-users] SuperCollider as playback engine: Advice needed





The engine needs to have the following capabilities:

  • Play a buffer "soundfile.wav" out of a single channel n with gain g
  • Play a buffer "soundfile.wav" out of channels [n1,n2,n3, ...] with gains [g1,g2,g3, ...]
  • Play a buffer "soundfile.wav" out of ALL channels with gain g
  • Provide a reference to playback instances so they can be killed, have gains updated, etc.


  • This above is all easily done, and I am guessing you have an idea about how to do it.
  • Development Plan:

  • Develop synthDefs for the capabilities above that can be called with args above. The synthDef should "die" once playback is done.

  • Why should the SynthDef 'die'? Just curious... If you use arguments correctly, and build fairly modular SynthDefs, you can use them over and over again... Or - do you mean that once the playback is done that the Synth you created (a Synth is the playing of a SynthDef) frees itself? If it is this, then either create an envelope that is the duration of the sample with a doneAction of 2, or wrap the PlayBuf output into a FreeSelfWhenDone UGen.

  • "Install" those synthDefs (not sure of terminology here) permanently on scserver so they will be available at server startup. Not sure how to do this.

  • .load the SynthDef. This writes out a binary representation of the SynthDef that is stored on disk. Then, the SynthDef is loaded when the Server boots
  • Create new synthDef instances on the server by sending OSC messages from our Java app. I hope to do this with JavaOSC or JCollider.

  • 'Instances' of the SynthDef are called Synths, or are created with the '/s_new' OSC tag. Any OSC capable app can do this. Is there any reason not to use the SuperCollider language app? If there is, the next step is easy... 
  • Send back a reference to each new synthDef for remote Java control of that instance. Not sure how to do this.

  • a = Synth(\synthDefName, [\arg1, arg, \arg2, arg ... \argN, arg]);

    'a' is the reference.
  • Configure scserver to run at Mac OS startup. Not sure how to do this.

  • If you use the SuperCollider app, then place it in your startup items. OR - make a standalone app and make that a startup item. Then, once ti boots, you can have it execute code by altering Main.sc (and since you are altering Main.sc, I suggest making a stand-alone). Tell it to boot the server, and once the server boots, execute your code.

    If you don't use SuperCollider.app, then you need to figure out a similar way to do this.

  • Several other things which I have not thought of yet.


  • Hope that helps.

    Josh

  • Thank you for any input you can offer.


    View this message in context: SuperCollider as playback engine: Advice needed
    Sent from the Supercollider - User mailing list archive at Nabble.com.

  • ******************************************

    /* Joshua D. Parmenter

    http://www.realizedsound.net/josh/


    “Every composer – at all times and in all cases – gives his own interpretation of how modern society is structured: whether actively or passively, consciously or unconsciously, he makes choices in this regard. He may be conservative or he may subject himself to continual renewal; or he may strive for a revolutionary, historical or social palingenesis." - Luigi Nono

    */