Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 10/03/2014, à 02:36

Little Nooby

[Résolu] sauver volume audio courant et le restaurer plus tard.

Bien le bonjour,

[Introduction - facultatif]
Je réalise actuellement un réveil matin à l'aide de mon raspberry pi et j'en suis actuellement à un script qui s'occupe précisément du réveil à l'aide de musique. J'ai eu pas mal de problème pour pouvoir jouer avec le son. J'ai d'ailleurs niquer mon logiciel moc sur mon portable et impossible de le rétablir même en le désinstallant jusqu'au dernier bit... Enfin c'est une autre histoire, je m'en chargerai plus tard; il fonctionne sur mon PI.

Je suis enfin arriver à quelque chose de satisfaisant mais c'est du pur copier coller et je pige pas vraiment la combinaison des commandes entre elles ou avec leurs arguments.

[coeur du problème]
Dans le code ci-dessous, ligne 21 j'aimerai récupérer le niveau sonore actuel(FLAG:TODO); Il est modifié par la ligne 31. Et le remettre à son niveau d'origine (sauver à la ligne 21) avec la ligne 43 (FLAG:TODO). La réponse doit être très proche de la ligne 31 j'imagine mais je pige vraiment pas grand chose puis quand j'ai essayé moi même, j'ai tout cassé.

J'ai bien une solution en tête mais ça se passe avec des mutex et un SIGKILL...

Merci pour toute aide ou indice que vous pourriez apporter !

#!/bin/bash
#===============================================================================
#
#          FILE:  alarm1.sh
# 
#         USAGE:  ./alarm1.sh 
# 
#   DESCRIPTION:  Met de le musique de plus en plus fort pendant 2min30 puis l'éteint, attend 5 minutes et enfin la remet encore plus fort pendant 2 minutes. Pour l'éteindre, en plus du pkill, utiliser mocp -x.
# 
#       OPTIONS:  ---
#  REQUIREMENTS:  ---
#          BUGS:  ---
#         NOTES:  Utilise mocp pour la musique.
#        AUTHOR:  AdrienHorgnies (), adrien.horgnies@gmail.com
#       COMPANY:  Louvain-li-Nux
#       VERSION:  1.0
#       CREATED:  09/03/2014 16:00:45 CET
#      REVISION:  ---
#===============================================================================

IV= #FLAG:TODO Initial volume
NVU= # increase audio volume by $NVU*5%
NVD= # decrease audio volume by $NVD*5%

while getopts "u:d:s" opt; do
  case $opt in
    u)
       NVU=$OPTARG
       while [ $NVU -ne 0 ];do
         let 'NVU = NVU - 1'
         sudo amixer set PCM -- $[$(amixer get PCM|grep -o [0-9]*%|sed 's/%//')+5]%
       done
       exit;;
    d) #FLAG:DEPRECATED use $0 -s
       NVD=$OPTARG
       while [ $NVD -ne 0 ];do
         let 'NVD = NVD - 1'
         sudo amixer set PCM -- $[$(amixer get PCM|grep -o [0-9]*%|sed 's/%//')-5]%
       done
       exit;;
    s)
       # stop this script and his brothers and sons (even brother's son). 
       # reset volume to $IV FLAG:TODO
       mocp -x
       sudo pkill alarm1.sh
       exit #unreachable line.
      ;;
  esac
done

music=$HOME/.clock/music
if [ $(ps -C mocp|wc -l) -eq 1 ];then
  mocp --server #It clears the playlist so you do realize the alarm is ringing.
else
  mocp --clear
fi

mocp --append $music #--on shuffle,repeat --volume 50
mocp --on shuffle,repeat
mocp --volume 50
mocp --next
mocp --play
#This try to make you start the day with a random song each time. It toggles next because otherwise it would always starts with first music of the directory. It sets repeat option so it still works with only one music in the directory.

sleep 30s
$0 -u 1
sleep 60s
$0 -u 1
sleep 60s
mocp --pause

sleep 5m
$0 -u 2
mocp --unpause
sleep 150s
$0 -s #surrend to wake up.

Bien à vous,

Little Nooby

P.S.: Je ne veux même pas entendre parler de mocp --volume, ça va encore bugger dans tous les sens.

[Solution]
Suffisait de s'amuser un peu avec les commandes pour comprendre. J'avoue que j'en avais marre après tous les soucis que j'ai rencontré avant. Voilà la solution si ça peut servir à quelqu'un :

#!/bin/bash
#===============================================================================
#
#          FILE:  alarm1.sh
# 
#         USAGE:  ./alarm1.sh 
# 
#   DESCRIPTION:  Met de le musique de plus en plus fort pendant 2min30 puis l'éteint, attend 5 minutes et enfin la remet encore plus fort pendant 2 minutes 30.
# 
#       OPTIONS:  ---
#  REQUIREMENTS:  ---
#          BUGS:  ---
#         NOTES:  Utilise mocp pour la musique.
#        AUTHOR:  AdrienHorgnies (), adrien.horgnies@gmail.com
#       COMPANY:  Louvain-li-Nux
#       VERSION:  1.0
#       CREATED:  09/03/2014 16:00:45 CET
#      REVISION:  ---
#===============================================================================

NVU= # increase audio volume by $NVU*5%
NVD= # decrease audio volume by $NVD*5%

while getopts "u:d:s" opt; do
  case $opt in
    u)
       NVU=$OPTARG
       while [ $NVU -ne 0 ];do
         let 'NVU = NVU - 1'
         # amixer get PCM donne des informations sur le volume audio.
         # grep -o [0-9]*% extrait la ligne renseignant le volume en pourcent.
         # sed 's/%//' enlève le signe %
         amixer set PCM -- $[$(amixer get PCM|grep -o [0-9]*%|sed 's/%//')+5]% > /dev/null
       done
       exit;;
    d) #FLAG:DEPRECATED use $0 -s
       NVD=$OPTARG
       while [ $NVD -ne 0 ];do
         let 'NVD = NVD - 1'
         amixer set PCM -- $[$(amixer get PCM|grep -o [0-9]*%|sed 's/%//')-5]% >/dev/null
       done
       exit;;
    s) 
       # stop this script and mocp, reset volume to its original value.
       amixer set PCM -- $(cat $HOME/scripts/clock/IV.pipe) > /dev/null
       mocp -x
       sudo pkill alarm1.sh
       exit #unreachable line.
      ;;
  esac
done

if [ $(ps -C mocp|wc -l) -eq 1 ];then
  mocp --server 
else
  mocp --clear #It clears the playlist so you do realize the alarm is ringing.
fi

# save current audio volume before modifying it.
amixer get PCM|grep -o [0-9]*% > $HOME/scripts/clock/IV.pipe
# set a default volume value
amixer set PCM -- 75% > /dev/null

music=$HOME/.clock/music
mocp --append $music 
mocp --on shuffle,repeat
mocp --next
mocp --play
#This try to make you start the day with a random song each time. It toggles next because otherwise it would always starts with first music of the directory. It sets repeat option so it still works with only one music in the directory.

sleep 30s
$0 -u 1
sleep 60s
$0 -u 1
sleep 60s
mocp --pause

sleep 5m
$0 -u 2
mocp --unpause
sleep 150s
$0 -s #surrend to wake up.

Dernière modification par Little Nooby (Le 10/03/2014, à 05:56)

Hors ligne