If you understand code and ask / answer technical questions, please put them in here.
Libsound.io
C-Library for audio i/o. Mostly active 5y ago, 70 open issues since then, Milestones 2 3 4 stale since 2018, not replying to pull requests since 2017
LabSound
-
Fork from WebAudio, uses nyquist for file i/o, worked once with backends iOS, Android, Alsa, Pulse, JACK, SteamAudio
-
3DAudio via WebAudio https://github.com/GoogleChrome/omnitone#hoarenderer and https://github.com/resonance-audio/resonance-audio-web-sdk
RTAudio
- audio i/o
- Win: ASIO, DirectSound, WASAPI
- Linux: ALSA, JACK, PulseAudio
- OSX
- Doc: http://www.music.mcgill.ca/~gary/rtaudio/
Miniaudio
- multi devices possible
- Windows: WASAPI, DirectSound
- macOS, iOS
- Linux: ALSA, PulseAudio, JACK
- BSD
- Android: AAudio, OpenSL|ES
- Raspberry Pi
- Emscripten / HTML5
Sometimes Pulse does automatically what you don’t want.
Tell it to keep its dirty hands off of Jack:
pactl unload-module module-jackdbus-detect
pactl unload-module module-jack-sink
pactl unload-module module-jack-source
and enabling again
pactl load-module module-jackdbus-detect
pactl load-module module-jack-sink channels=2
pactl load-module module-jack-source channels=2
Or start the one application with
pasuspender -- MyJackApp
Latency inside the server
We need to be realtime group audio for jack to run properly in linux.
sudo usermod -a -G realtime $USER
Log out, log in, enjoy.
NAP Framework
Qt5-based networking library for Audio, Video and control(OSC, MIDI, Artnet, WebSocket)
Open Source (MPL) since 2020-10, started in 2016
Stable development history of 5 main contributors, several art projects built with it during the last years.
Measuring latency for hardcore nerds
If you want to get rid of the last few nanoseconds, you need real tools.
And please have some XDP.
Raspbery Pi tuning
enable Hifiberry
Jack config: 64 Buffer size; 2 periods
in /boot/config.txt:
dtoverlay=hifiberry-dacplusadcpro
force_eeprom_read=0
# remove internal sound: dtparam=audio=on
SOUnd Language - DSL for non-C++ people to do audio
Pipewire
The next professional+Consumer audio and video backend for Linux.
https://blogs.gnome.org/uraeus/2020/09/04/pipewire-late-summer-update-2020/
Great that it is compatible to all pulse and all jack clients. It will go into all distros starting this year.
Many devs still hate pulseaudio.
Not so good for extreme low-latency, since its all timer-based.
WebRTC for music during FOSDEM 2021
5G URLLC for professional audio transmission
Money Quotes:
- Lateny must not exceed 4 ms. Mixing and filtering of audio signals can take up to 2 ms, leaving only about 1 ms for transmission in one direction.
- Data rate 150 kbit/s – 5 Mbit/s
- Reliability 99.9999 %
- of audio links 50 – 300
- Synchronicity ≤ 1 µs
It is pretty quick:
- 2-symbols mini-slot support for downlink and uplink
- (Mini slot based) scheduling every 0.5 ms (for downlink and uplink)