Skip to content

Instantly share code, notes, and snippets.

@njh
Last active September 24, 2024 08:36
Show Gist options
  • Save njh/c9196c465ea33ae9f97db782870464ef to your computer and use it in GitHub Desktop.
Save njh/c9196c465ea33ae9f97db782870464ef to your computer and use it in GitHub Desktop.
AES67 Open Source Software Wishlist

AES67 (an open standard for high quality audio over IP) is becoming mainstream in the world of broadcast and professional audio industries, however there is a very limited amount of open source software available to interoperate with it. As a result we are often just replacing XLRs with Ethernet, without taking advantage of the possibilites the software give. While Virtual Soundcards enable some of this, native network implementations would allow greater flexibility.

This is my wishlist of things that would help change that. Hopefully one day it can be turned into a AES67 Awesome List.

As open source has resulted in very rapid evolution of the web, I believe the same is possible for professional/broadcast audio.

It is possible that some of this already exists and I just havn't found it yet. Please add a comment below if you know of something!

The Wishlist

  1. A guide to setting up a PTP master using Linux + GPS (Raspberry PI + UBlox gps module?)
  2. Long-running Stream recorder / Recording of Transmission archiver
    • Either write 1 hour audio files to disk
    • Or write chunked audio (~6 seconds per audio file) to disk, that can then be streamed back using HLS/DASH
    • Write files based on the PTP/RTP clock
    • Ensure that missing packets don't skew time (replace with silence/repeat previous packet?)
  3. A test tone generator
  4. A talking clock (based on 'wall clock' PTP time)
  5. Play an audio file directly to the network
    • Looping (allowing line identification streams)
    • with resampling to make the audio match the rest of the network
  6. A AES67 stream router
    • Web interface to make remote control/monitoring easy
    • Relay multicast/unicast streams from one subnet to another
    • Monitor the parameters of multicast streams on the network
      • Samplerate
      • Number of subscribers
  7. Silence detector
    • Trigger the execution of a command
    • Trigger the sending of an MQTT message?
  8. Level meter
    • Allow remote monitoring in GUI / Text console
  9. Software mixer
    • Mix together multiple input streams into an output stream
    • Remote control of the levels of each incoming stream (MQTT?)
    • Other tunable parameters?
  10. LADSPA host
    • AES67 → LADSPA Plugin → AES67
  11. Make jackd interoperable with AES67
    • Could you then run jackd without any native audio / kernel support?
    • How different is Netjack to AES67?
  12. Apple AirPlay bridge
    • Playing audio on iOS device → AES67
    • AES67 Audio → AirPlay speakers
@calmcl1
Copy link

calmcl1 commented Sep 10, 2018

Regarding item 2, the ROT archiver, I've got a project on the go (though admittedly on the backburner at the moment, as it's silly season at work) called Chronicle. It's an hourly ROT archiver, though at the moment the timing is based on the system clock, so the system would have to be synced to an NTP/PTP server. It's currently in 24/7/365 use at Halton Comunity Radio in the UK, and being trialled in a couple of other stations. Maybe it's worth a check?
https://github.com/hcr923fm/chronicle

@rshamsnejad
Copy link

rshamsnejad commented Oct 12, 2018

Hi !

I am very excited to find this wishlist, because I am currently stirring a lot of things related to open-source AES67 support for Linux. I am an audio engineer and former IT nerd, and I have a LOT of motivation about this. Let me comment your list :

Wish 1 : it is actually pretty easy, I will try to draft a tutorial as soon as I have tested every case I can think of. But all in all, on a fresh latest Debian install, it does not take me more than half an hour to fully configure a master ptp server.

Wish 4 : I don’t understand what you mean by a talking clock ?..

Wishes 2, 3, 5, 7, 9, 10, 11 : all these ideas could be gathered in one : we need an AES67 virtual soundcard ALSA module. That way, every need of streaming or recording audio to/from the network is narrowed down to using a simple audio device. (See Audinate’s Dante Virtual Soundcard, Merging’s Virtual Audio Device, Lawo’s R3LAY VSC, etc). I found this github with some guidelines, wrote to the author but did not get an answer yet : https://github.com/SimonTait/alsa67

I would like to start laying some milestones on this driver, but kernel programming involves a pretty steep learning curve for me :D

Wishes 6 and 8 : they could also be gathered : it could become a unique discovery/monitoring/routing software, much like Audinate’s Dante Controller or Merging’s ANEMAN.

Wish 7 : something could be derived from this project : https://github.com/WMFO/Silence-Detector

Wish 12 : why would like this feature ?

@edglazer
Copy link

I've been tracking open source AES67 and axia/livewire implementations for a couple of years now and these are the tools I've found:
An example of a loudness meter/gui, like number 8:
https://github.com/kylophone/AXIA-LUFS

There are also several related players/recorders from network devices (for #2):
https://github.com/kylophone/xplay
https://github.com/kylophone/axiadump
https://github.com/kylophone/AACAxiaDump

An example of transcoding, in this case to feed an icecast stream:
https://github.com/ykmn/livewire-streamer

and an example of being able to play to and play from network sources: (#5, possibly #9? Haven't tried it):
https://github.com/openbroadcaster/obplayer

And lookslike someone has made progress on a jack<-->AES67 interface as well (#11):
https://github.com/markmcconnell/mai

#12 is probably never gonna happen for a couple of reasons (airplay being a proprietary and undocumented protocol, for one). As example, this dude is working on sending between ESP32 devices on wifi and has gotten a latency of 2ms, where AES67 requires 0.25ms (according to his readme):
https://github.com/sfc-arch/esp32_aes67_sender

Would love an ALSA driver, but AES67 is probably too niche for now. I seem to recall a buddy telling me that he was seeing job postings for AES67 knowledgeable engineers to work on car audio, and if that becomes a common practice, I can imagine it getting more traction.

But it's always great to see people sharing resources on AES67, so anything y'all come up with is awesome!

@dewiweb
Copy link

dewiweb commented Feb 3, 2019

Finally, Merging technologies has published yesterday an Ravenna/aes67 alsa driver with some limitation for personal use. More information here: https://merging.com/products/alsa_ravenna_aes67_driver

@njh
Copy link
Author

njh commented May 27, 2019

For anyone interest in AES67 and Audio over IP, I have created this Google Group:
https://groups.google.com/d/forum/audio-over-ip

@nettings
Copy link

nettings commented Aug 4, 2019

At least the Airplay wish is now "reduced" to getting JACK running, as shairport-sync has JACK support enabled in the latest pre-release.

@dsseng
Copy link

dsseng commented Feb 4, 2023

12.2) might work on PipeWire (likely the upcoming 0.3.66), since it should be able to capture AES67 RTP packets and send to AirPlay. Not really reliable for now, but testing appreciated.

@dsseng
Copy link

dsseng commented May 27, 2023

You can track PipeWire support improvements on our tracker issue: https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/3217 . Feel free to add comments, especially if you have compliant devices and are willing to sometimes build PW from source and test our development effort

@prk0ghy
Copy link

prk0ghy commented Feb 11, 2024

#2 honorable mention:
https://github.com/voc/aes67-recorder
also
#8 here might be some hints (also source for first link)
https://blog.mazdermind.de/2019/01/01/aes67-auf-dem-35c3/index.html

@dsseng
Copy link

dsseng commented Feb 12, 2024

We're happy to announce more successful tests and major improvements for PipeWire AES67 support. PipeWire 1.1.0 release will include all the improvements necessary for AES67 (verified interoperable with Dante and RAVENNA). Check out the docs for setup guide and tested hardware: https://gitlab.freedesktop.org/pipewire/pipewire/-/wikis/AES67

You can use PipeWire's AES67 implementation to work with other audio hardware, PulseAudio, ALSA and JACK clients. Devices are visible to common software just as general audio cards are.

Any feedback welcome either via Freedesktop Gitlab or reaching me another way. Would be glad to help and hear your success or demands for improvements.

@Mo-way
Copy link

Mo-way commented Jul 4, 2024

Hey there, I just started with an "awesome inspired" list: https://github.com/Mo-way/awesome-aoip

Not sure if it will ever be official, but thought it would be nice to collect what's already there.

@Mo-way
Copy link

Mo-way commented Sep 24, 2024

There's someone working on the PTP GPS guide (#1):
https://github.com/jclark/pc-ptp-ntp-guide

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment