The purpose of this document is to provide an on-going update on network performance options. The intent is to address the basic issue of performing or rehearsing with one or more remote performers. Audio Latency is the big issue. When traditional musicians perform, they generally need to be able to hear, at least, some of the other musicians. The issue of seeing the other musicians is addressed in a separate document. For our purposes, a standard "recording studio" setup is most appropriate where musicians may be isolated (in booths or blocked by panels), but they can hear each other acoustically or through headphones with minimul delay. It is worth noting here that musicians will generally experience a delay of 5-10ms as a result of their instrument and velocity of sound through the room.
1. Jack - Many have had success with using Jack (on OSX or Linux). Version .72 of JackOSX was used for the Soundscape iGrid setup - this model still works on PPC machines (as well as it ever did), even on OSX 10.4. Jack provides the lowest latency accross all of the open source applications. The downfall is that it is complicated to setup and requires reconfiguration for each session (or whenever a computer crashes). By far, this is still the best solution for patient computer experts who have access to specific hardware. NetJack (the component which provides the network transmission) was dropped for version .73 and .74. Since Version .74 is required for Intel Macs, older Macs (or Linux) is required for the Jack model. The CCRMA folks have had some reason performances with Jack on Linux with their JackTrip applicaiton (http://ccrma.stanford.edu/groups/soundwire/).
2. Jam Routing with Jack - In the simple "jam" model, performers each send and receive 1 channel. What they receive is a mix of all other performers. So, each "client" location can hear the entire mix. This seems to work well with Jack .72 on G4 laptops (the only complication being that the server and clients need to be configured with IP addresses). RAX V1.2 is nice as a simple mixer since it's Jack-friendly and has AU delay plugins which can be used to compensate for different delays between clients (the newer version of RAX has more overhead and is really overkill and, unfortunately, support for RAX has been discontinued).
2. iChat - version 3.1 one-way latency (between computers on the same ethernet hub) runs about 130ms. Three-way iChat (with video) works well, but the audio quality is limited and the delay can be obtrusive when performing traditional music.
3. Skype - version 2.5 one-way latency runs about 170ms. Group Skype (with video) works well, but the audio quality is limited and the delay can be obtrusive when performing traditional music.
4. Other Options for software - The CCRMA folks have their JackTrip application to help and Jackdmp is, currently, under developement.
The "Audio Unit" model
OSX 10.4 comes with the AuNetSend and AuNetReceive Audio Unit plugins. While most applications will support AuNetSend, most have not yet implemented the "Generator" which is required for AuNetReceive. In fact, the only application which I found to reliably run the AuNetReceive generator is "AU Lab" (a tool which comes free with the Developer tools).
A "NetJam" setup with the AuNetSend/AuNetReceive Audio Units between 4 Macs using stereo send and return (16-bit PCM) can be established with delays as low as 30ms.
Each plugin seems to add ~10ms of latency. So, after inputing, sending, mixing and returning, we get a total delay of ~30ms for the round trip. (i.e. the same delay you'd see across a large auditorium - ok, really large). Switching to mono doesn't seem to affect latency and any of the alternate stream formats add latency.
Aside from the delay, the setup works really well. As long as your IP address and audio interface doesn't change, you just open up a preset mixer and you're ready to go - much less confusing than the Jack setup.
That is, the master "mixer" can shutdown or any of the clients can shutdown and things just come back
In addition, AU Lab stores its setup as an XML file (which can easily be edited with a text editor or script). So, changing IP addresses can be, somewhat, automated.
Setting up AU Lab
Follows are examples of the Mix Host and Studio setup. a different mix, perhaps for the audience (bussing in this way does not seem to add any latency).
| The Mix Host has 4 AuNetReceive generators which are bussed to a single "Input" bus which has AuNetSend effects to return to the studios. The Master output of the Mix Host can be used to provide
||The Studio setup includes one, stereo audio input with AuNetSend plugin, a bus for a "Testtone" (using the MDA testtone plugin) with auNetSend and a generator for the stereo return from the Mix Host. The Master output is played through headphones or speakers.
MDA AU Plugins (includes testtone)