Skip to content

A Swing based front end or "mini-IDE" for ScalaCollider

Notifications You must be signed in to change notification settings

jayber/ScalaColliderSwing

 
 

Repository files navigation

logo

ScalaCollider-Swing

Flattr this Gitter Build Status Maven Central

statement

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

(C)opyright 2008–2017 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.

screenshot

downloading

building from source

ScalaCollider-Swing compiles against Scala 2.12, 2.11, 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.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).

documentation

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 = 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.

About

A Swing based front end or "mini-IDE" for ScalaCollider

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Scala 90.1%
  • Shell 9.9%