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
Top of page Top of page