Skip to content
A Swing based front end for ScalaCollider
Scala Shell
Latest commit 7bf35e0 @Sciss v1.27.0



Flattr this Build Status Maven Central


ScalaCollider-Swing is a Swing GUI front-end for ScalaCollider. ScalaCollider is a client for the SuperCollider sound synthesis server.

(C)opyright 2008-2015 by Hanns Holger Rutz. All rights reserved. It is released under the GNU General Public License v3+ and comes with absolutely no warranties. To contact the author, send an email to contact at

Please see the licenses folder for details. It contains the license headers for all dependencies and transitive dependencies. For the binary release of ScalaCollider-Swing, source code is not included but available via the respective OSS project pages, as indicated in the license files, or—in compliance with GPL/LGPL—on request via E-Mail. All source code with group-ID de.sciss is available from


building from source

ScalaCollider-Swing compiles against Scala 2.11 and 2.10 using sbt 0.13.

-sbt assembly creates a fully self-contained jar (platform neutral)

A the sbt shell script by paulp, made available under a BSD-style license, is now included. So if you do not want to install sbt directly on your system, you can just use that script: ./sbt.

To link to ScalaCollider-Swing:

"de.sciss" %% "scalacolliderswing" % v

Or just to some sub-modules:

"de.sciss" %% "scalacolliderswing-core"        % v  // only the core library extensions
"de.sciss" %% "scalacolliderswing-interpreter" % v  // plus the Scala REPL
"de.sciss" %% "scalacolliderswing-plotting"    % v  // plus plotting functions
"de.sciss" %% "scalacolliderswing-app"         % v  // plus the desktop IDE

The current stable version v is "1.27.0".


The standalone jar, created via sbt assembly produces ScalaCollider.jar which is double-clickable and can be run via:

$ java -jar ScalaCollider.jar

Runnable packages can be created via sbt universal:packageBin (all platforms) or sbt debian:packageBin (Debian).


GUI commands

The GUI extensions are available by calling the special .gui method on supported objects. The extensions are imported with import de.sciss.synth.swing.Implicits._.

    // server
    s.gui.meter()               // show peak meters for main I/O
    s.gui.tree()                // show node tree for server's root group

    // group
    someGroup.gui.tree()        // show node tree with a given group as root

    // audio-bus
    someBus.gui.meter()         // show peak meters for the given bus
    someBus.gui.waveform(dur)   // record and plot bus output for duration in seconds

    // graph functions
    val fun = gui {             // use `gui { ... }` instead of `play { ... }` to capture function
    fun.waveform(dur)           // record and plot graph function for duration in seconds

Experimental support for JFreeChart is added (app sub-project only). Extensions are imported with import de.sciss.synth.swing.Plotting.Implicits._.

    Vector.fill(200)(random).plot()                 // 1D plot, lines
    Vector.fill(100)(random).plot(discrete = true)  // 1D plot, sample-and-hold

    Vector.tabulate(316) { i => (i * 0.003 * 0.2).cos -> (i * 0.025).sin } .plot()  // 2D plot, scatter

    Vector.fill(3)(Vector.fill(100)(random-random).integrate).plot() // multiple 1D plots

Chart properties and export to PNG and PDF are available through a context menu.

Something went wrong with that request. Please try again.