Why use codecs?
Livewire is a professional-grade AoIP platform. It features 48 kHz, uncompressed, 24 bit audio, and requires substantial bandwidth - 2.304 Mbps per stereo channel. Because Livewire has very low delay (as low as 250 µs) it cannot tolerate a network with too much latency or jitter.
It’s easy to build a local area network (LAN) in a single studio facility that meets these needs, but what if you need to share audio between facilities, or between a studio facility and the cloud? The quality of wide area networks (WANs) varies substantially, making audio transport across them more challenging.
Zephyr Connect bridges these two environments, helping to overcome the limitations of WANs by:
Reducing the bandwidth needed for transport by using codecs
Accommodating the delay and jitter caused by WANs
Transport Options
Zephyr Connect supports three different transport protocols, each of which offers unique benefits and compromises.
UDP
UDP is the first option, and the default receive mode for Zephyr Connect. It's a unicast transport method offering simplicity and low delay, but no error correction. A codec transmitting audio using UDP mode doesn't care if all the packets (or any of them) are received by the other end. It sends audio to whatever IP address and port you specify and doesn't expect any type of response from the receiving end indicating whether all the packets were received or not.
Because of its simplicity, UDP consumes the least amount of bandwidth.
Because UDP is unidirectional, it is suitable for use on one-way data links.
TCP
TCP is a more reliable unicast transport option, but that reliability comes at a cost. A codec transmitting audio using TCP mode expects a response from the codec at the receive end indicating each packet has been received. If a packet is lost in transport, the codecs will attempt to negotiate retransmission of the missing packet.
Because it requires a constant bi-directional link between the sending and receiving codecs, TCP connections consume more bandwidth, and will not work on one-way data links.
Multicast
As the name suggests, multicast (abbreviated mcast on Zephyr Connect config screens) is for sending streams to more than one destination at the same time. Instead of sending audio to the IP address of the receiving device, it is sent to an IP address in the 224.0.0.0 to 239.255.255.255 range, where any device on that network can receive it.
Given its one to many nature, it's probably not surprising that multicast utilizes UDP and has many of the same benefits and limitations.
Multicast opens up possibilities not available with unicast transport methods, but requires careful network planning which goes beyond the scope of this document. If you need to employ multicast across a VPN or SD-WAN, you should make sure your networking equipment supports it. Many popular router and firewall options support multicast, but some do not.
Learning More
Any good networking book will explain UDP, TCP and multicast in detail, and there are many websites that can help you dive deeper on this topic as well. Our own Introduction to Livewire+ has a chapter titled "Network Engineering for Audio Engineers" which you may find valuable.
Global Options
Configuration → Codecs → Global Options
In Zephyr Connect, there are some parameters that are common to all codec channels. The default settings will work fine in many applications, but it's a good idea to review them and make sure they are compatible with your particular WAN network.
From the Configuration → Codecs menu, click the Global Options button at the top right to set the parameters that are common to all codec channels.
Codec Receive Ports
The Codec Receive Ports section defines the base port number for various types of transport on your WAN. The base port number is the port that will be assigned to the first codec in Zephyr Connect, and will automatically increment by one for each additional codec in use. If multiple WAN paths are used for redundancy, the A and B paths must have different base ports defined. The default values are shown here.
By default, Codec 1 would receive on UDP port 9150. Codec 2 receives on 9151, and so on. Codec 64 (on a fully licensed Zephyr Connect) would use port 9213. These are the ports that the sending Zephyr Connect or iPort will send to.
The UDP multicast port settings for path A and B specify a single receive port for all multicast traffic arriving over the path.
Restoring Default Port Numbers
Checking the box for Restore Default Port Numbers then pressing Apply will reset all port numbers to the factory default values shown in the screenshot above.
Sample Configurations
Zephyr Connect is flexible and presents solutions to many audio transport challenges. Here are a few sample configurations to get you started.
Simple Audio Transport via UDP
UDP Transmit Configuration
On the Configuration → Codecs page, select an unused Codec Channel. Click the enable box on the top row, then select the Livewire channel you want to encode for transport. In this example, we selected channel 5008. You can see this is audio being transmitted because the arrow between the Local and Remote dropdown menus points toward Remote.
Give the source a descriptive Source Name, click apply then options.
When the options page appears, select the type of codec you want to use from the Encoder Type dropdown menu, along with Bitrate, and Channel Config (Stereo, Mono, or Dual Mono.) In this example, we're using AAC at 256 kbps, stereo.
We're transmitting this audio to a Telos iPort High Density at 192.168.1.41 on port 9150 using the default Protocol Type of UDP using Main Output (Path A). After configuring all settings, scroll to the bottom of the page and press apply.
UDP Receive Configuration
On the Configuration → Codecs page, select the Codec Channel associated with the UDP port you're transmitting to. We configured 9150 as the base UDP receive port number above in Global Options, so we know that port 9150 is associated with Codec 1, 9151 is associated with Codec 2, and so on.
Click the enable box on the bottom row, then assign the Livewire channel number you wish to create from the stream being received. In this example, we assigned Livewire channel 4101. You can see this is audio being received because the arrow between the Local and Remote dropdown menus points toward Local.
Set the Source Name to whatever label you wish to apply to this channel on your Livewire network, then click apply.
For a UDP receive channel, you simply need to define the Protocol Type as UDP then press Apply. You should then see some stats for the audio being received, in this case 256 kbps, 48 kHz, AAC.
Simple Audio Transport via TCP
TCP Transmit Configuration
On the Configuration → Codecs page, select an unused Codec Channel. Click the enable box, then select the Livewire channel you want to encode for transport. In this example, we selected channel 5008.
Give the source a descriptive Source Name, click apply then options.
When the options page appears, select the type of codec you want to use from the Encoder Type dropdown menu, along with Bitrate, and Channel Config (Stereo, Mono, or Dual Mono.) In this example, we're using AAC at 256 kbps, stereo.
We're transmitting this audio to a Telos iPort High Density at 192.168.1.41 on port 9550 using TCP as the Protocol Type on Main Output (Path A). After configuring all settings, scroll to the bottom of the page and press apply.
TCP Receive Configuration
On the Configuration → Codecs page, select the Codec Channel associated with the TDP port you're transmitting to. We configured 9550 as the base TCP receive port number above in Global Options, so we know that port 9550 is associated with Codec 1, 9551 is associated with Codec 2, and so on.
Click the enable box on the bottom row, then assign the Livewire channel number you wish to create from the stream being received. In this example, we assigned Livewire channel 4101. You can see this is audio being received because the arrow between the Local and Remote dropdown menus points toward Local.
Set the Source Name to whatever label you wish to apply to this channel on your Livewire network, then click apply.
For a TCP receive channel, you need to define the Protocol Type as TCP then press Apply. You should then see some stats for the audio being received, in this case 256 kbps, 48 kHz, AAC.
Simple Audio Transport via Multicast
Multicast Transport Configuration
On the Configuration → Codecs page, select an unused Codec Channel. Click the enable box on the top row, then select the Livewire channel you want to encode for transport. In this example, we selected channel 5008. You can see this is audio being transmitted because the arrow between the Local and Remote dropdown menus points toward Remote.
Give the source a descriptive Source Name, click apply then options.
When the options page appears, select the type of codec you want to use from the Encoder Type dropdown menu, along with Bitrate, and Channel Config (Stereo, Mono, or Dual Mono.) In this example, we're using AAC at 256 kbps, stereo.
We're transmitting this audio to any device on your WAN network via multicast address 239.0.0.1 on port 8150 with the default Protocol Type of mCast using Main Output (Path A). After configuring all settings, scroll to the bottom of the page and press apply.
Transmit Configuration Options
Zephyr Connect is a highly configurable codec. Here's an explanation of the various options:
Encoder Type
A dropdown menu of all the codec types available. The options are:
AAC - The best all-around codec for bitrates of 96 kbps and above (stereo.) It has excellent packet loss concealment.
AAC-LD - Provides the lowest delay of all the psychoacoustic codecs and is the best choice when interactivity is important, such as on-air interactions with remote guests.
It's roughly 30% less efficient than AAC, which means for equal quality, you would need to use a 30% higher bitrate.AAC-HE - Also known as AAC+, this codec should be used at bitrates of 96 kbps and below. It has good audio quality at 64 kbps and is decent even down to 48 kbps.
It has good packet loss resilience, but not as good as AAC.AAC-HE v2 - The most efficient codec for stereo. It has a parametric stereo function that kicks in at low bitrates. Instead of sending the left and right channels discretely, it sends a core mono signal with steering control.
This makes reasonable quality stereo possible down to 32 kbps, and useful stereo down even to 24 kbps.MP3 (MPEG 1 Layer 3) - This codec is not as efficient as AAC and has poor packet loss concealment.
It is included primarily for compatibility with codecs and software players that only support MP3.MP2 (MPEG 1 Layer 2) - An older codec which is not as efficient as MP3. It offers good results at bitrates of 192 kbps and above.
aptX Enhanced (16 Bit) - Available with an optional license, the aptX Enhanced codec offers low delay, high quality audio.
aptX Enhanced (24 Bit) - Available with an optional license, this is a higher bit depth version of the aptX Enhanced codec, offering higher audio quality at the expense of more data throughput.
Uncompressed Audio - Linear, uncompressed, 48 kHz, 24 bit audio.
No Audio (GPIO Only) - As the name suggests, this option is provided for transport of GPIO with no associated audio stream.
Bitrate
An adjustable parameter for most codec options, it allows you to manage the tradeoff between data throughput and audio quality. Note, not all codecs support all bitrates in the dropdown menu.
If you choose a bitrate that is not compatible with your codec, Zephyr Connect will alert you when you hit the Apply button and let you know which bitrates are allowed for your chosen codec.
Sample Rate
Indicates the sample rate of your chosen codec. This is not adjustable.
Channel Config
A dropdown menu that lets you choose between stereo, mono, or dual mono operation.
DSCP Class of Service
A means of classifying and managing network traffic and providing quality of service (QoS) in Layer 3 IP networks, which can be fine tuned for your application.
Unless you are very familiar with DSCP, we recommend you leave this setting at the default option of 46 Expedited Forwarding.
Main Output (Path A)
This is where you specify the transport Protocol Type you wish to use for the main output, as well as the IP address and Port you wish to transmit audio to on the receiving Zephyr Connect or iPort High Density. The Port you choose will be determined by the settings under Codec Receive Ports on the receiving codec.
For UDP transport to Codec 1, you would use port 9150. For Codec 2, you would use 9151...
For TCP transport to Codec 1, you would use port 9550. For Codec 2, you would use 9551...
For Multicast transport to any Codec, you would use port 8150.
If you select Multicast as your protocol type, you will need to enter a valid address in the multicast range in the IP address field.
Main Output (Path B)
If you're transmitting to a Zephyr Connect or iPort High Density configured with redundant WAN paths, this is where you configure the backup path. Specify the transport Protocol Type you wish to use for the main output, as well as the IP address and Port you wish to transmit audio to. The Port you choose will be determined by the settings under Codec Receive Ports on the receiving codec.
For UDP transport to Codec 1, you would use port 10150. For Codec 2, you would use 10151...
For Multicast transport to any Codec, you would use port 8250.
If you select Multicast as your protocol type, you will need to enter a valid address in the multicast range in the IP address field.
It is not possible to use TCP transport on Path B.
Additional Output Paths
Each Zephyr Connect codec instance (up to 64 per container) is capable of transmitting the same audio to 8 different destinations.