Historique: Scripts bash par cjpsimon
Aperçu de cette version: 5
Dans la foulée des scripts de lancement donnés par Tumulte et pour faire suite au tuto Associer deux cartes son avec Jack, voici à titre d'exemple complet les scripts de lancement qui permettent de choisir les cartes en capture et en playback ainsi que les applications à lancer.
Le premier script (s2c.bash pour Start 2 Cartes)) utilise la commande sed pour connaître la liste des cartes son ainsi que les scripts de lancement d'applications. Pour l'IHM simplifiée il utilise zenity voir l'exemple Scripts bash par Tumulte (par Tumulte).
Son rôle est de choisir une carte en capture, une carte en playback et un script de lancement d'application à l'aide de trois dialogues successifs puis de lancer le script d'application avec en paramètres les deux cartes choisies.
Tout le traitement est délégué aux scripts de lancement d'application, ce qui permet de rester très général.
Les autre scripts sont les scripts de lancement des applications.
Le principe est de définir des scripts de lancement dans des fichiers ayant un nom répondant à la syntaxe suivante :
s2c_*.bash ou * est remplacé par le nom de l'application à lancer, par exemple mon script de lancement d'Audacity aura pour nom s2c_Audacity.bash.
Les scripts de lancement doivent être placés dans un répertoire précis pour pouvoir les localiser. J'ai choisi le répertoire ~/bin qui chez moi est dans le PATH, ce qui permet de lancer mes applications préférées. Mais rien n'empêche de choisir un autre emplacement.
Les scripts de lancement d'application ont la charge de lancer tout ce qui est nécessaire à la bonne exécution d'une ou des applications (lancer jackd, meterbridge, Audacity... et autres). Je donne pour exemple s2c_Audacity.bash mais on peut faire ce qu'on veut dès lors qu'on a besoin d'associer deux cartes son.
En fin de page on trouvera quelques informations sur l'utilisation de la commande sed.
Le script s2c.bash
Le script s2c_Audacity.bash
Ce script peut être lancé par un autre script ou manuellement pourvu qu'on lui passe en paramètre la carte son en capture et la carte son en playback.
Par exemple :
s2c_Audacity.bash 1 3
ou
s2c_Audacity.bash CODEC Pro
La partie délicate est l'utilisation de sed qui est assez complexe car très puissant. Sed a pour avantage la concision, ce qui permet de faire en une ligne l'équivalent de plusieurs dizaines de lignes de script.
Par exemple la commande :
permet d'éliminer les lignes en trop du fichier /proc/asound/cards.
Sed lit les lignes du fichier et s'il rencontre une suite de blancs, élimine la ligne. Le résultat final est stocké dans le fichier dont le nom est contenu dans la variable ${les_cartes_brutes}.
La commande :
Elimine le premier blanc des ligneélimine le caractère
élimine les caractères" rel="">Le premier script (s2c.bash pour Start 2 Cartes)) utilise la commande sed pour connaître la liste des cartes son ainsi que les scripts de lancement d'applications. Pour l'IHM simplifiée il utilise zenity voir l'exemple Scripts bash par Tumulte (par Tumulte).
Son rôle est de choisir une carte en capture, une carte en playback et un script de lancement d'application à l'aide de trois dialogues successifs puis de lancer le script d'application avec en paramètres les deux cartes choisies.
Tout le traitement est délégué aux scripts de lancement d'application, ce qui permet de rester très général.
Les autre scripts sont les scripts de lancement des applications.
Le principe est de définir des scripts de lancement dans des fichiers ayant un nom répondant à la syntaxe suivante :
s2c_*.bash ou * est remplacé par le nom de l'application à lancer, par exemple mon script de lancement d'Audacity aura pour nom s2c_Audacity.bash.
Les scripts de lancement doivent être placés dans un répertoire précis pour pouvoir les localiser. J'ai choisi le répertoire ~/bin qui chez moi est dans le PATH, ce qui permet de lancer mes applications préférées. Mais rien n'empêche de choisir un autre emplacement.
Les scripts de lancement d'application ont la charge de lancer tout ce qui est nécessaire à la bonne exécution d'une ou des applications (lancer jackd, meterbridge, Audacity... et autres). Je donne pour exemple s2c_Audacity.bash mais on peut faire ce qu'on veut dès lors qu'on a besoin d'associer deux cartes son.
En fin de page on trouvera quelques informations sur l'utilisation de la commande sed.
Le script s2c.bash
Copy to clipboard
Le script s2c_Audacity.bash
Ce script peut être lancé par un autre script ou manuellement pourvu qu'on lui passe en paramètre la carte son en capture et la carte son en playback.
Par exemple :
s2c_Audacity.bash 1 3
ou
s2c_Audacity.bash CODEC Pro
Copy to clipboard
La partie délicate est l'utilisation de sed qui est assez complexe car très puissant. Sed a pour avantage la concision, ce qui permet de faire en une ligne l'équivalent de plusieurs dizaines de lignes de script.
Par exemple la commande :
Copy to clipboard
sed '/ /d' /proc/asound/cards >${les_cartes_brutes}
permet d'éliminer les lignes en trop du fichier /proc/asound/cards.
Sed lit les lignes du fichier et s'il rencontre une suite de blancs, élimine la ligne. Le résultat final est stocké dans le fichier dont le nom est contenu dans la variable ${les_cartes_brutes}.
La commande :
Copy to clipboard
sed '{s/ //; s/\[//; s/\]://; s/ - .*$// }' ${les_cartes_brutes} > ${les_cartes}
Elimine le premier blanc des ligne
Copy to clipboard
s/ //
Copy to clipboard
s/\[//
Copy to clipboard
s/\[//
Copy to clipboard
s/\]://
Copy to clipboard
s/ - .*$//
En fait la commande s/c// remplace le caractère c par rien. La syntaxe est la suivante : s/chaine à trouver/chaine à substituer/
Les caractères ésotériques :
Copy to clipboard
.*$
Pour se documenter sur sed : http://www.grymoire.com/Unix/Sed.html en anglais,
et entre autre : http://www.commentcamarche.net/faq/5588-sed-substitution en français.
[+]