Skip to content
This repository

Base platform for Scala based SuperCollider client



ScalaCollider is a SuperCollider client for the Scala programming language. It is (C)opyright 2008–2014 by Hanns Holger Rutz. All rights reserved. ScalaCollider is released under the GNU General Public License and comes with absolutely no warranties. To contact the author, send an email to contact at


ScalaCollider currently builds with sbt 0.13 against Scala 2.10. It requires SuperCollider 3.5 or higher. Note that the UGens are provided by the separate ScalaColliderUGens project. A simple Swing front end is provided by the ScalaColliderSwing project.

Targets for sbt:

  • clean – removes previous build artefacts
  • compile – compiles classes into target/scala-version/classes
  • doc – generates api in target/scala-version/api/index.html
  • package – packages jar in target/scala-version
  • console – opens a Scala REPL with ScalaCollider on the classpath

Note: Due to SI-7268, the project must be currently compiled against Scala 2.10.0 and not 2.10.1 through 2.10.3. It can be used, however, with any Scala 2.10 version.


To use this project as a library, use the following artifact:

libraryDependencies += "de.sciss" %% "scalacollider" % v

The current version v is 1.11.1+

starting a SuperCollider server

The following short example illustrates how a server can be launched and a synth played:

    import de.sciss.synth._
    import ugen._

    val cfg = Server.Config()
    cfg.programPath = "/path/to/scsynth"
    // runs a server and executes the function
    // when the server is booted, with the
    // server as its argument { s =>
      // play is imported from package de.sciss.synth.
      // it provides a convenience method for wrapping
      // a synth graph function in an `Out` element
      // and playing it back.
      play {
        val f =,, 7.23)).madd(3, 80)).midicps * 0.04, 0.2, 0.2, 4)

Specifying SC_HOME

You might omit to set the programPath of the server's configuration, as ScalaCollider will by default read the system property SC_HOME, and if that is not set, the environment variable SC_HOME. Environment variables are stored depending on your operating system. On OS X, if you use the app-bundle of ScalaCollider-Swing, you can access them from the terminal:

$ mkdir ~/.MacOSX
$ touch ~/.MacOSX/environment.plist
$ open ~/.MacOSX/environment.plist

Here, open should launch the PropertyEditor. Otherwise you can edit this file using a text editor. The content will be like this:

  "SC_HOME" = "/Applications/SuperCollider_3.6.5/";

On the other hand, if you run ScalaCollider from a Bash terminal, you edit ~/.bash_profile instead. The entry is something like:

export SC_HOME=/path/to/folder-of-scsynth

On linux, the environment variables probably go in ~/.profile.

For more sound examples, see ExampleCmd.txt. There is also an introductory video for the Swing frontend at


  • Audio file functionality is provided by the ScalaAudioFile library.
  • Open Sound Control functionality is provided by the ScalaOSC library.
  • MIDI functionality is not included, but can be added with the ScalaMIDI library.

download and resources

The current version can be downloaded from

More information is available from the wiki at The API documentation is available at

A mailing list is available at

Something went wrong with that request. Please try again.