NetJack - Jack Over The Net

Netjack is a Realtime Audio Transport over a generic IP Network. It is fully integrated into JACK.

When you transport Audio Signals over a Network, you will always have the problem, that two Computers are bound to two different Sample Clocks. The other Network Transports face the Problem of compensating for the drift between these Sample Clocks. This is very hard to do.

NetJack works around this problem, by syncing all Clients to one Soundcard. So there will be no resampling or glitches in the whole network. As long as there is no packet loss. Packet loss can not be compensated.

NEWS

17-jul-06 netjack-0.12 The fragmentation code is correct now. please report back on this. I am especially interested in the performace of rt-kernels.

27-apr-06 netjack-0.12rc1 Done on the train ride to lac2006. The Fragmentation issue is almost fixed now. At -p 128 blasts 100 channels through the loopback.

16-apr-06 netjack-0.11 Here it is. Now with less cryptic messages. I will now have a go on fixing the latency with huge channel counts. It seems that the kernel is somwhat slow in splitting up UDP Packets.

08-apr-06 netjack-0.11rc5 Ok. This should really be the final 0.11. But some testing is still necessary. And i dont have the time currently. But alsa_in and _out now even work with jackd -d dummy.

05-apr-06 netjack-0.11rc4 Fixed some distortion error which slipped in.

PREREQUISITES

Two machines with a _good_ network connection between them. A recent Jack source package.

alsa-dev (libasound2-dev), libsamplerate0-dev, jack-dev

INSTALLATION:

Compiling netjack is currently a little hassle, because it needs some header files from Jack which are only in the source and not installed by default. This will change, when the packet format has stabilised and NetJack will be part of Jack. Also expect an install target for scons soon.

compile with scons jack_source_dir='path/to/jack-src'

this creates jack_net.so. copy this to /lib/jack/drivers or wherever jack looks for driver.so`s it also creates jacknet_client. a normal program. and it creates alsa_client.

USAGE

On the master machine, start up your normal jackd. Then Start

jacknet_client -p SLAVEMACHINE

Your Terminal will be filled with debug output now. In the meantime the program opened a jack client with 2 In and 2 Out Ports. These ports will be connected to the other end of the network, where you start:

jackd -d net -r MASTER_RATE -p MASTER_PERIOD

Expect autoconfig in netjack-0.9.

TRANSPORT

The slave machines JackTransport is synced to the Master machines Transport. So try to avoid touching transport controls on the slave, and start the transport on the master machine.

KNOWN ISSUES

There is always atleast one buffers delay if a port is routed back through the connection. This is a design issue that might be hard to remedy.

LICENSE

this is free software under the GPL license, see the file COPYING.

Authors

torbenh _at_ gmx _dot_ de ( mail me, if you use it, please )

Dan Mills

Robert Jonsson

SourceForge.net Logo