Je me suis dit que ça pourrait intéresser des gens. Cet article explique comment programmer un réveil matin avec les outils Unix classiques et MOCP (Music On Console Player)
Voilà les prérequis :
La première chose à faire est d'installer MOCP sur votre machine. Pour ce faire il suffit d'installer soit le paquet moc, soit le paquet mocp, cela dépend des distributions.
Par exemple pour Debian, ce sera :
aptitude install moc # ou bien, selon l'installeur que vous utilisez, décommentez au besoin. # apt-get install moc
Si besoin, voue pouvez vous référer au site du projet pour plus d'informations sur les modes d'installation disponibles.
Le logiciel fonctionne en terminal, en mode semi-graphique (ncurses) ou en ligne de commande, au choix. Je vous laisse tester le mode semi-graphique et vous faire votre idée sur la question. Ce qui nous intéresse, ce sont les commandes disponibles pour contrôler le lecteur. En effet, ce sont ces commandes qui seront utilisées pour démarrer la musique.
La commande mocp fournit quelques primitives pour gérer les listes de lecture. Bien que l'interface en ncurses se prête mieux à l'usage, ça peut être utile de savoir comment gérer la liste de lecture via la ligne de commande. Les primitives sont les suivantes :
En parlant des listes de lecture, la liste courante du serveur est stockée dans le fichier playlist.m3u du répertoire de configuration de moc, par défaut dans ~/.moc. Ce fichier est effacé après exécution de mocp -c. En temps normal, la liste de lecture courante est stocké en mémoire, dans le serveur, et n'est sauvegardée qu'à la fermeture propre du client.
Si vous avez l'intention de dédier un liste de lecture au réveil, qui soit indépendante de la liste de lecture du jour, ce sont ces fichiers qu'il faudra gérer.
MOCP fonctionne sur le modèle client/serveur. Lorsque vous démarrez le lecteur en tapant mocp en ligne de commande, le processus va automatiquement se dupliquer. Le serveur va vous jouer la musique et le client (à savoir l'interface en ncurses va vous permettre de contrôler la musique :
Les commandes qui vont nous intéresser, une fois que vous aurez choisi quelles musiques vont vous réveiller sont :
L'idée est donc de déclencher la musique à l'heure à laquelle vous devez vous réveiller (ou un peu plus tôt si vous voulez profiter de la musique =°). Disons 6:30.
On édite donc le fichier crontab. Le mieux est encore de procèder en passant par la commande du même nom :
crontab -e
Cette commande ouvrira automatiquement le bon fichier de configuration avec votre éditeur de texte favori (variable d'environnement EDITOR). Le fichier est une liste de commandes en Bourne Shell, précédées de symboles permettant de régler la date et la fréquence d'exécution des commandes.
Un crontab s'organise ligne après ligne. Sur une ligne les 5 premiers groupes de symboles permettent de procéder aux réglages. Dans l'ordre, nous avons donc :
Une syntaxe propre au crontab permet de gérer les dates d'exécution des commandes. Pour une liste exhaustive des détails de configuration, je ne peux que vous encourager à consulter la page de manuel :
man 5 crontab
Étant massivement présente dans les exemples, l'étoile * permet d'effectuer une opération « à chaque changement de ... ».
Pour mettre le réveil tous les jours à 6:30, la ligne correspondante est :
30 6 * * * mocp -S; mocp -p
30 pour la trentième minute de 6 heures
J'imagine que vous ne souhaitez pas être réveillé par votre machine. Alors là, il y a deux solutions : soit vous éteignez votre machine le weekend (et vous êtes à la merci des oublis d'arrêt ou d'allumage), soit on se débrouille avec le crontab.
Il est possible de spécifier des plages pour permettre d'effectuer des opérations seulement dans certains cas. Pour notre réveil, c'est simple, on souhaite l'activer sauf les samedis et dimanche. On peut donc spécfier les jours actifs avec des virgules, ou bien avec une plage :
# Avec une plage 30 6 * * 1-5 mocp -S; mocp -p # Avec des virgules 30 6 * * 1,2,3,4,5 mocp -S; mocp -p
Il est même possible de mixer les deux notations. ;)
Si d'aventure vous avez lu le manuel, vous avez probablement croisé cette information.
Le dernier raffinement que je propose est pour ceux qui auraient tendance à oublier d'arrêter la musique avant de s'endormir :
59 23 * * 0-4 mocp -x # Avant minuit # 1 0 * * 1-5 mocp -x # Après minuit
La commande va avoir pour effet de stopper automatiquement la musique (si vous utilisez mocp à ce moment là bien sûr ;-). M'étant f'ait avoir une fois les histoires de dates, je propose deux horaires différent pour arrêter la musique. La différence entre les deux est que la plage de jours de la semaine n'est pas la même.
La dernière amélioration qu'il est possible d'apporter, en particulier si vous dormez avec la musique allumée, vous voulez peut-être avoir du son un peu plus fort pour vous réveiller.
Ici, on va utiliser Alsa pour régler le son en ligne de commande. Alsa permet de piloter le son sous Linux. En particulier, on va s'intéresser à alsamixer et amixer. Le premier, comme mocp, est une interface en ncurses pour régler le volume. On peut s'en servir pour évaluer le niveau sonore que l'on souhaite obtenir. Le second permet de régler le son en ligne de commande.
Utilisez Alsamixer pour régler le son et voir quels paramêtres influent sur le niveau sonore dans les réglages. Ça peut-être Master, PCM, ou n'importe quoi d'autre.
Me concernant, je règle le son au maximum pour être sûr de l'entendre. Soit 100% sur le réglage Master. Pour effectuer le réglage avec amixer, il faut choisir la carte son et le paramètre identifié précédemment. Pour la carte son, dans la plupart des cas, il n'y en a qu'une, la numéro 0. Si ça ne marche pas, essayez les autres numéros (arrivé à 9 posez vous tout de même des questions).
Le code ci-dessous me permet de régler le son au maximum sur ma carte :
amixer -c 0 sset Master '100%'
Comme vous l'aurez deviné : -c permet d'indiquer la carte à sélectionner, et sset le paramètre et son niveau sonore.
Le crontab a donc l'allure suivante :
0 1 * * 1-5 mocp -x 0 6 * * 1-5 amixer -c 0 sset Master 100\%; mocp -S; mocp --play
Note : D'après la coloration syntaxique de vim pour le crontab, le symbole "%" a un usage particulier. Pour inhiber son effet, il est préfixé du "\".
Note : Importante celle-là de note, les redirections de fichiers ont de bonnes chances de ne pas marcher dans de nombreux cas car le cron n'aura pas forcément les droits en lecture ou écriture dessus. Ça peut être le cas par exemple pour des redirections vers /dev/null.
Vous venez d'ajouter une fonctionnalité de réveil matin à votre machine et au passage, si ce n'était déjà connu, vous avez appris les bases de la configuration du dæmon cron. Bien joué
Name | Last modified | Size | |
---|---|---|---|
Parent Directory | - |
Cet article est paru en premier lieu sur dismorphia.info/~tokamak/ le 12 novembre 2012. Il était incomplet, et les commandes relatives à ALSA ont eu une légère tendance à fonctionner avec une géométrie variable au fil du temps. En dehors de la section sur les listes de lectures, qui a été rédigée au 7 décembre 2018, le contenu est resté pratiquement inchangé sur cette page. Mais il gagnerait tout de même à être mis à jour.