Tag Archives: jackd

Par où commencer l’installation de Rivendell

La mise en production de Rivendell ne se limite pas à installer un package sur une machine. De nombreuses questions se posent lors de la préparation de son installation. C’était justement le sujet d’une réunion avec l’équipe de Divergence FM au début du mois. Le support préparé pour cette discussion a donné naissance à une présentation de quelques 40 slides.

Continue reading

Jack Capture : record jackd from a command line

Jack Capture is a small jack application created by Kjetil S. Matheussen. I wanted to flag it into my del.icio.us but I didn’t find a clean web page which presents the project.

You capture several channels from your jack server. It’s simple, it starts from a command line, it displays the capture level for each channel into the console :

In a X environment, it can start meterbridge for you.

For the moment, you need to download the jack capture sources (the latest release is 0.9.17).

In my mind, the standalone console level meter could be another smart jack tool :-) We need a such tool when we’re performing live or conference recordings to check levels via an ssh connection.

jack.udp enhancements

The afternoon was dedicated to improve the udp link between our studio workstation and our streamer server. We’re using jack.udp since 2004 to transport sound over network.

Using jack.udp to link two jackd servers creates always an unsolvable problem : the two jackd servers aren’t synchronized. They are synchronized on their own sound card … There are always to many or not enough frames sent by the first jackd for the second one. When a buffer underflow occurs (our case between these two servers), the jack.udp lets the data into the buffer and sends to the jackd server a full period of .. zero. In pratice, we’re using a small period in the receiver jackd server, so the sound “holes” aren’t really audible. It is not the perfect solution, but we’re making web radios .. not an album mastering.

We should test netjack in a near future. It provides a real solution for this use case. But the startup dependencies between the two jackd servers could be a blocker problem.

I made two patchs for jack.udp today :

The first patch manages the support of a configurable jackname (and not the default "jack.udp") We’re using several jack.udp instances on the studio workstations and the patchbay rules can be written without known names.

The second patch fixes the support of packet index. Each jack.udp packet contains an index. But the current code sends bad indexed packets and doesn’t make an effective index check. I fixed these bugs and made a index check which only logs a message. The previous code was killing the process :-/

The debian unstable package of this patched jack.udp is available (amd64 for etch).

A small idea : the jack.udp daemon starts on our streamer server is piped with logger to log stderr jack.udp messages to syslog (2>&1 | logger -i -t jack.udp). It makes things really simple to monitor this transport critical for us.

Pige d’antenne : rotter

Nous sommes en train de remonter notre serveur de streaming. L’ancien processeur (un vieux duron 1.4GHz) commençait à montrer ses limites. Difficile de lui demander deux ou trois flux ogg sans exploser le load. La nouvelle machine avec son AMD Sempron 3000+ devrait se montrer plus véloce. Ce serveur recupère le son de l’antenne (via jack.udp) et assure tous les traitements de fin de chaine : pige d’antenne, creations du/des flux, envois vers internet et icecast (pour avoir un retour du/des flux en local).

Ce nouveau serveur est donc l’occasion de revoir le système de pige du direct. Jusqu’à maintenant, on utilisait une version de jackrec patchée qui change de fichiers toutes les 15/30 minutes. Comme il ne faut jamais réinventer la roue, nous allons essayé d’utiliser Rotter. Un des nombreux outils jack créés par Nicholas J Humfrey. Rotter assure l’enregistrement dans des fichiers d’une heure. Pour nous, ca sera en wav. Le tout termine sur le serveur de fichiers via nfs. Après c’est l’équipe de post-prod qui prend la relève et qui monte et remonte tout ça.

Rotter n’est pas disponible dans la debian, mais voici un premier package debian rotter (amd64, debian files).

Les premiers essais sont concluant. Rotter plante “proprement” quand il n’arrive pas à écrire (souvenir d’un plantage de pige). Il ne supporte pas le log via syslog, ca serait plus pratique.

Premiers essais sur le serveur dès demain. Il restera à l’intégrer au démarrage via jack-init et à superviser le tout avec Nagios.