Avec tous les clients donnés comme exemples, tels que jack_metro et jack_lsp, il y a un fichier appelé simple_client.c. Il s'avère que ce que fait ce client est de capturer l'entrée de transférer à la sortie, mais pour être sûr, essayons le.
Avant de le compiler et de le tester, nous allons faire un changement mineur. Le simpleclient fonctionne seulement pendant 10 secondes, voici la partie du code correspond :
. . . sleep (10); jack_client_close (client); exit (0); }
Donc aprés le lancement, le client "dort" pendant 10 secondes avant de dire à JACK de stopper et de quitter. Une question se pose "comment l'application peut elle faire quelquechose alors qu'elle est endormie ?". La réponse est que JACK travaille avec des callbacks, "rappels de service".
Revenons à notre petite modification : nous ne voulons pas que l'application s'arrete avant de "killer" le client. Enlevez sleep(10); et remplacez-le par:
for(;;)
sleep (1);
Compilez maintenant votre simple client modifié :
$gcc -o simple `pkg-config --cflags --libs jack` simple_client.c $
Testez le maintenant, le plus facile est de lancer quelquechose avec la sortie, utilisez le métronome. Il faut les relier ensemble. Voici comment faire :
$./simple aaa & [1] 31205 the sample rate is now 48000/sec engine sample rate: 48000 $jack_metro -b 120 & [2] 31222 $jack_lsp alsa_pcm:capture_1 alsa_pcm:capture_2 alsa_pcm:playback_1 alsa_pcm:playback_2 aaa:input aaa:output metro:120_bpm $jack_connect metro:120_bpm aaa:input engine sample rate: 48000
Et nous obtenons le même bip, mais cette fois le signal passe par notre client simple.
Avant d'aller plus loin quelque remarque :
Nous avons utilisé le symbole & après les commandes pour exécuter le simple client et le métronome, ceci sert pour exécuter la commande en tâche de fond, ainsi nous avons toujours le prompt pour lancer d'autres clients et pour utiliser jack_connect. Ce n'est pas une fonction spécial de JACK, mais de votre OS.
Le simple client a en plus un argument. C'est juste un nom et dans ce cas-ci j'ai choisi "aaa". Notez que jack_lsp affiche les ports "aaa:input" et "aaa:output".
L'API JACK est beaucoup plus pratique que les API ALSA et OSS
Il est simple de faire fonctionner notre logiciel avec d'autre application JACK
Pour arrêter le bip, nous devons mettre les appli en premier plan et les killer :
$fg jack_metro -b 120 [C-c] $fg ./simple aaa [C-c] $
[C-c] correspond à Ctrl+c