trx is a simple toolset for broadcasting live audio from Linux. It sends and receives encoded audio over IP networks, via a soundcard or audio interface.
It can be used for point-to-point audio links or multicast, eg. private transmitter links for a radio station or other live audio distribution. In contrast to traditional streaming, high quality wideband audio (such as music) can be sent with low-latency, typically as low as a few milliseconds, and incredibly fast recovery from dropouts.
It works favourable as a replacement for traditional ISDN lines and hardware ISDN codecs.
Unlike TCP streaming such as Icecast, trx uses RTP/UDP with handling of dropped packets and network congestion that is more appropriate to live or realtime audio. Much of this comes courtesy of the brilliant Opus audio codec. The result is an incredibly graceful handling of network loss or dropouts.
It is intended for use over closed or private IP networks. It can be used over the public internet, but you are warned that it has no built-in security or authentication of the received audio. If you do not already have a private network you may wish to use an appropriate tunnel or IPsec.
trx is based on the following software/libraries:
This list of examples is not comprehensive:
tx -h 192.168.0.32 # send audio from default soundcard to the given host rx # receive audio and play it tx -h 192.168.0.32 -b 32 # send audio as above, with a lower 32kbps data rate tx -h 192.168.0.32 -m 128 # larger buffer for a non-professional soundcard tx -h 192.168.0.32 -f 480 # smaller frames for decreased latency rx -j 4 # smaller jitter buffer for decreased latency tx -h 22.214.171.124 # send audio over multicast rx -h 126.96.36.199 # recieve audio from the above tx -? # full list of transmitter parameters rx -? # full list of receiver parameters
Each pair of commands feeds audio in one direction only, but multiple sets of tx/rx commands can be used. This means it's easy to use different parameters for eg. a low-quality talkback channel, or an additional monitoring channel.
Paul Evans has contributed some notes on how to play an application into trx and I followed this up with a full guide to streaming desktop audio to another machine, which has become a frequently asked question.
Another user has contributed some latency tests using trx.
The most recent release is trx 0.5 (4th January 2019)
There is a Git repository available:
$ git clone http://www.pogo.org.uk/~mark/trx.git
This software is licensed under the GPLv2.
trx is well suited to fixed or long term links. You may be interested in my new project, Cleanfeed, which has the additional features of an easy-to-use studio UI and encryption, making it well suited as an ISDN replacement in broadcast environments for outside contribution, interviews etc..