Category Development: all Software Engineering, code related stuff

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 :frowning:

Portaudio

Very active, ubiquitous in open source audio applications (mainly on windows.)

Docs for Windows audio driver

High Definition (HD) Audio device driver interface (DDI)

LabSound

RTAudio

Miniaudio

  • multi devices possible
  • Windows: WASAPI, DirectSound
  • macOS, iOS
  • Linux: ALSA, PulseAudio, JACK
  • BSD
  • Android: AAudio, OpenSL|ES
  • Raspberry Pi
  • Emscripten / HTML5

Embedded Web Server https://github.com/cesanta/mongoose

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.

1 Like

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

Nice, we are listed in
https://libreav.org/

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)

Jitsi for music

  • how to create a virtual webcam

https://news.ycombinator.com/item?id=22813565