sciss / soundprocesses

A computer music framework to describe, create and manage sound processes in the Scala programming language. Mirror of

Contributors Wanted


Gitter Build Status Maven Central


SoundProcesses is an extension for ScalaCollider to describe, create and manage sound processes in the Scala programming language. It is (C)opyright 2010–2018 by Hanns Holger Rutz. All rights reserved. SoundProcesses is released under the GNU Lesser General Public License v2.1+ and comes with absolutely no warranties. To contact the author, send an email to contact at

Further reading:

  • Rutz, H. H., "SoundProcesses: A New Computer Music Framework," in Proceedings of the ICMC|SMC|2014 Joint Conference, Athens 2014.

For tutorials, see the Mellite website.


SoundProcesses builds with sbt and Scala 2.12, 2.11. The dependencies should be downloaded automatically from maven central repository.


The following dependency is necessary:

"de.sciss" %% "soundprocesses" % v

The current version v is "3.21.3".

The following sub modules are available:

"de.sciss" %% "lucrebitemp"     % v          // bi-temporal data structures
"de.sciss" %% "lucresynth"      % v          // transactional layer for ScalaCollider
"de.sciss" %% "lucresynth-expr" % v          // standard expression types
"de.sciss" %% "soundprocesses-core"     % v  // everything but views and compiler
"de.sciss" %% "soundprocesses-views"    % v  // common swing views
"de.sciss" %% "soundprocesses-compiler" % v  // compiler integration

For compiling the tests, the following additional resolver may be needed:

resolvers += "Oracle Repository" at ""


Please see the file


Project is still experimental, and documentation is still sparse. There is a graphical front-end Mellite (also experimental)... The Mellite website contains a tutorial on SoundProcesses.


  • in the Lucre-3 based version 3 (experimental) branch, currently constant Expr object do carry an id and thus are not identical to each other when created repeatedly even with the same peer constant. This was done in order to satisfy Obj property, e.g. for any IntObj including its constants. A future version may go back to 'cheap' constants which must be explicitly lifted if one wants to access attr on them.