Chapitre 4. Simple client, détail

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 :

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