Roc Toolkit 0.4 + updated tutorial for live audio streaming

Roc Toolkit implements real-time streaming over unreliable networks like Internet and Wi-Fi, with high quality and low latency. It can connect audio apps and devices across network, which run PipeWire, PulseAudio, bare ALSA, macOS CoreAudio, and Android. You can use it via C library, bindings, CLI tools, sound server extensions, …


Roc Toolkit 0.3 is out!

Roc Toolkit implements real-time streaming over unreliable networks like Internet and Wi-Fi. It works on Linux and macOS and provides C library, CLI tools, modules for PulseAudio and PipeWire, and Android app. The 0.3 release was focused on: reducing minimum allowed latency running in CPU-constrained environments extending C API …


Two C++17 projects open for contributions

This one implements a tool (both CLI and GUI) for measuring audio latency and glitches. The idea behind the tool is simple: you have an audio loopback that connects audio output to audio input; the tool writes impulses to the output, waits until the same impulses are received from the input, and measures the delay or other …


Updated tutorial for Roc 0.2

This article is an updated version of previous tutorial. An overview of the new release is available here. There are two main changes that affect users: PulseAudio modules moved to a separate repo and have their own build system and new build instructions. Command-line tools now use universal URI notation for network endpoints …


Roc Toolkit 0.2 released

Roc is a toolkit for real-time streaming over unreliable networks. It works with desktop and embedded Linux, ALSA, PulseAudio, PipeWire, macOS, and Android. For a quick intro, see project repo and two previous articles: 1, 2.


A step-by-step tutorial for live audio streaming with Roc

Roc is an open-source toolkit for real-time audio streaming over the network. You can learn about the project here: overview, features, usage. Among other things, Roc can be used as a network transport for PulseAudio, ALSA, or macOS CoreAudio, and connect audio applications and devices across the network. Roc has the following …


Roc 0.1 released: real-time streaming over the network

I’m happy to announce the first release of Roc Toolkit, version 0.1.0! Roc provides a C API for real-time audio transport. The user just writes a stream to the one end and reads it from another end. Roc, in turn, performs encoding and decoding, and, more importantly, deals with the problems related to the real-time …


Working on a new network transport for PulseAudio and ALSA

Last few years I was working on Roc Toolkit, an open-source solution for real-time media streaming over the network. Due to lack of free time, we postponed release several times, but now it’s almost ready. This article is, inter alia, some kind of a pre-release announcement. You can read more about the project here. The …


PulseAudio under the hood

I’m working on the Roc Toolkit open-source project, a development kit for realtime audio streaming over the network. You can read more about the project in these two articles: 1, 2. We decided to implement a set of PulseAudio modules that will allow PulseAudio to use Roc as a network transport. Many Linux distros employ …


Decoding and playing audio files in Linux

I was playing with various media libraries recently and have prepared several snippets demonstrating how one can decode and play an audio file in two separate steps. The source code is available on GitHub here and there. The following libraries are used: FFmpeg SoX ALSA (libasound) PulseAudio libsndfile Each snippet is a small …