I'm reworking my 2019 Ethernet Audio Library (old Ethernet Audio Library thread and Library) to take advantage of T4.1 native ethernet and to align the UDP packet protocol with what's being used by other products.
While there are a large number of network audio protocols to choose from (Wikipedia), many require special network hardware and others are proprietary. Of the remainder, the ones most common in pro audio equipment (Dante, Milan and Ravenna) are overkill for our purposes or have limited implementation information available to non-member organisations.
As I use Voicemeeter (donation-ware) as a desktop audio mixer with commercial audio interfaces, I have chosen its open network protocol (VBAN) as the basis for this revision. The Voicemeeter crew also provide apps for IOS and Android devices that will receive VBAN audio.
The new version:
Current
While there are a large number of network audio protocols to choose from (Wikipedia), many require special network hardware and others are proprietary. Of the remainder, the ones most common in pro audio equipment (Dante, Milan and Ravenna) are overkill for our purposes or have limited implementation information available to non-member organisations.
As I use Voicemeeter (donation-ware) as a desktop audio mixer with commercial audio interfaces, I have chosen its open network protocol (VBAN) as the basis for this revision. The Voicemeeter crew also provide apps for IOS and Android devices that will receive VBAN audio.
The new version:
- 2, 4 and 8 channel input and output objects feeding to and from a single control_ethernet object.
- Elastic buffers and dropped packet/overflow correction to resolve small master clock and block timing differences between hosts.
- VBAN protocol compliance to allow multi-channel audio to and from desktop PCs and mobile devices.
- Out of the box integration with Voicemeeter on the desktop and IOS/Android 'Receptor' apps.
- At the network layer I can receive up to 32 channels of audio packets from Voicemeeter on an isolated 100Mb network, using QNEthernet and Khoi Hoang's https://github.com/khoih-prog/AsyncUDP_Teensy41 library with out any dropped packets.
- Wired into my home network, performance is not nearly as good. Whether this is because of some complexity with forward error correction on the WiFi side, or just fighting with other traffic I haven't yet determined.
- Incoming packets are queued for the input object to unpack and transform into audio buffers.
- Unpacking variable length incoming packets into timely audio streams.
- Adequately buffering incoming audio streams while maintaining low latency.
- Error correction for dropped packets and small differences in master clock rates.
- Output streams which will be simpler as packet transmission is synchronous with Teensy audio update( ) cycles.
Current
- Input packet transformation into Teensy audio. This is made somewhat more difficult as Voicemeeter can dynamically change a stream's sample rate and number of channels, and the number of samples per packet and packet interval varies with these parameters.
Last edited: