¿Como reproducir un sonido en terminal con bajos recursos?

Hola

Tengo un servidor que actualmente hace la funcion de Proxy cache, pero tambien lo quiero usar como sistema de vigilancia con la ayuda de "Motion".

Este programa, al detectar el movimiento en alguna cámara, es capaz de activar un script sh.

Tengo pensado usar esta función para activar un sonido de alarma.

El servidor corre en modo consola, por lo que necesito algún reproductor de sonidos en consola de bajos recursos, ya que esta maquina solo tiene 512 MB de ram que en su mayor parte ya están en uso por el Squid.

Necesito que se reproduzca el sonido y además sea cíclico, ya que es un tono de alarma de algunos segundos de dirección.

¿Que reproductor en consola me recomiendan para esto?

Yo habia pensado en usar el comando "Speaker-test", que es capaz de reproducir sonidos .wav, y me imagino que con pocos recursos.

En el man del comando viene como hacer esto, pero no logro reproducir el sonido .wav:

dvid escribió:

Description

speaker-test generates a tone that can be used to test the speakers of a computer.
Options

-c | --channels NUM

NUM channels in stream
-D | --device NAME
PCM device name NAME
-f | --frequency FREQ
sine wave of FREQ Hz
--help

Print usage help
-b | --buffer TIME
Use buffer size of TIME microseconds. When 0 is given, use the maximal buffer size. The default value is 0.
-p | --period TIME
Use period size of TIME microseconds. When 0 is given, the periods given by -P option is used. The default value is 0.
-P | --nperiods ERIODS
Use number of periods. The default value is 4.
-r | --rate RATE
stream of RATE Hz
-t | --test pink|sine|wav
-t pink means use pink noise (default).

Pink noise is perceptually uniform noise -- that is, it sounds like every frequency at once. If you can hear any tone it may indicate resonances in your speaker system or room.

-t sine means to use sine wave.

-t wav means to play WAV files, either pre-defined files or given via -w option.

You can pass the number from 1 to 3 as a backward compatibility.
-l | --nloops COUNT
Specifies the number of loops. Zero means to run infinitely.

When -s option below with a valid channel is given, speaker-test will perform always a single-shot without looping.
-s | --speaker CHANNEL
Do a single-shot speaker test for the given channel. The channel number starts from 1. The channel number corresponds to left, right, rear-left, rear-right, center, LFE, side-left, side-right, and so on.

For example, when 1 is passed, it tests the left channel only once rather than both channels with looping.
-w | --wavfile
Use the given WAV file for the playback instead of pre-defined WAV files.
-W | --wavdir
Specify the directory containing WAV files for playback. The default path is /usr/share/sounds/alsa.

Saludos!

Aplay.

$man aplay

Ya mas sofisticado
MOC
Mpd
Hay varios modos de que se reproduzca un sonido ciclicamente.Podes configurar un script en bash.
Edito:Mas básico es 'beep', podes configurar a nivel básico frecuencia duración ,etc.
http://www.javcasta.com/2010/10/31/scripting-beep-en-bash-linux/

Ya estoy mas que oxidado en programación.

Así que... configuro un ciclo while (O su equivalente en bash), pero este es en función de una variable.

La terminal me da alguna variable de la que me pueda valer para comenzar y repetir el ciclo?.

Hay algún ciclo que no necesite variables?

dvid escribió:

Ya estoy mas que oxidado en programación.

Así que... configuro un ciclo while (O su equivalente en bash), pero este es en función de una variable.

La terminal me da alguna variable de la que me pueda valer para comenzar y repetir el ciclo?.

Hay algún ciclo que no necesite variables?

Concretamente ¿vos queres que cuando se dispare la alarma produzca un sonido dado una cierta cantidad de veces y luego cese ?

Funciona!

dvid escribió:

#! /bin/bash

INPUT_STRING=hello

while [ "$INPUT_STRING" != "bye" ]

do
aplay /home/server/Escritorio/alarm.wav
done;

Aunque si caliban, lo mejor seria que solo se reprodujera algunas veces, ya que el mio es infinito.

Reproducir sonido en terminal con bajos recursos

echo -e "\a"

XD

Con "beep"

k=("beep -f900 -l200 --new -f700 -l200")
m=0
while [ $m -ne 10 ]
do
$k
m=$(( $m + 1 ))

done

Un último comentario: MOC y Mpd están muy bien como reproductores de escritorio, y de hecho yo utilizo MOC únicamente. Sin embargo, me da la impresión de que son demasiado complejos para esto. Yo habría tirado por ogg123.

Citar

Aunque si caliban, lo mejor seria que solo se reprodujera algunas veces, ya que el mio es infinito.

#! /bin/bash

INPUT_STRING=hello
reproducciones=0
while [ "$INPUT_STRING" != "bye" ]
  do
   ogg123 /ruta/sonido.ogg
   reproducciones= expr $reproducciones + 1
    if test $reproducciones > 100
     then
       exit
    fi
done

Ok Gracias a todos.

Suku instale beep e intente correr tu script, pero me da un error como este:

dvd escribió:

script2.sh
/home/server/Escritorio/script2.sh: 3: Syntax error: "(" unexpected

Y lo mismo con el script de Black Rider

dvid escribió:

/script2.sh: 12: Syntax error: "done" unexpected (expecting "fi")

Y porque prefieres ogg123 sobre aplay?

if , falta cerrar 'fi'
Cuidado con los espacios luego de '('

Es que se me ha caído la conexión antes de poder corregirlo. Lo siento.
#! /bin/bash

INPUT_STRING=hello
reproducciones=0
while [ "$INPUT_STRING" != "bye" ]
do
ogg123 /ruta/sonido
reproducciones=`expr $reproducciones + 1`
if [ $reproducciones = 10 ]
then
exit
fi
done