ScalaCollider-Swing
statement
ScalaCollider-Swing is a Swing GUI front-end for ScalaCollider. ScalaCollider is a client for the SuperCollider sound synthesis server.
(C)opyright 2008–2021 by Hanns Holger Rutz. All rights reserved. It is released under
the GNU Affero General Public License
v3+ and comes with absolutely no warranties. To contact the author, send an e-mail 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.
Please consider supporting this project through Liberapay (see badge above) – thank you!
downloading
- A binary (executable) version is provided via archive.org or 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 or github.com/Sciss/ScalaColliderSwing.
building from source
ScalaCollider-Swing builds with sbt against Scala 2.13, 2.12. The last version supporting Scala 2.11 was 1.41.4.
-
sbt assembly
creates a fully self-contained jar (platform neutral)
To link to ScalaCollider-Swing:
"de.sciss" %% "scalacolliderswing" % v
Or just to some submodules:
"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 version v
is "2.9.2"
.
contributing
Please see the file CONTRIBUTING.md
running
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).
You can also run the "old" multi-window demo using
documentation
- There is a small screencast intro at www.screencast.com/t/YjUwNDZjMT (slightly out-of-date)
- ScalaCollider was also presented at Scala Days 2012
- See the ScalaCollider site for mailing-list information, Wiki, and additional resources
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
s.gui.scope() // show oscilloscope for the output buses of the server
// 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
someBus.gui.scope() // show oscilloscope for the given bus
// 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.