[bash] script per aumentare gradualmente il volume

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
Avatar utente
pierissimo
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1626
Iscrizione: venerdì 22 settembre 2006, 17:31
Località: catania - ragusa
Contatti:

[bash] script per aumentare gradualmente il volume

Messaggio da pierissimo »

ragazzi volevo creare uno script che esegua un file musicale e costantemente alzi il volume...una specie di sveglietta a cui passi come parametro tra quante ore debba suonare ma nn conosco granchè bash...
avevo pensato a una cosa simile:

Codice: Seleziona tutto

#!/bin/bash

quanteore=$1*60*60
volume=20
amixer set Front $volume unmute
mplayer /media/partfat/my\ music/Moby/18/03\ -\ In\ My\ Heart.mp3 &
while[true]
do
volume=volume+2
amixer set Front $volume
sleep 2
done
adesso le cose che non capisco sono:
1) "quanteore=$1*60*60" non assegna a "quanteore" il valore della moltiplicazione.
2) come faccio a mandare in background il comando mplayer in modo tale da poter poi eseguire i cicli del while?

grazie
ps. volevo fare questo script se possibile in bash!!
Avatar utente
PiDy
Prode Principiante
Messaggi: 162
Iscrizione: martedì 13 giugno 2006, 12:14
Località: Gioiosa Marea

Re: [bash] script per aumentare gradualmente il volume

Messaggio da PiDy »

Ciao,

La bash come tutte le shell non gestisce in modo nativo le operazioni matematiche, per lei esistono solo le stringhe.
Questo

Codice: Seleziona tutto

quanteore=$1*60*60
in realtà associa la stringa "$1*60*60" alla variabile quanteore.
Per le operazioni matematiche devi usare il comando built-in let. Quindi

Codice: Seleziona tutto

let quanteore=$1*60*60
Per mplayer non lo mai usato in modo intenso ma ho trovato in giro una stringa di lancio del genere:

Codice: Seleziona tutto

mplayer options filename >/dev/null &
Comunque il linea di massima è corretto usare & per mandare in background il comando, ma forse dovresti reindirizzare gli standard input e output; ripeto non conosco mplayer non so come lavori, infatti, quella stringa che ti ho postato reindirizza lo standard output nel device nullo, una specie di "cestino". Per indicare invece lo standard input devi utilizzare <.
Altra soluzione è usare il nohup che reindirizza lo standard output e error su un file nohup.out, Quindi diventerebbe:

Codice: Seleziona tutto

nohup mplayer options filename &
PS: Le considerazioni sul comando let valgono anche per questa riga

Codice: Seleziona tutto

volume=volume+2
PSS: Questo script parte immediatamente non aspetta le ore passate a parametro. Devi usare il comando

Codice: Seleziona tutto

sleep $quanteore
subito dopo la valorizzazione della variabile quanteore.
Ultima modifica di PiDy il venerdì 7 marzo 2008, 16:36, modificato 1 volta in totale.
Avatar utente
pierissimo
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1626
Iscrizione: venerdì 22 settembre 2006, 17:31
Località: catania - ragusa
Contatti:

Re: [bash] script per aumentare gradualmente il volume

Messaggio da pierissimo »

grazie!!!Davvero molto chiaro. Ora però mi sorgono altri quesiti:
1) come faccio a far fare al while un ciclo infinito?
2) vorrei far in modo che si possa fermare la riproduzione della canzone in qualche modo... ad esempio immettendo un carattere o con il segnale ctrl+c... come posso fare?

grazie ancora
Avatar utente
simo_magic
Rampante Reduce
Rampante Reduce
Messaggi: 9496
Iscrizione: lunedì 18 dicembre 2006, 21:37
Località: Piemonte

Re: [bash] script per aumentare gradualmente il volume

Messaggio da simo_magic »

pierissimo ha scritto: grazie!!!Davvero molto chiaro. Ora però mi sorgono altri quesiti:
1) come faccio a far fare al while un ciclo infinito?
2) vorrei far in modo che si possa fermare la riproduzione della canzone in qualche modo... ad esempio immettendo un carattere o con il segnale ctrl+c... come posso fare?

grazie ancora
while true; do comandichetiservono; done
Avatar utente
pierissimo
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1626
Iscrizione: venerdì 22 settembre 2006, 17:31
Località: catania - ragusa
Contatti:

Re: [bash] script per aumentare gradualmente il volume

Messaggio da pierissimo »

while true; do comandichetiservono; done
grazie.
cmq funziona anche ctrl+c per far fermare la riproduzione di mplayer.
tutto fatto allora. ottimo! riposto il codice funzionante:

Codice: Seleziona tutto

#!/bin/bash

let quanteore=$1*60*60
volume=20
sleep $quanteore
amixer set Front $volume unmute
mplayer /media/partfat/my\ music/Moby/18/03\ -\ In\ My\ Heart.mp3 > /dev/null &
while true
do
let volume=volume+2
amixer set Front $volume
sleep 2
done
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 4 ospiti