Réveil matin avec MOCP

Présentation

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 :

Installation

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.

Les différents réglages

Choix de playlist

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.

Les commandes

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 :

Réglage du dæmon

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

Améliorations

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.

Réglage du volume

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.

Conclusion

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é

[ICO]NameLast modifiedSize
[PARENTDIR]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.