Manual:Grupo de trabajo Sonido
De Hackmeeting
m (categorizando ando...) |
(script graba_z.sh) |
||
| Línea 41: | Línea 41: | ||
Todo el código mostrado en esta sección esta bajo la licencia GPLv3[http://www.gnu.org/licenses/gpl-3.0.html]. | Todo el código mostrado en esta sección esta bajo la licencia GPLv3[http://www.gnu.org/licenses/gpl-3.0.html]. | ||
| + | |||
| + | === graba_z.sh === | ||
| + | |||
| + | Este script utiliza la aplicación gráfica zenity como interfaz con el usuario y se ha usado en el HM 2009 | ||
| + | <pre> | ||
| + | #!/bin/bash | ||
| + | sala="SALA_1" | ||
| + | genero="hacktivismo" | ||
| + | album="hackmeeting09" | ||
| + | comentario="http://sindominio.net/hackmeeting" | ||
| + | path="/home/isaac/charlas/" | ||
| + | remote="isaac@ceb:/mnt/farre/CompartirEsBueno/sube/hackmeeting/" | ||
| + | |||
| + | while true; | ||
| + | do | ||
| + | |||
| + | # Opciones de de tamaño de ventana zenity | ||
| + | # --width=anchura Especifica el ancho del diálogo. | ||
| + | # --height=altura Especifica la altura del diálogo. | ||
| + | |||
| + | zenity --warning --text="Preparado para iniciar una grabacion, presta atencion a las siguientes preguntas" | ||
| + | |||
| + | # Los nombre de la charla se toman de charlas.txt | ||
| + | Charla=`cat charlas.txt| zenity --list --width="600" --height="400" \ | ||
| + | --title="Elija la charla que quiere grabar" \ | ||
| + | --print-column=ALL \ | ||
| + | --column="Charla" --column="Ponente"` | ||
| + | |||
| + | # Si se pulsa la tecla Esc o el botón Cancelar abortamos y volvemos a empezar | ||
| + | [ $? -gt 0 ] && { zenity --warning --text="La grabación ha sido cancelada, volvemos a empezar" ; continue; } | ||
| + | |||
| + | # Nombre de charla, nombre de charla sin espacios y nombre de ponente | ||
| + | nombre_charla=`echo $Charla|awk -F"|" '{print $1}'` | ||
| + | nf_charla=`echo $nombre_charla|sed s/" "/"_"/g` | ||
| + | nombre_ponente=`echo $Charla|awk -F"|" '{print $2}'` | ||
| + | |||
| + | zenity --question \ | ||
| + | --title="Datos para la grabacion" \ | ||
| + | --text="Charla: $nombre_charla | ||
| + | ^M Ponente: $nombre_ponente | ||
| + | ^M Compruebe que los datos son correctos y pulse Aceptar para iniciar la grabacion" | ||
| + | |||
| + | # Si se pulsa la tecla Esc o el botón Cancelar abortamos y volvemos a empezar | ||
| + | [ $? -gt 0 ] && { zenity --warning --text="La grabacion ha sido cancelada, volvemos a empezar" ; continue; } | ||
| + | |||
| + | # Nombre de fichero con el path, nombre charla, fecha y sala | ||
| + | filename=$path${nf_charla}_`date +%d-%H_%M`_${sala}.ogg | ||
| + | |||
| + | # Grabamos charla con arcord y encodeamos con oggenc | ||
| + | arecord -f cd -t raw | oggenc - -r -o $filename & | ||
| + | zenity --progress --percentage=1 --timeout=5 | ||
| + | |||
| + | while true | ||
| + | do | ||
| + | espacio_libre=`df -k $path | tail -1| awk '{print $(NF-2)}'` | ||
| + | ocupa_file=`ls -l $filename| awk '{print $5/1024}'` | ||
| + | zenity --question --text=" GRABANDO... | ||
| + | ^M Espacio libre: $espacio_libre | ||
| + | ^M Tamano fichero: $ocupa_file | ||
| + | ^M QUIERE DETENER LA GRABACION?" --timeout=10 | ||
| + | if [ $? -eq 0 ] | ||
| + | then | ||
| + | zenity --question --text="ESTA SEGURO QUE QUIERE DETENER LA GRABACION?" | ||
| + | [ $? -eq 0 ] && { pkill arecord; break; } | ||
| + | fi | ||
| + | done | ||
| + | |||
| + | # Ponemos etiquetas el fichero ogg | ||
| + | lltag --yes -a "$nombre_ponente" -t "$nombre_charla" -A "$album" -g "$genero" -c "$comentario" -d "`date -R`" $filename | ||
| + | |||
| + | # Copiamos el fichero al servidor de CEB | ||
| + | echo "Copiando fichero " $filename " al servidor CEB. " `date -R` >> $path/graba.log | ||
| + | scp $filename $remote >> $path/graba.log 2>>$path/graba.log & | ||
| + | |||
| + | done | ||
| + | </pre> | ||
| + | |||
| + | NOTA: Los ^M son combinaciones Ctrl+M que en la ventana el cursor avance una lÃnea, sin que sea una nueva lÃnea en el script. Si no se sustituyen el script no funcionará. | ||
=== graba.sh === | === graba.sh === | ||
Revisión de 01:15 10 oct 2009
CategorÃa:ManualCategorÃa:SonidoCategorÃa:Grupo de trabajo Se encarga de coordinar y montar los equipos de sonido
Tabla de contenidos |
Amplificar la voz y el audio de la sala
Para eso vamos a necesitar (por cada sala a no ser que no se hagan simultáneamente y sea posible mover el equipo de sala a sala):
- Un micrófono dinámico por ponente, con su correspondiente pie de mesa o suelo y cable.
- Una mesa de mezlas con entrada de micro y entrada de lÃnea, cómo mÃnimo.
- Un sistema de amplificación que puede ser:
- Pareja de monitores autoamplificados.
- Un amplificador mas dos pantallas pasivas.
Cableado necesario:
- RCA-RCA
- Canon-Canon (XLR-XLR)
- Canon(XLR)-Jack y viceversa (macho-hembra hembra-macho, nunca se sabe cuando puedes necesitarlo)
- Adaptadores varios: de jack pequeño a grande y viceversa, de jack RCA y viceversa, Canon(XLR)-RCA, etc.
Registrarlo y mandar una señal para el streaming
Registro:
- Se puede utilizar un ordenador conectado a la mesa o a una salida auxiliar del amplificador (asegurarse de que no está amplificada la salida, de lo contrario habrá distorsión), y grabarlo con cualquier aplicación libre ;)
- También sirve, cómo no un grabador Minidisk con entrada line-in
- O un reproductor ogg con line-in
Equipo para el chillout y el escenario
El equipo del chillout normalmente no es muy potente, suele bastar un equipo de hi-fi doméstico. El equipo del escenario (si lo hubiera, claro) ya suele ser más grande, dependiendo de las necesidades y de las posibilidades de conseguirlo. En todo caso, suele ser un equipo que ya consta de su etapa de potencia conectado a su P.A., mesa de directo o de DJ, sus platos si hay que pinchar, etc. Aunque si no se dispone de medios siempre se puede improvisar con el equipo de la ponencia y un mp3 portátil ;)
Como grabar a través de ordenador
La grabación de las charlas durante el hackInvisible (2008) se realizó poniendo un ordenador en cada sala de charlas conectado a la mesa de sonido. Estos ordenadores tenÃan un sistema preparado por el hackmeeting. Cada ordenador disponÃa de una Debian (se podrÃa utilizar cualquier otra distribución de GNU/Linux) sin entorno gráfico, con los programas ecasound, lltag, ssh-client y alsa-utils instalados.
En la primera consola (Ctrl-Alt-F1) estaba en ejecución un script de shell (graba.sh) que daba instrucciones al usuario, grababa y tageaba las charlas. Además al terminar cada grabación subÃa automaticamente las grabaciones a un servidor donde se almacenaban. Para poder subir las charlas el servidor tenÃa incluidas la clave publica ssh de cada uno de los ordenadores de grabación, con lo que se autentificaban a través de ella.
En la segunda consola (Ctrl-Alt-F2) estaba en ejecución otro script de shell (monitor.sh) que mostraba monitores de volumen de las grabaciones para poder ajustar que se estén grabando bien las charlas.
En la tercera consola (Ctrl-Alt-F3) estaba en ejecución un tercer script (alsamixer.sh) que mantenÃa todo el rato en ejecución alsamixer, con el que se regulan los volúmenes de grabación.
Además de estos tres scripts se creó un cuarto script (comprueba_charlas.sh) que ejecutábamos manualmente, que permitÃa comprobar la integridad de las charlas enviadas al servidor. Con el se verificaba que cada charla hubiera llegado integramente al servidor y se habÃa visto dañada por problemas con la red.
Scripts
Todo el código mostrado en esta sección esta bajo la licencia GPLv3[1].
graba_z.sh
Este script utiliza la aplicación gráfica zenity como interfaz con el usuario y se ha usado en el HM 2009
#!/bin/bash
sala="SALA_1"
genero="hacktivismo"
album="hackmeeting09"
comentario="http://sindominio.net/hackmeeting"
path="/home/isaac/charlas/"
remote="isaac@ceb:/mnt/farre/CompartirEsBueno/sube/hackmeeting/"
while true;
do
# Opciones de de tamaño de ventana zenity
# --width=anchura Especifica el ancho del diálogo.
# --height=altura Especifica la altura del diálogo.
zenity --warning --text="Preparado para iniciar una grabacion, presta atencion a las siguientes preguntas"
# Los nombre de la charla se toman de charlas.txt
Charla=`cat charlas.txt| zenity --list --width="600" --height="400" \
--title="Elija la charla que quiere grabar" \
--print-column=ALL \
--column="Charla" --column="Ponente"`
# Si se pulsa la tecla Esc o el botón Cancelar abortamos y volvemos a empezar
[ $? -gt 0 ] && { zenity --warning --text="La grabación ha sido cancelada, volvemos a empezar" ; continue; }
# Nombre de charla, nombre de charla sin espacios y nombre de ponente
nombre_charla=`echo $Charla|awk -F"|" '{print $1}'`
nf_charla=`echo $nombre_charla|sed s/" "/"_"/g`
nombre_ponente=`echo $Charla|awk -F"|" '{print $2}'`
zenity --question \
--title="Datos para la grabacion" \
--text="Charla: $nombre_charla
^M Ponente: $nombre_ponente
^M Compruebe que los datos son correctos y pulse Aceptar para iniciar la grabacion"
# Si se pulsa la tecla Esc o el botón Cancelar abortamos y volvemos a empezar
[ $? -gt 0 ] && { zenity --warning --text="La grabacion ha sido cancelada, volvemos a empezar" ; continue; }
# Nombre de fichero con el path, nombre charla, fecha y sala
filename=$path${nf_charla}_`date +%d-%H_%M`_${sala}.ogg
# Grabamos charla con arcord y encodeamos con oggenc
arecord -f cd -t raw | oggenc - -r -o $filename &
zenity --progress --percentage=1 --timeout=5
while true
do
espacio_libre=`df -k $path | tail -1| awk '{print $(NF-2)}'`
ocupa_file=`ls -l $filename| awk '{print $5/1024}'`
zenity --question --text=" GRABANDO...
^M Espacio libre: $espacio_libre
^M Tamano fichero: $ocupa_file
^M QUIERE DETENER LA GRABACION?" --timeout=10
if [ $? -eq 0 ]
then
zenity --question --text="ESTA SEGURO QUE QUIERE DETENER LA GRABACION?"
[ $? -eq 0 ] && { pkill arecord; break; }
fi
done
# Ponemos etiquetas el fichero ogg
lltag --yes -a "$nombre_ponente" -t "$nombre_charla" -A "$album" -g "$genero" -c "$comentario" -d "`date -R`" $filename
# Copiamos el fichero al servidor de CEB
echo "Copiando fichero " $filename " al servidor CEB. " `date -R` >> $path/graba.log
scp $filename $remote >> $path/graba.log 2>>$path/graba.log &
done
NOTA: Los ^M son combinaciones Ctrl+M que en la ventana el cursor avance una lÃnea, sin que sea una nueva lÃnea en el script. Si no se sustituyen el script no funcionará.
graba.sh
#!/bin/sh
sala="SALA_P"
genero="hacktivismo"
album="hackmeeting09"
comentario="http://sindominio.net/hackmeeting"
path="/home/hm/charlas/"
remote="mediacenter@ceb:/home/ceb/hackmeeting/mediacenter/"
while [ 1 ]
do
clear
echo -e "\n \n AUN NO ESTAS GRABANDO \n \n"
echo -e ""
echo -e ""
echo -e ""
echo -e "\033[0;31m\033[1m============================"
echo "------[graba-o-matic]-------"
echo -e "-------\033[0;32m\033[5mMasMadHack2009\033[25m\033[0;31m\033[1m-------"
echo -e "============================\033[0m"
echo -e "\033[36m-----esta grabacion no tiene "
echo -e "ninguna garantia para ningun "
echo -e "proposito y las ideologas de"
echo -e "la cosa delegan toda respon"
echo -e "sabilidad sobre el padrino"
echo -e "de la charla."
echo -e "With great power comes great"
echo -e "responsibility--------------\033[37m"
echo -e -n "\033[33m\033[1mnombre de la charla:\033[37m\033[22m\n# "
read nombre_charla
echo -e -n "\033[33m\033[1mnombre del ponente:\033[37m\033[22m\n# "
read nombre_ponente
clear
echo -e "\033[42m\033[30m.................Preparado para Grabar Charla"
echo -e "\033[42m\033[30m............................................."
echo -e "\033[42m\033[30m............................................."
echo -e "\033[42m\033[30m.............................................\033[40m"
echo -e "\033[1m\033[33m ---> ALT-F2 : monitorizar volumen"
echo -e " ---> ALT-F3 : modificar el volumen"
echo -e " ---> ALT-F1 : regresar aqui\033[22m\033[37m"
echo -e "\033[41m\033[0;43m *** Importante: controla que el volumen "
echo -e "\033[41m\033[0;43m *** se mantenga en un rango medio \033[40m"
echo ""
echo -e "\033[1m===> ENTER : \033[5mCOMENZAR\033[25m <==="
echo -e "===> CTRL-C: \033[5mTERMINAR\033[25m <===\033[22m"
read
echo -e "\n \n GRABANDO ..... \n \n"
filename=$path`date +%d-%H_%M`_${sala}.ogg
echo -e "-------\033[0;32m\033[5mGRABANDO\033[25m\033[0;31m\033[1m-------"
ecasound -d:0 -i alsa -o $filename
clear
echo -e "\n\nParando... espere por favor."
lltag --yes -a "$nombre_ponente" -t "$nombre_charla" -A "$album" -g "$genero" -c "$comentario" -d "`date -R`" $filename
scp $filename $remote >> /home/hm/charlas/graba.log 2>>/home/hm/charlas/graba.log &
clear
echo -e "\033[1m\033[33mGracias por su ayuda. Que el espiritu de root vaya contigo."
echo -e "\n \n **** GRABACION GRABADA Y ENVIADA CON EXITO AL CENTRO DE MEDIAS **** \n \n \n \n \n"
echo -e "======> PULSA ENTER PARA LA SIGUIENTE GRABACION <======\033[37m\033[22m"
read
done
monitor.sh
#!/bin/sh
while [ 1 ]
do
sleep 1
if [ `pgrep ecasound` ]
then
ecasignalview alsa,default alsa,default
else
clear
echo "Ahora no me apetece..."
fi
done
alsamixer.sh
#!/bin/sh
while [ 1 ]
do
alsamixer -V playback
done
comprueba_charlas.sh
#!/bin/bash -x
for i in `ls /home/hm/charlas/| grep .ogg$`
do
remote_md5=`ssh mediacenter@ceb md5sum $i | awk '{print $1}'`
local_md5=`md5sum /home/hm/charlas/$i |awk '{print $1}'`
[ "X$remote_md5" != "X$local_md5" ] && scp /home/hm/charlas/$i mediacenter@ceb:
done

