Site hosted by Angelfire.com: Build your free website today!

 







What is Sfx?

Sfx is an compiler and integrated development system used to generate digital audio effects and synthesizer instruments. The computer language used to build these instruments and effects is the Sfx language, a superset of the MPEG-4 standard SAOL audio compiler language.

The Sfx compiler is a C++ front-end compiler. That means that SAOL or SFX code is converted to C++, and then compiled into executable orchestras that can then be used to generate real-time audio. As a result, the current release of Sfx requires that Microsoft Visual C++ 6.0 be installed on the system on which Sfx is running. Work is currently underway to support the Borland C++ compiler current available for free at http://www.borland.com .

Sfx provides an integrated development environment that is used to build Sfx projects. The IDE provides features such as the following:

  • Single-key-stroke compilation of Audio projects.
  • Integrated editing and error message support.
  • Debugging aids such as graphical trace output windows.
  • Assembly of related SFX/SAOL orchestras, SAOL or MIDI file sequences, and audio files.
  • Graphical monitoring of CPU load and audio output levels.

Fig 1: The Sfx Integraged Development Environment

The technology preview release of Sfx currently only supports playback of Sfx programs from the development environment; however work is underway to allow use of Sfx compiled projects with Microsoft DirectShow and DirectMusic, as well as to allow Sfx orchestras to be played in real-time as a standard MIDI device in the Windows environment.

Sfx and MPEG-4

The MPEG-4 Audio standard is a standard being developed by ISO to provide advanced audio and video streaming capabilities in excess of the current MPEG-1, MP3 and MPEG-2 standards. One of the primary initiatives of the MPEG-4 standard is to support structured audio.

Structured Audio is a technology that allows raw audio to be sent over the internet, and mixed and processed on the client machine instead of the server. The motivation for doing this is that many forms of audio, such as MIDI sequenced data can be sent extremely compactly if a program on the client computer is used to synthesize portions of the audio on demand.

Although the MIDI standard file format provides for compact transmission of music over the Internet, historically, the problem has been that MIDI output devices on client computers are of varying quality ranging from excellent to truly awful. In addition, despite the GM MIDI standard, compatibility between MIDI devices remains troublesome.

SAOL is intended to solve the MIDI compatibility problem and others. MPEG-4 Audio files will send SAOL programs in source-code form along with audio and other data. The client will then run the SAOL program to reconstruct the final audio output. SAOL programs will be used to define synthesizers that will produce virtually identical audio output regardless of the client computer on which the SAOL program is run.

SAOL will also allows MPEG-4 content creators to build audio-effect nodes that provide advanced audio effects on client computers. SAOL programs will likely be used to produce advanced audio mixing applications, and generate sophisticated 2D and 3D positional audio output generated on the client to match the configuration of the client computer.

The Sfx language is a superset of the SAOL language. As a result, legal SAOL programs should run within the Sfx environment.

The Sfx Extensions

Sfx provides a number of extensions to the standard SAOL language.

The SAOL language is intended to provide a minimum set of functions required to efficiently implementation streaming of structured audio over the Internet.

Sfx supports these features, but is also intended to be used as a Computer Music synthesis language in environments such as Microsoft DirectMusic, DirectSound and DirectShow.

In addition to core SAOL features, Sfx provides the following extensions:

  • A simple mechanism for writing extended opcodes in C++.
  •  Additional Data types. Sfx supports integer as well as real datatypes in order to improve execution speed in certain applications.
  • Increased precision. Sfx synthesis is performed using 64-bit floating point, instead of 32-bit floating point.
  • Reduced rate-restrictions on user-defined opcodes. Sfx supports specialop user-defined opcodes.
  • Debugging opcodes such as _trace_ and _assert_.

Extended Sfx features can optionally be disabled in order to enforce compliance with the ISO SAOL language standard.

Click here to return to the Sfx home page.

 

Copyright © 2000 Robin Davies.
All Rights Reserved.
Contact: rerdavies@msn.com