SCREAM - SuperCollider Resource for Electro-Acoustic Music
Michael Leahy*
EGR & Recombinant Media Labs
[email protected]
Abstract
SuperCollider3 is a major achievement for programmatic
real time audio synthesis. However, the adoption of
SuperCollider3 has been limited to a small community due
to it being a domain specific language/environment and the
difficulty of using the tools provided in the default
distribution. The SuperCollider3 language is a powerful
tool to interact with the SuperCollider3 server, but requires
the user to engage SuperCollider3 through a programming
language. Scream is a high level component oriented
framework built in Java to interact directly with the
SuperCollider3 server. Scream enables complete
applications to be built with sophisticated GUIs that are
accessible to users of all skill level while maintaining an
API for developers to create new software.
1 Introduction
Scream is a cross platform component oriented Java
environment and API to utilize the SuperCollider3 DSP
audio engine and language among other OSC/MIDI enabled
applications. My initial goal with Scream is to establish a
framework to use with SuperCollider3 (SC3) to create new
audio tools for studio, live performance, and sound
installation applications. SC3 is the most advanced real time
audio programming environment available today. Since the
summer of 2002 SC3 has been an open source project under
GPL with a fairly small, but dedicated community. SC3 is
very powerful, however it is not directly aimed at the
hobbyist or typical musician. Currently, other real time
audio engines such as Max/MSP and PureData offer the user
a graphical interface to create synthesis patches. The default
tool to interface with SC3 is SCLang which is an interpreted
programming language similar to Smalltalk. SCLang is a
client to the SC3 Server and communicates with it via OSC
(Open Sound Control).
2 Scream Description
Scream is a high performance real time engine that
facilitates advanced software development and multimedia
interaction with SC3 through a component oriented
framework. This framework provides many services to
Scream applications such as an accurate callback
clock/scheduler, custom event system and data models,
efficient client/server based networking system for OSC
communication, and hardware accelerated 2D/3D graphics
library support.
2.1 High Level Language Support
Scream is constructed in the Java programming
language. There are many benefits to using a high level
language to connect to the SC3 Server. The first and
foremost benefit is that Java is an easy to understand and
mature object oriented language that supports rapid
component oriented development. Java also provides several
auxiliary APIs for networking, MIDI, graphics (Java2D,
JOGL, LWJGL), and cross platform support.
An immediate concern of using Java is the ability to
create a real time system appropriate for music performance
and creating multimedia interfaces. JFC/Swing is the
standard GUI toolkit available, but is not necessarily a real
time capable system. Scream provides a custom GUI library
that is renderer agnostic. Components in the GUI library
may have multiple hardware accelerated renderers
constructed in Java2DlVolatile Image API, JOGL
(OpenGL) and/or LWJGL (OpenGL). Swing is still
accessible in Scream GUIs when using a Java2D or JOGL
renderer, but is not relied upon to display real time data.
r igure -t. A partiai screen imxage snowing comxponents tronm une
Scream GUI library. The ScreamGraph component (using a Java2D
renderer) is on the left displaying a hypotrochoid shape. It may be used
for spatialization or as a geometric oscillator. Knobs and faders are
visible on the right.
~ Michael Leahy, 2004
Proceedings ICMC 2004