|
From: <Do...@as...> - 2001-06-25 15:07:53
|
Hello, I'm writing this e-mail to welcome on the new members of our development team and get the current ones up to speed on the progress of SUB-SONIC. Since Saturday, concentrated development of SUB-SONIC is in progress. We're hoping to provide you all with the core system on which to work on over the next week. I've been working on a few plugins which I'll be trying to get onto the CVS and released soon. Ok what I'm going to do now is give a good break down of the system and what's going on with it so that everyone is up to speed and has a basic understanding of SUB-SONIC. SUB-SONIC General ----------------- The general idea behind SUB-SONIC is that there is a core system and a series of plugins. The core system provides the architecture of the entire system, it must handle audio input, process it with any effects requested and then send it to it's output destination. The plugins are the actual pieces of code which perform their unique part of each stage. There are input, output and effect plugins. A input plugin will take a source usually a file or data stream and turn it into a stream of uncompressed audio data for the core to use. The effect plugin will apply a real-time effect on an incoming audio source before it goes to the output destination. Finally the output plugin takes the final mixed audio and passes it to the output device which can be physical or computer based e.g. soundcard or disk file. SUB-SONIC core -------------- This component has mostly been developed by Dean Bilotti and Lourens Veen, I have provided advice and an explanation on how to implement the audio side of things but they have designed and produced the code. This component is the most system dependent part of the system. Although we've coded it to be as portable as possible, inevitably each platform's multi-threading works in a different way as well as other features, therefore a certain amount of porting will be needed of the core for each platform. A certain portion of the efficiency and power of the overall SUB-SONIC system lies within the core therefore there is always plenty of scope for improvement there. As it stands presently SUB-SONIC is an entirely raw audio data based system, this covers most music systems but some types of music systems currently can't be implemented very well. For example MIDI can only be implemented as a software synthesiser as there is no way for SUB-SONIC to get music data to output devices, therefore a data layer would be required for that. Input plugins ------------- Input plugins in SUB-SONIC have more of a say in the way they want to operate in compared to other APIs like Winamp. We've designed them to be flexible so that an author isn't forced to write to a constrained architecture. If I recall from looking at Winamp's API you had to provide audio data in the same way an MP3 would generate it, which I found potentially troublesome if the music system did not lend itself to that form of data output. The input plugins function by specifying their output audio format (e.g. 44.1Khz, stereo, 16-bit) and then providing a stream of audio data in the specified format at the request of the SUB-SONIC core. At the moment the input plugins data passing system is going for a bit of a redesign. Currently we expect input plugins to produce a time length of data as their input into the core but we are extending this so that plugins can push out an arbitrary quantity of audio data which will then be arranged into suitable blocks of audio by SUB-SONIC. Output plugins -------------- These will vary between portable and system dependent. Output plugins usually deal with taking the mixer output and relaying it to the soundcard either directly or via the appropriate API for whichever platform. The plugins can choose whether or not to provide their own mixing code to replace SUB-SONIC's built in mixer. This is designed mainly to allow for hardware mixing. Each platform that SUB-SONIC gets ported to is going to need at least one plugin of some sort to get the output of SUB-SONIC to the computers audio device. Effect plugins -------------- As it stands the details of these are still a little sketchy. Effect plugins are designed to allow you to apply audio effects (aka DSP effects) to a stream of audio therefore adjusting the final audio in some way. As it stands you will apply effects to the individual streams of audio and as yet there are still design issues with applying effects to the mixed audio. Effect plugins are our least needed area of development at the moment as it's not an overly critical part of the system for the time being. ------------------------------------------------- Hopefully the above summary should give you all an idea of roughly how things work under the present design, if you wish to add design comments feel free to do so. The actual development state of SUB-SONIC varies. The core has been through an R&D stage, we had several trial versions developed. After a few days discussion with Dean we are now working on what we hope should become the final version of the core. I've been working on 3 input plugins based on an old R&D version of SUB-SONIC. They are as follows: IMF - Intermediate Module Format This is a multi-format module player. Presently only a few formats are supported and a few of the pattern effects are missing but the system works. This plugin will be needing a lot of further development and I hope to document it in detail soon. The source code is very well commented. Wave plugin This just plays a standard raw PCM data Microsoft wave file. Further enhancements should either use the ACM with running on Windows or we should implement our own version of some of the ACM formats so that they can be played on other platforms (e.g. MP3, ADPCM). EA Audio plugin This is a plugin written to play back music in Electronic Arts own audio format found in many of their games. Presently we've got the uncompressed audio working fine but the ADPCM code doesn't seem to work properly. AAC plugin I've started a bit of work on trying to implement the MPEG2 AAC audio format as plugin. This code does not function yet as I've only done some initial coding. -------------------- So now you all know about SUB-SONIC I guess your wondering where do we go from here. Well that all depends on what you the development team want to do. This is a free project done in what I assume is everyone's spare time therefore you contributions should be what interest you the most. On the plugins side we have many formats to support. I'm not sure what approach to take with things like MP3 as there are several choices. We can either based the plugins on an existing project's decoding library such as LAME, write our own based on the ISO sources or write our own from scratch using the actual ISO standard. The amount of work require of course varies greatly amongst those options. Some plugins are going to need only a little bit of effort, others are huge jobs. IMF for example is almost like a project within itself. The core will need porting as soon as something solid and stable is ready and there are always design obstacles that need to be addressed and overcome with the core system itself. Feel free to ask questions, suggest things to do etc. I hope we can all get into the development of SUB-SONIC soon. Doug ------------------------------------------------ Douglas Gore (do...@as...) ICQ: 15620154 ------------------------------------------------ SUB-SONIC project manager http://www.sourceforge.net/projects/sub-sonic/ ------------------------------------------------ |