Entrées/sorties en temps réel avec le kit de connexion de JACK

On peut utiliser sur plusieurs systèmes le kit de connexion de JACK pour les entrées/sorties audio ainsi que MIDI. Pour plus de détails, voir

http://jackaudio.org/faq

Utilisation de JACK

La manière la plus simple d'utiliser le greffon JACK pour l'entrée et la sortie est la suivante :

      -+rtaudio=jack -i adc -o dac

De plus, il y a certaines options de ligne de commande spécifiques à JACK :

Options de ligne de commande pour JACK

-+jack_client=[nom_de_client]

Le nom de client utilisé par Csound, par défaut "csound6". Si plusieurs instances de Csound se connectent au serveur JACK, il faut utiliser différents nom de client pour éviter les conflits de nom.

-+jack_inportname=[préfixe de nom de port en entrée], -+jack_outportname=[préfixe de nom de port en sortie]

Préfixe pour les noms des ports d'entrée/sortie JACK de Csound ; les valeurs par défaut sont "input" et "output". Le nom de port courant est constitué de numéro de canal ajouté au préfixe. Exemple : avec les réglages par défaut ci-dessus, un orchestre stéréo créera ces ports en opération full duplex :

csound6:input1              (record left)
csound6:input2              (record right)
csound6:output1             (playback left)
csound6:output2             (playback right)

Connexion de Csound à d'autres clients JACK

Par défaut, les connexions sont faites sur les premiers ports de la liste de ports de JACK (généralement ceux-ci correspondent par défaut aux ports physiques). Le greffon peut se connecter à des ports spécifiés par des noms ou des numéros.

Par des noms : le préfixe du nom de port est utilisé, par exemple "system:playback_", "system:capture_", "alsa_pcm:playback_" ou "alsa_pcm:capture_" ce qui donne -odac:system:playback_ (pour la sortie audio), -iadc:system:capture_ (pour l'entrée audio). Le préfixe du nom de port exclut les noms de canal.

Par des numéros : le numéro du port de base est donné, la connexion étant faite vers ce port et les suivants en fonction du nombre de canaux. Pour un numéro de port de base N nous aurons des connexions en N+0, N+1, ..., N+nchnls-1. Par exemple -odac2 avec nchnls=2 connectera les sorties sur les ports 2 et 3. Les ports sont listés comme dans les autres modules d'entrée/sortie.

Noter qu'on peut empêcher la connexion automatique des ports en donnant comme options de sortie et d'entrée -odac:null et -iadc:null. On peut aussi réaliser les connexions manuellement avec les outils de connexion de JACK.

Notes sur les tailles de tampon

Les données audio sont reçues de et envoyées vers le serveur JACK par Csound en utilisant un tampon circulaire contrôlé par les options -b et -B. -B est la taille totale du tampon alors que -b est la taille d'une seule période. Ces valeurs sont arrondies afin que la taille totale soit un multiple entier de la taille d'une période et lui soit supérieure. La différent entre la taille du tampon de Csound et la taille d'une période doit être supérieure ou égale à la taille d'une période de JACK.

Si on utilise à la fois -iadc et -odac, l'option -b doit être un multiple entier de ksmps.

Exemple de réglages du tampon pour une faible latence sur un système linux rapide :

          jackd -d alsa -P -r 48000 -p 64 -n 4 -zt &
          csound -+rtaudio=jack -b 64 -B 256 [...]

Pour améliorer l'exécution, utiliser des valeurs de ksmps comme 32 et 64.

Le taux d'échantillonnage de l'orchestre doit être le même que celui du serveur JACK.

On peut aussi utiliser JACK pour les entrées/sorties MIDI. Pour cela, on indique -+rtmidi=jack. On utilise pour l'entrée -M suivi du nom du port MIDI de JACK requis pour se connecter directement à un flot d'entrée. Pour la sortie on utilise -Q suivi du nom du port JACK. Les options -+jack_midi_inportname= et -+jack_midi_outportname= peuvent être utilisées pour renommer les ports d'E/S MIDI de Csound.