QOrchestra: a visual authoring tool for SAOL
In the last 2 years of my Master of Science in Computer Science education at the VUB, I became interested in real-time audio processing. The first project I designed and implemented was an authoring tool for the Structured Audio Orchestra Language (SAOL). This signal processing language is part of the Mpeg-4 Audio Standard and is similar to the CSound language. You can find more information about SAOL here. The SAOL program embedded in the Mpeg-4 bitstream could be interpreted or compiled to generate real-time audio. Any type of sound processing algorithm could be implemented in this language.
At the time, there were no tools available to design algorithms easily. The only way you could write and run a SAOL program was using a text editor and a SAOL compiler such as sfront by John Lazzaro. My goal was to build a visual editing tool for SAOL programs that could be used to quickly create complex audio processing algorithms and test them using an external compiler or interpreter. The design was very similar to that of a diagram editor such as Microsoft Visio but did some run-time checking on inputs and outputs of SAOL opcodes and rates. The software was implemented in C++ and Qt on Linux.
Later on I introduced a new format for representing re-usable audio algorithms, called FlowML. The format was specifically designed to be easy to use for people who are used to modular synthesizers and systems such as MAX/MSP or Pure Data. The format was specified using XML DTDs at the time. I wrote a simple translator (called FlowML2SAOL) for translating FlowML to SAOL code and I also implemented a Netscape viewer plugin for FlowML files. My diagram editor (called QOrchestra) would then write FlowML files instead of SAOL code. The goal was that other people could then write a FlowML to CSound translator, for example. The FlowML to SAOL translator was a command-line program written in C++ and used Xerces-C++ to read, write and validate the FlowML documents.
I collaborated with a few students from the HKU in The Netherlands, who were working on a library of SAOL instruments and algorithms which they released into the public domain later on. By the end of the project other tools started to become available which were more advanced than my editor, so I choose to use other people's editors and put my source code into the public domain. One of these other tools is CPS by Bonneville.
You can find a presentation in PowerPoint format on QOrchestra and FlowML here. If you are interested to implement a visual editor for SAOL and would like some object-oriented C++ code to start from, feel free to email me for a copy of the QOrchestra source code.