2.2 Scream Engine Scream is an engine that provides services to all executing modules. For instance there is only one clock/scheduler that is shared between all executing modules. This allows accurate event scheduling to occur on a regular basis without interruption. Another subsystem that is shared between all modules is MIDI. Data models from any module may register to receive MIDI events that are dispersed from a central interface. A further Scream subsystem is the lag and modulation engine. Most Scream controls may be lag enabled or connected to modulation sources such as various LFO waveforms. The ScreamGraph component pictured in Figure 1 is used for spatial data, but also can be used as a complex geometric oscillator/modulation source. On the API side for developers Scream integrates functionality such as loading and saving state automatically. Developers do not need to worry on how to implement load/save functionality when the Scream component library is used to construct new software. One of the most compelling features of Scream is its component orientation. Scream utilizes a plugin engine that facilitates extensibility. All Scream modules are essentially plugins that utilize the functionality of the Scream engine. There is a lot of freedom in designing a new audio system. Unlike other audio tools where plugins are basically limited to audio effects or instruments, each component in Scream may define its own plugin interface. An example of a current Scream component that utilizes five different types of plugins is the ScreamGraph component. ScreamGraph plugins include generators (parametric math, polar, splines, etc.), transforms (image processing on the resulting generated geometry), positional plugins, time movement (linear time, random, brownian), and data filters. Data filtering is an interesting aspect of Scream components. A generic component may have a data filter attached to its output. The ScreamGraph component includes data filters to translate graph coordinates to the proper format for SC3s ambisonic spatialization functionality. On the fly coordinate data is transformed into amplitude and angular data. 3 Current Scream Progress Fulltime development of Scream commenced in April 2003. I have overcome most of the major development issues to providing a high performance environment for Scream. Most of my work has been focused on the Scream engine itself, but presently (February 2004) there are three completed applications available. The first application is a granular sampler. This application allows the loading of sample data into SC3 from local files or over the network and enables the user to scan (forwards/backwards), alter the sampling rate, pitch shift, and define an envelope applied to the sample. The second application is an ambisonic mixer utilizing the 1st order b-format functionality available in SC3 which is suitable for spatializing audio on a 2D plane with N-speakers. The final application is a combination of the previous two, the AmbiGranusampler which enables the Granusampler with ambisonic spatialization. Scream was used for a large scale installation at Burning Man during August 2003. The Sol System collective constructed an eight point sound array erected around a 120' diameter circle. Each point was an 5' by 10' full range stack of speakers. This was a perfect setup to utilize the Scream ambisonic spatial mixer and it sounded amazing on the open desert with no confined space causing reflections. rliguilt~. l3ui 1 YSLtiI 0 Uclllllltl SuUIIi atlnlay tL DUPllllg IVitall LUJ (picture by: Andrew Poison) 4 Future Scream Development Work on the Scream engine continues rapidly. Core engine functionality will be well defined, implemented, and tested by summer 2004. This functionality includes an IDE editor and compiler for SC3 synth definitions. Beyond Scream engine development the standard component library will be extended. These extensions include further modular environments such as a standard mixer that maps to SC3 functionality. Other components will include 3D graphics/spatialization tools. Eventually, 2nd and 3rd order ambisonic plugins will also be developed making Scream/SC3 capable of controlling a large scale speaker array setup in a 3D arrangement. 4.1 Middleware Integration Scream will integrate with various middleware software available on the Java platform. In particular Scream will integrate with the Xith3D and OpenMind 3D scene graph engines, JavaODE physics bindings to ODE (Open Dynamics Engine), the SimBionic AI engine, and JMSL. 4.2 Domain Specific Language Integration With OpenGL 1.5 support and beyond Scream will utilize OGLSL (OpenGL Shading Language). OGLSL is a domain specific language (DSL) oriented towards extending the fixed hardware pipeline of modern accelerated graphics cards with programmable functionality called shaders. Proceedings ICMC 2004
Top of page Top of page