oggi non avevo niente da fare, così ho deciso di miglirare un po' il mio vecchio script per la sveglia. adeso in pratica può:
diminuire il volume della musica che è in "suonamento"
e poi:
- suonare musica (con volume incrementale)
- aumentare il volume della musica (incrementale)

ovvero: se lascio xmms acceso di notte quando lo script è chiamato il volume viene aumentato pian piano fino a 100 (con l'opzione -s) o viene pian piano diminuito, viene fatto partire mplayer con il brano scelto e infine il volume è riaumentato gradualmente fino a 100 (con -a)

lo script funziona con ogg, mp3 e wav perchè mplayer supporta tutti e 3 questi formati

potete scaricare lo script qui, ma visto che so che prima o poi quel sito non ci sarà più posto una versione anche sul forum

se sono stato utile a qualcuno bene, altrimenti mi sono divertito lo stesso a farlo

ah dimenticavo.. uno bravo probabilmente l'avrebbe scritto in metà delle righe, io sono ancora in fase di apprendimento..

codice:
#!/bin/bash
# author: Luca Guglielmetti
# version: 0.3
# license: GPL-2
# use: uno scrip da inserire in crontab che funziona da sveglia

# oss: lo script si basa su alsa per incrementare il volume
USE_ALSA="true"
SLEEP_VALUE=0.3
SPEED_VOLUME_CHANGE=2
MUSIC_DIRECTORY="/usr/local/sveglia/music/"
MUSIC_SOFTWARE="mplayer"

function whelp
{
	echo
	echo "USE sveglia [-a] <nomeautore>"
	echo "or"
	echo "USE sveglia [-s]"
	echo
	echo "lo script ha l'inutile scopo di cercare di svegliarmi al mattino.."
	echo
	echo "opzioni: "
	echo "-a --author: accetta un brano specifico da suonare"
	echo "-s --silent: alza solamente il volume e fa partire xmms/bmp/..."
	echo "-l --list: stampa la lista dei brani disponibili"
	echo "-h --help: stampa questo messaggio ed esce"

	exit 0
}

function list
{
	echo "lista degli autori selezionabili:"
	echo
	for i in `ls $MUSIC_DIRECTORY`
	do
		titolo=${i%.*}
		estensione=${i##*.}
		echo "- "$titolo" ["$estensione"]"
	done
	echo

	exit 0
}

function play
{
	echo 
	echo "+-------------------------------------+"
	echo "| sveglia partita.. buona giornata !! |" 
	echo "+-------------------------------------+"
	echo
	`$MUSIC_SOFTWARE $MUSIC_DIRECTORY$1 &`
	echo "ok"
}

function stop_players()
{
	if [ "$USE_ALSA" = "true" ]; then
		diminuisci_volume
	fi
	for i in "xmms" "beep-media-play"
	do
		name=`ps -e | grep $i | line 1 | awk '{ print $4 }'`
		if [ "$name" = "$i" ]; then
			`xmms -s`
			echo $name "stoppato"
		fi
	done
	for i in "ogg123" "mpg123"
	do
		name=`ps -e | grep $i | line 1 | awk '{ print $4 }'`
		if [ "$name" = "$i" ]; then
			`killall $name`
			echo $name "killato"
		fi
	done
}

function start_players()
{
	for i in "ogg123" "mpg123"
	do
		name=`ps -e | grep $i | line 1 | awk '{ print $4 }'`
		if [ "$name" = "$i" ]; then
			PLAYING_FROM_SHELL="true"
		fi
	done
	
	if [ ! "$PLAYING_FROM_SHELL" ]; then
		for i in "xmms" "beep-media-play"
		do
			name=`ps -e | grep $i | line 1 | awk '{ print $4 }'`
			if [ "$name" = "$i" ]; then
				`xmms -p`
				echo $i "partito"
			fi
		done
	fi
}

function aumenta_volume()
{
	for ((i=0; i <= 100; i+=SPEED_VOLUME_CHANGE))
	do
		#echo $i
		amixer set Master $i% >> /dev/null
		sleep $SLEEP_VALUE;
	done
}

function diminuisci_volume()
{
	i=`amixer  get Master | grep "Front Left: " | awk '{ print $5 }'`
	i=`echo $i| sed "s/\[//g" | sed "s/\]//g" | sed "s/%//g"`

	for ((i; i >= 0; i-=SPEED_VOLUME_CHANGE))
	do
		#echo $i
		amixer set Master $i% >> /dev/null
		sleep $SLEEP_VALUE
	done
}


if [ ! "$1" ] || [ "$1" = "-h" ] || [ "$1" = "--help" ] || [ "$3" ]; then
        whelp
elif [ "$1" = "-l" ] || [ "$1" = "--list" ] ; then
	list
elif [ "$1" = "-s" ] || [ "$1" = "--silent" ]; then
	start_players
	if [ "$USE_ALSA" = "true" ]; then
		aumenta_volume
	fi
elif [ "$1" = "-a" ] || [ "$1" = "--author" ]; then
	for i in `ls $MUSIC_DIRECTORY`
	do
		nomefile=$i
		titolo=${i%.*}
		estensione=${i##*.}
		if [ "$titolo" = "$2" ] ; then
			if [ "$estensione" = "ogg" ] || [ "$estensione" = "mp3" ] \
			|| [ "$estensione" = "wav" ]; then
				FILE_TROVATO="true"
				stop_players
				play $nomefile &
				if [ "$USE_ALSA" = "true" ]; then
					aumenta_volume
				fi
			else
				echo "estensione sconosciuta"
			fi
		fi
	done
	if [ ! "$FILE_TROVATO" ]; then
		list
	fi
else
	whelp
	exit 0
fi