SuperCollider 3.4alpha available

Hi all –

We’ve been working on a new release of SuperCollider, and the first
preview version is now available.

Mac downloads: https://sourceforge.net/projects/supercollider/files/Mac%20OS%20X/3.4alpha/
Source downloads:
https://sourceforge.net/projects/supercollider/files/Source/3.4alpha/
Ubuntu debs: https://launchpad.net/~supercollider/+archive/ppa

3.4 includes many many improvements over 3.3.1, including great work
on full 64-bit support for mac and linux – detailed changelog here:
http://tinyurl.com/sc34ach

It’s an "alpha" release meaning there may still be some tweaks that we
need to fix before the final 3.4 release, so we’d be grateful for
feedback.

Best
Dan

SuperCollider 3.3.1 for windows

Hi –

SuperCollider 3.3.1 for windows is now out
http://supercollider.sourceforge.net/downloads/

Among other things it has an updated swingosc (0.64) and some
interface improvements thanks to Martin Rumori, plus general
SuperCollider improvements since 3.3 as you’ll see in the changelog.

(FYI, the package is the same as the 3.3.1rc2 announced a couple of weeks ago.)

Dan

http://www.mcld.co.uk

ScalaCollider

hey,

just to let you know i’m working a bit on a scala based supercollider client; part of it is a base platform with all the standard ugen graph creation you know from sclang. this base platform is still quite “alpha”, but for example i got all the examples from SC2-examples_1.scd running now. lot’s of ugens missing still, and most of the buffer stuff.

check out the code at

http://github.com/Sciss/ScalaCollider

see the readme for requirements. feel to contact me if you like to be working along on this.

below is a bit (to be executed in the REPL) to show you that some stuff can be almost as concise and almost the same syntax as sclang.

ciao, -sciss-

s.boot

// analog bubbles
val x = play {
   val f = LFSaw.kr(0.4).madd(24, LFSaw.kr(List(8, 7.23)).madd(3, 80)).midicps; // glissando function
   CombN.ar(SinOsc.ar(f)*0.04, 0.2, 0.2, 4) // echoing sine wave
}

x.free

// harmonic swimming
val x = play {
   val f = 50       // fundamental frequency
   val p = 20       // number of partials per channel
   var z: GE = 0.0  // start of oscil daisy chain
   val offset = Line.kr(0, -0.02, 60)    // causes sound to separate and fade
   for( i <- 0 until p ) {
       z = FSinOsc.ar( f * (i+1) ).madd( // freq of partial
           LFNoise1.kr(
               List( Rand( 2, 10 ), Rand( 2, 10 ))).madd(  // amplitude rate
               0.02,    // amplitude scale
              offset    // amplitude offset
           ).max( 0 ),  // clip negative amplitudes to zero
           z
       )
   }
   z
}

x.free

// aleatoric quartet
// mouse x controls density
val x = play {
   val amp = 0.07
   val density = MouseX.kr(0.01,1)   // mouse determines density of excitation

   // calculate multiply and add for excitation probability
   val dmul = density.reciprocal * 0.5 * amp
   val dadd = dmul.neg + amp

   var signal = Mix.fill(4) {   // mix an array of 4 instruments
       val excitation = PinkNoise.ar(
           // if amplitude is below zero it is clipped
           // density determines the probability of being above zero
           max(0, LFNoise1.kr(8).madd(dmul, dadd))
       )

       val freq = Lag.kr(             // lag the pitch so it glissandos between pitches
           LFNoise0.kr(               // use low freq step noise as a pitch control
               Array(1, 0.5, 0.25)(   // choose a frequency of pitch change
                   scala.util.Random.nextInt(3))).madd(
               7,                     // +/- 7 semitones
               IRand(36, 96)          // random center note
           ).round(1),                // round to nearest semitone
           0.2                        // gliss time
       ).midicps                      // convert to hertz

       Pan2.ar(    // pan each intrument
           CombL.ar(excitation, 0.02, freq.reciprocal, 3),    // comb delay simulates string
           Rand(-1,1)    // random pan position
       )
   }

   // add some reverb via allpass delays
   for(i <- 1 to 5) { signal = AllpassN.ar(signal, 0.05, List(Rand(0,0.05),Rand(0,0.05)), 1) }
   LeakDC.ar( signal, 0.995)    // delays build up a lot of DC, so leak it out here.
}