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 sciss.de
.
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 github.com/Sciss.
- A binary (executable) version is provided via GitHub releases. We provide a universal zip for all platforms as well as a dedicated Debian package.
- The source code can be downloaded from github.com/Sciss/ScalaColliderSwing.
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.32.1"
.
Please see the file CONTRIBUTING.md
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).
- There is a small screencast intro at www.screencast.com/t/YjUwNDZjMT
- ScalaCollider was also presented at Scala Days 2012
- See the ScalaCollider site for mailing-list information, Wiki, and additional resources
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 = graph { // use `graph { ... }` instead of `play { ... }` to capture function
PinkNoise.ar
}
fun.gui.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.