Mostrando las entradas con la etiqueta musica. Mostrar todas las entradas
Mostrando las entradas con la etiqueta musica. Mostrar todas las entradas

domingo, 9 de diciembre de 2007

Escuchando múscica con MPD III - Ahora icecast

Antes les expliqué Cómo instalar mpd, y luego algo de usarlo en modo usuario. Ahora les muestro lo que encontré y configuré probando un poco: icecast.

La idea:

Icecast es un servidor de streamings que soporta Ogg Vorbis y Mp3. Mi idea es usarlo como un elemento de interfaz entre la supuesta computadora del armario y un cliente que dispondría del los parlantitos, que podría ser un laptop o un desktop, que podría estar dentro una red local o bien Internet. Para Icecast mpd sería un cliente fuente (source client) y el programa que corre en la computadora laptop sería un oyente (listener), que puede ser mplayer, xmms, rhythmbox, winamp.

Debo agregar unos parámetros al archivo de configuración de mpd:


################# SHOUT STREAMING ########################
#
# Set this to allow mpd to stream its output to icecast2
# (i.e. mpd is a icecast2 source)
#
audio_output {
        type            "shout"
        name            "my cool stream"
        host            "localhost"
        port            "8000"
        mount           "mpd.ogg"
        password        "hackme"
#       quality         "5.0"
        bitrate         "128"
        format          "44100:16:2"

# Optional Paramters
        description     "here's my long descriptiion"
} # end of audio_output

De los parámetros:

  • type: es el tipo de salida DEBE ser shout.
  • name: es el nombre que tendrá el stream
  • port: puerto que usará icecast, yo escogí el 8000 porque tengo un apache para experimentos, pero podría tenerlo andando en el 80 o cualquier otro.
  • mount: es el punto de montaje del streaming, para acceder al streaming se usará luego ip_del_servidor:puerto/mounto_montaje.ogg. Escogí ponerle extensión .ogg al punto de montaje porque algunos programas clientes se atontan sin la extensión.
  • password: para que icecast no le de lugar a cualquier persona.
  • quality: calidad de codificación del stream Ogg es valido cualquier vvalor con un decimal entre 0 y 10. Solo vale poner el parámetro quality o bitrate; pero no ambos.
  • bitrate: el bitrate de encodeo en kbps.
  • format: usa la forma sample_rate:bits:channels donde sample_rate es el nivel de muestreo, bits los bits por muestreo y channels el número de canales.
  • description: la descripción del streaming.

Hasta ahora los datos colocados en description y name sólo se ven en la interfaz web de icecast.

Como es lógico mientras mayor es la calidad de salida más ancho de banda consumido, más recarga de la red y más uso de CPU.

Icecast

Por otro lado hay que instalar icecast:

apt-get install icecast2

La configuración de icecast es sencilla, el archivo de configutación es /etc/icecast2/icecast.xml, al menos se puede dejar algo andando sin tocar demasiadas cosas, me basé en el archivo que viene en el paquete Debian icecast_minimal.xml:

<!-- This config file contains a minimal set of configurable parameters,
     and mostly just contains the things you need to change.  We created
     this for those who got scared away from the rather large and heavily
     commented icecast.xml.dist file. -->
<icecast>
    <limits>
        <sources>2</sources>
    </limits>
    <authentication>
       
<source-password>hackme</source-password>
       
<relay-password>hackme</relay-password>
        <admin-user>admin</admin-user>
       
<admin-password>hackme</admin-password>
    </authentication>
    <directory>
       
<!--  <yp-url-timeout>15</yp-url-timeout> -->
       
<!-- <yp-url>http://dir.xiph.org/cgi-bin/yp-cgi</yp-url> -->

    </directory>
    <hostname>localhost</hostname>
    <listen-socket>
        <port>8000</port>
    </listen-socket>
    <fileserve>1</fileserve>
    <paths>
        <logdir>./log</logdir>
        <webroot>./web</webroot>
        <adminroot>./admin</adminroot>
        <alias source="/"
dest="/status.xsl"/>
    </paths>
    <logging>
       
<accesslog>access.log</accesslog>
        <errorlog>error.log</errorlog>
        <loglevel>3</loglevel>
<!-- 4 Debug, 3 Info, 2 Warn, 1 Error -->
    </logging>
     <security>
        <chroot>0</chroot>
        <changeowner>
            <user>icecast2</user>
            <group>icecast</group>
        </changeowner>
    </security>
</icecast>

Se puede hacer una configuración más completa: con una contraseña por cliente fuente, limitar la cantidad de oyentes por fuente, etc.

Como se puede ver está la misma contraseña para el server y como pueden apreciar también no me tomé la seguridad en serio ya que sólo estoy experimentando.

Icecast tiene una interfaz web cuyo usuario y contraseña están en el archivi de configuración, a través de ella se puede ver las estadísticas del servidor, echar clientes, cambiarlos de canal

Para que cada vez que arranque la computadora del armario corra todo esto automáticamente al inicio del sistema alcanza con tocar los archivos /etc/default de los paquetes correspondientes.

Para elegir la lista, cambiar de temas, etc alcanza con cualquier cliente de mpd y con la configuración que permita al cliente acceder al comando de la lista

Varias salidas al mismo tiempo.

Una cosa interesante es que se pueden tener activas más de una salida al mismo tiempo; por ejemplo se puede tener la salida ALSA lista y al mismo tiempo la salida para icecast. Algunos clientes como gmpc permiten activar o desactivar cada una de las salidas

Referencias:

sábado, 1 de diciembre de 2007

Escuchando múscica con MPD II

Ateriormente les conté de mpd y un cliente ncmpc, ahora les cuento cómo es que escogí mi configuración para poder ejecutarlo como usuario:

Cree un directorio ~/.mpd que alojara a los archivos "errors.log" "mpd.log" "state" "tag_cache" y al directorio "playlists". Cambié los parámetros apropiados:

 music_directory         "/var/lib/mpd/music"
 playlist_directory      "/home/MAbeeTT/.mpd/playlists"

 db_file                 "/home/MAbeeTT/.mpd/tag_cache"
 log_file                "/home/MAbeeTT/.mpd/mpd.log"
 error_file              "/home/MAbeeTT/.mpd//errors.log"
 pid_file                "/var/run/mpd/pid"

Del directorio de la sumidero de la música no toqué nada y tampoco del archivo pid, como al archivo del pid solo accede root o el grupo de mpd le cambio permisos al archivo o me agrego al grupo.

Fuerzo a usar salida Alsa:

audio_output {
        type            "alsa"
        name            "my ALSA device"
#       device          "hw:0,0" # optional
        format          "44100:16:2" #optional
}

Agrego normalización de volumen, para achatar un poco la diferencia de columenes de grabación:

 volume_normalization  yes

Mezclador:

mixer_type              "alsa"
mixer_device            "default"
mixer_control           "PCM"

Archivo de estado

state_file         "/home/matias01/.mpd/state"

Éste es sirve para recrear el estado de la sesión al volver a ejecutar el programa.

bind_to_address "localhost" ya que aún no me compro la notebook :-P.

Con esta sencilla configuración al apagar el sistema se ejecutará /etc/init.d/mpd stop y cerrará el programa ordenadamente "pausando" el tema en reproducción para continuar luego en el punto que estaba. Esto es muy útil con esos temas que son extracciones en bruto de los CDs que duran como 75 minutos. Si se inicia a mpd desde /etc/init.d/mpd start se inicia el programa según /etc/mpd.conf indique.

El lector atento notará que no he mostrado parámetros de configuración de uso de puertos no habituales para el cliente ni contraseña de acceso límite de conexiones, pero eso se deja a criterio de quien lee.

Referencias

Página man de ncmpc: man ncmpc

Página man de mpd: man mpd

Página man de mpd.conf: man mpd.conf

viernes, 16 de noviembre de 2007

Escuchando múscica con MPD

Introducción
Cuando me inicié con Mandrake Linux (Sí: tenemos algo obscuro en nuestro pasado), una de las primeras cosas que me propuse hacer de las habituales fue escuchar música y empecé con xmms.

El inconveniente de este reproductor era que es dependiente de la interfaz gráfica, si se cae la interfaz gráfica (no es que me suceda a menudo sino que ocasionalmente presiono Ctrl+Alt+Backspace :-P) se cae xmms, la lista de reproducción vuelve al principio etc. A veces es irrisorio levantar la interfaz gráfica para escuchar música.

Di varias vueltas hasta llegar a dos reproductores de audio: cplay que muy sencillo que usa python y es un frontend de otros programas. El que voy a tratar ahora es mpd que es un tanto más completo que cplay.

La idea:
Imaginemos que tenemos una computadora en un armario; llena de música, pero en un armario, sin teclado, sin monitor, pero con Debian y un juego de parlantes o amplificador conectado.

MPD trabaja como cualquier otro reproductor de audio pero de una manera un poco más ambiciosa: es un demonio, indexa la música y luego ella puede ser buscada para ser reproducida, claro que esa parte del manejo de la lista y la reproducción puede ser comandada remotamente.

Instalación y configuración
Alcanza con escribir como root: apt-get install mpd El archivo de configuración de mpd para andar como servicio es /etc/mpd.conf y si lo ejecuta el usuario será ~/.mpdconf o /etc/mpd.conf La sitaxis del archivo es sencilla: alcanza con leer los comentarios en inglés. Un parámetro importante es "bind_to_address" que Debian trae por defecto seteao a escuchar solo a localhost.

Es importante también elegir audio_output, mixer_type, mixer_device, y mixer_control para que salga por alsa que en mi caso se escucha mucho mejor.

Lo que hice en primer término para no tocar demasiado la configuración fue colocar enlaces sinbólicos que apuntan a los directorios que contienen música en /var/lib/mpd/music/. Una cosa interesante es que se pueden configurar varios dispositivos de salida, cuando tenga varias placas de sonido les cuento :-(

Clientes
Hay varios clientes para mpd, inclusive que corren bajo windows ( pueden buscar en el sitio web de mpd); en mi debian estaban disponibles:
  • mpc: bueno; interfaz de linea de comando.
  • gmpc: GNOME/GTK 2.2, bueno, el de interfaz grafica que más me gustó.
  • mpdcon.app: a controller for GNUstep (MPDCon). No me gustó en absoluto.
  • glurp: a GTK 2.4 graphical client. Bueno pero no le encunetro nada intersante; le encontre para activarle/desactivarle las salidas.
  • ncmpc: an ncurses-based console interface. Bueno, parecido al cplay, este es que terminé usando.
  • pympd: python, con plugins interesante solamente.
El que más me gustó fue ncmpc, es bastante parecido a cplay, teclas de comando son:
  • 2: lista de reproducción;
  • 3: Navegador de archivos;
  • [espacio]: agregar a la lista de reproducción;
  • P: pausa
  • Tema anterior/siguiente
  • Ctrl-U: actualizar la base de datos;
  • / buscar;
  • h ayuda.

En ncmpc se puede configurar las teclas de comando, los colores, la presentación de los temas y otras cosas, para sarber más man ncmpc.

Retirar el modo server
Si es que no tienen la máquina en el armario como me pasa a mí notarán que al iniciarse se ejecutará mpd y continuará con la lista en curso, esto es algo muy bueno para no tener que escoger música y no repetirla; pero no es útil tener corriendo al demonio si uno no desea escuchar. Para no iniciar mpd en el init alcanza con configurar /etc/default/mpd.

Si luego el usuario levanta mpd se ejecutará leyendo el archivo de configuración citado antes y tal vez quejándose de algo, para detener la ejecución del programa mpd --kill.

Bueno, en las que sigue les cuento como ejecutar como usuario y cómo cantarle a la red

Referencias