----------------------- Requirements for Awedio (pronounced aw - dee - oh) ----------------------- Description/Background ---------------------- a DJ/programmer and i were discussing the possibility of creating a more universal interface to sound to coincide with the tide of digital media as a replacement for physical media. originally conceived as a nice tool for DJs spinning purely digital sound at raves, parties, radio stations, etc., Awedio became conceived as a more universal tool. it is now envisioned as a generic I/O system for as many audio formats as the developers feel like implementing, as well as a generic processing system, where the processing sits at a plug-in level between Input and Output. Criteria/Features ----------------- * well-established I/O: the goal here would be some sort of streams-based design. an input signal can be considered a stream. there should be the option of allowing multiple input signals from a wide variety of sources (e.g. mp3, aiff, live feed, MIDI). output would be much the same. we should be able to provide output in any desired format. initially, the priority would be to simply provide a sound signal, but we would want to be able to produce any sort of file format or streaming audio, as well, plus options for multiple signals for things like 4.1 sound systems (or even basic stereo). * robust signal processing: this has lower priority than basic I/O. without any processing in the middle, signals should just flow in and out of the system. the possibility for a drop-in processing module would allow for just about any signal processing imaginable (e.g. reverb, flanging). additionally, the final implementation should support basic sequencing functionality. users should be able to create loops, for instance. * real-time processing: this would require not only solid processing algorithms, but also intuitive accompanying interfaces. sometimes we would want to present turntables or sliders or graphics mimicking systems with which audio engineers are already familiar. core requirements ----------------- * processors: a standard player interface. this is something that would correspond to traditional virtual CD players (e.g. xmcd, Apple CD Audio Player). it would provide standard functions such as Stop, Play, Pause. with a generic queueing function implemented, functions such as Skip Track and Back Track (i.e. fast forward and rewind, respectively) would make sense in this context. also, in keeping with the tradition of the origins (i.e. a DJing system), it would be nice to have a turntable interface to provide realtime scratching capabilities. maybe the DJ module could be extended to provide support for beat matching. * file formats: at the least, file formats we should support are mp3 and aiff. it would be nice to support MIDI input and streaming audio (e.g. RealAudio). these should be supported in both the input and output modules. * channels: we should support mono and stereo signals in the initial prototype. testing ------- testing would involve first testing the input channels by verifying that signals are coming in as expected. once input is successfully working, it would be necessary to try sending output to as many sources as were implemented. once the I/O is thoroughly tested, signals can be sent through the processor and analyzed for correctness on the other side (prior to output). final comments -------------- most of the requirements for this project remain to be specified. this is because much of the project is designed to be as extensible as possible and suit the needs of any audiophile who happens to run across it. thus, it would be nice to design the system with a plug-in interface similar to the sort available with Photoshop or Netscape.