Chargement...
 
[Voir/Cacher menus de gauche]
[Voir/Cacher menus de droite]



L'idée de base :

Concrètement, j'avais besoin d'un petit script qui me permette de lancer les logiciels que je veux, avec les sauvegardes correspondantes, pour enfin charger les connections qui vont bien. Le tout en graphique et en pas trop compliqué.

Le script lance ensuite un terminal et chaque application sera lancée dans l'un de ses onglet.

Pré-requis

- Le script est fait pour fonctionner sous gnome. Il faudra l'adapter aux autres interfaces... Sinon en installant gnome-terminal ça devrait marcher

- Vous aurez besoin de Zenity , un petit programme qui permet d'insérer des boites de dialogues dans un script bash

arrow Vous trouverez un petit récapitulatif ici

- Tout les fichiers de sauvegardes d'un même logiciel devront être dans un même dossier (un dossier par soft)
- Évitez les espaces dans le chemin et les noms de fichier

exclaim Attention, ici, jack est DEJA lancé au moment de l'execution du script... mais rien n'empêche de le lancer via ce dernier.

Le script


#!/bin/sh

#le chemin vers le dossier des sauvegardes
the_path=/home/user/Musique

#Liste des softwares
softwares_list=$(zenity --width=400 --height=300 --list  --text "TOOLS #!" --checklist  --column "Pick" --column "among those :" FALSE "Hydrogen" FALSE "SooperLooper" FALSE "Seq24" FALSE "Phasex" FALSE "Yoshimi" FALSE "Jack-Rack" --separator=" "); 


#Options pour chaque soft

#SOOPERLOOPER 
case $softwares_list in *SooperLooper*)
		sooper_file=$(zenity --width=500 --height=150 --entry --text "Wanna load a loop session?" `ls $the_path/Sooperlooper/*.slsess` ); 
		sooper_launcher=(--tab -e "sooperlooper --load-session=$(printf %q "$sooper_file")") ;
		slgui_launcher=(--tab -e "slgui") ;
;; 
esac

#PHASEX
case $softwares_list in *Phasex*)
		phasex_synth=$(zenity --width=500 --height=150 --entry --text "[Phasex] Wanna load a sound?" `ls /home/tch/.phasex/user-patches/*.phx` ); 
		phasex_launcher=(--tab -e "phasex -m 11 $(printf %q "$phasex_synth")") ; 
;; 
esac

#YOSHIMI
case $softwares_list in *Yoshimi*)
		yoshimi_synth=$(zenity --width=500 --height=150 --entry --text "[Yoshimi] Wanna load a sound?" `ls $the_path/Yoshimi/*.xiz` ); 
		yoshimi_launcher=(--tab -e "yoshimi -K -L $(printf %q "$yoshimi_synth")") ;
;; 
esac

#HYDROGEN
case $softwares_list in *Hydrogen*)
		h2_song=$(zenity --width=500 --height=150 --entry --text "[H2] Wanna load a drum track?" `ls $the_path/Hydrogen/*.h2song` ); 
		h2_launcher=(--tab -e "hydrogen -s $(printf %q "$h2_song")") ; 
;; 
esac

#SEQ24
case $softwares_list in *Seq24*)
		seq24_song=$(zenity --width=500 --height=150 --entry --text "[SEQ24] Wanna load a song?" `ls $the_path/Seq24/*`); 
		seq24_launcher=(--tab -e "seq24 --file $(printf %q "$seq24_song")") ;
;; 
esac

#JACK-RACK
case $softwares_list in *Jack-Rack*)
		fx_rack=$(zenity --width=500 --height=150 --entry --text "[Jack-Rack] Wanna load a song?" `ls $the_path/JackRack/*`); 
		jackrack_launcher=(--tab -e "jack-rack $(printf %q "$fx_rack")"); 
;; 
esac


#Choix de la baie de brassage
patchbay=$(zenity --width=500 --height=150 --entry --text "[QjackCTL] What connections would fit?" `ls $the_path/QJackCTL/*.xml`); 

#THE LAUNCHER
gnome-terminal --tab -e "a2j" "${sooper_launcher[@]}" "${slgui_launcher[@]}" "${phasex_launcher[@]}" "${yoshimi_launcher[@]}" "${h2_launcher[@]}" "${seq24_launcher[@]}" "${jackrack_launcher[@]}" &

#On attend avant de lancer qjackCTL
sleep 10;

qjackctl -a "${patchbay}"


Utilisation


Une fois les valeurs (chemin, logiciels etc...) adaptés pour votre config, il suffit de vous placer dans le répertoire où se trouve le script et de faire :

sh nomduscript


Explication


softwares_list=$(zenity --width=400 --height=300 --list  --text "TOOLS #!" --checklist  --column "Pick" --column "among those :" FALSE "Hydrogen");


On définit la liste des softwares à la main dans une boite case à cocher.
Il suffit de mettre FALSE/TRUE (suivant si vous voulez que le logiciel soit choisi par défaut ou non) puis le nom du logiciel entre guillemets.

#HYDROGEN
35 . case $softwares_list in *Hydrogen*)
36 . 		h2_song=$(zenity --width=500 --height=150 --entry --text "[H2] Wanna load a drum track?" `ls $the_path/Hydrogen/*.h2song` ); 
37 . 		h2_launcher=(--tab -e "hydrogen -s $(printf %q "$h2_song")") ; 
38 . ;; 
39 . esac


Voila le gros morceau en gros voila ce qu'il se passe :
Si jamais il trouve "Hydrogen" dans la variable $softwares_list renvoyée par la fenêtre précédente.

On crée une autre variable h2_song pour accueillir le morceau à charger dans Hydrogen. Pour ce faire, on utilise une menu déroulant fournit par zenity.

Vous l'aurez remarqué, les valeurs du menu déroulant ne sont pas listées à la main, mais générée automatiquement par l’exécution d'un ls dans le répertoire où se trouve les morceaux d'hydrogen.

Enfin en crée la variable h2_launcher avec la commande pour lancer le soft dans le terminal
--tab : crée un nouvel onglet

-e : indique qu'il faut exécuter une commande

Il est possible de lancer le logiciel avec n'importe quelle option. Ici je n'utilise que "-s" qui indique le morceau à charger.

questionle printf %q permet de s'assurer que la variable arrive bien interprétée... mais j'en sais pas plus

gnome-terminal --tab -e "a2j" "${h2_launcher[@]}" &


Ensuite on lance le terminal avec tout ses onglets. Ici, j'ai mis "a2j" en dur, parce que je le lance tout le temps, donc il n'est pas dans la liste des options. J'aurais aussi pu le mettre dans la liste des logiciels avec un TRUE devant.

La syntaxe pour appeler la variable de lancement est importante : "${h2_launcher@}"
Mettez bien les guillemets et le @.

Le & à la fin du launcher permet de lancer une autre commande après.


sleep 10;

qjackctl -a "${patchbay}"


On dis d'attendre 10 secondes (le temps que tout se lance) puis on lance qjackCTL avec la baie de brassage active qu'on aura choisi au préalable. Les connections sont ainsi restaurées...

Améliorations


Ce code pourrait sans doutes être grandement simplifié... Et on peut imaginer quelques options, comme par exemple ne lister que les XML des baies de brassages contenant les noms des logiciels qu'on aurait choisi...

N'hésitez pas à améliorer le code présent ici ou à poster des versions alternatives!


[+]

Collaborateur(s) de cette page : olinuxx , pianolivier , jams et Tumulte .
Page dernièrement modifiée le Vendredi 06 novembre 2015 14:47:59 par olinuxx.
Le contenu de cette page est licencié sous les termes licence.

Documentation [Afficher / Cacher]

Connexion
[Afficher / Cacher]


Mégaphone [Afficher / Cacher]

sub26nico, 17:18, mer. 22 Feb 2017: @napz: bravo! tu devrais ouvrir un fil dans les forums, ça aura plus de visibilité.
napz, 14:44, mer. 22 Feb 2017: émission enregistrée à la maison sous linux avec jack +cadence +catia +mixxx +calfcomp +Audacity + un peu de hardware
napz, 13:57, mer. 22 Feb 2017: Le podcast de la dernière émission MUSICA LIBRE consacrée aux musiques sous licences libres ;) [Lien]
zebassprophet, 09:38, mer. 22 Feb 2017: nan c'est mieux sans contraintes :-D le libre c'est a poil sinon rien
sub26nico, 13:02, mar. 21 Feb 2017: @zebassprophet: nu post? petit coquin :-), rhabilles toi !
zebassprophet, 11:22, mar. 21 Feb 2017: sub26, j'ai fait nu post directement ;)
sub26nico, 22:37, lun. 20 Feb 2017: bonjour et bienvenue à Kalu-OP :-)
sub26nico, 14:02, lun. 20 Feb 2017: je suis dans le coin, si besoin pas de soucis,MP moi :-)
zebassprophet, 11:02, lun. 20 Feb 2017: j'en avais pas un besoin imperieux alors du coup j'ai demandé ici ;) t'es dans le coin, j'ai besoin d'une oreille pour un truc:;D
sub26nico, 10:59, lun. 20 Feb 2017: @zebassprophet: ouvre un fil dans les forums, ça sera plus efficace
zebassprophet, 23:44, dim. 19 Feb 2017: yo, une suggestion pour virer rapidement les pistes inutiles lors d'un re re sous ardour?
yogib33r, 16:19, dim. 19 Feb 2017: bonjour a tous !