libsoundio vs JUCE

Joshua Olson edited this page Nov 30, 2018 · 4 revisions

Benefits of libsoundio over JUCE:

  • Supports PulseAudio backend.
  • Supports Dummy backend, guaranteed to work even if computer has no sound card.
  • Supports channel layouts (also known as channel maps), important for surround sound applications.
  • Exposes both device id and friendly name. id you could save in a config file because it persists between devices becoming plugged and unplugged, while friendly name is suitable for exposing to users.
  • Callback function provides frame_count_min and frame_count_max to optimally leverage fixed-buffer backends such as JACK and CoreAudio, as well as flexible buffer backends such as ALSA and PulseAudio.
  • Errors are communicated via meaningful return codes, not strings.
  • Exposes extra API that is only available on some backends. For example you can provide application name and stream names which is used by JACK and PulseAudio.
  • Ability to get an event when the backend is disconnected, for example when the JACK server or PulseAudio server shuts down.
  • Ability to connect to multiple backends at once. For example you could have an ALSA device open and a JACK device open at the same time.
  • C library, does not have complicated class hierarchies or depend on libstdc++.
  • No bloat. Does one thing and does it well.

Benefits of JUCE over libsoundio:

  • Supports ASIO backend. See #23.
  • Supports iOS and Android.
  • Does more than just audio I/O, for example it has UI and codec APIs.
  • Supports older versions of Windows than Windows 7.
You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.
Press h to open a hovercard with more details.