[Audacity-devel] OSC for Audacity
A free multi-track audio editor and recorder
Brought to you by:
aosiniao
From: Jean-Baptiste T. <jb...@dc...> - 2009-03-17 15:40:03
|
Hi, I have recently added OSC (Open Sound Control) to my personal version of Audacity, using Ross Bencina's oscpack library. I am using this so far for my own research, so that a Java application can communicate with Audacity and create tracks, add sounds and play these directly without any GUI control of Audacity. The code is working well, but it would be great if an Audacity expert could have a look at it. Let me explain first why I think this would be a great feature for a future release of Audacity, and what is left to do. OSC is a protocol that is comparable in many ways to MIDI. It facilitates the exchange of data between programs. It consists of a UDP (or TCP) platform for message exchanges. Many music programs and hardware today have implemented OSC, but none of these are a digital audio workstation, as far as I know. The music programs that have OSC implemented include the real time applications Reaktor, Max/MSP, Pure Data or SuperCollider. Hardware devices include the Lemur, Arduino, and other sensor systems. Adding the OSC feature to Audacity would allow to communicate with other programs. But communicate what? Audacity is not a real-time program, i.e. it is not meant to modify sound as you go. However, the representation of sounds within Audacity could be manipulated and controlled from outside, allowing e.g. the construction of musical pieces without the constraints of time-based representation. The constraints imposed by time-based representations have been described by many, e.g. Roger Dannenberg, a great contributor to this very software (Dannenberg, ``Music Representation Issues, Techniques, and Systems,'' Computer Music Journal, 17(3) (Fall 1993), pp. 20-30.) What I have done so far is to create a simple send/receive interface for Audacity. This works as a separate thread. It listens to the port 7000 and writes on the port 7001. I have implemented simple actions following the reception of messages. These include adding a mono sound at a given offset on a new track and create a bounce of the whole representation. For some reason, I had trouble to control the play/stop commands. It would be necessary to add new features before this is part of a release though, such as adding a stereo sound, adding a sound at a given offset to an existing track (as opposed to a new track), play, pause, stop, and also add some controls over sound transformations. Changing the offset of an existing sound could be useful too, as well as dumping a text description of the whole window (i.e. offsets, tracks, and canonical pathnames for all the sounds). I would be happy to provide the code I have developed so far, with the list of modifications, as well as a simple java program to test it. I can also host a forum and a repository if needed. I would be glad to do more work on this, but I'm aware that it will be difficult for me to develop bullet-proof C++ and I need a bit of support! I would appreciate advices regarding the requirements for this to be part of a future release, as well as collaborations for the development of a more complete OSC interface for Audacity. Thank you, Jean-Baptiste Thiebaut Ph.D. student London, UK |