Herramientas para la radio libre
¿Quién es el Kernel?
El Kernel definido como el núcleo, es el corazón de tu Sistema Operativo. Venido de la raíz germánica Kern. Es el software que dialoga entre los programas del sistema operativo y el hardware de la computadora. En términos menos abstractos, es el programa que dialoga entre los programas de la computadora y sus partes físicas. El Kernel es quién decide qué programa, cómo y cuando tendrá acceso a los recursos del sistema así como a los dispositivos del hardware lo que se conoce como multiplexado. Utiliza una interfaz de sistema de llamado (syscall) para dialogar con las aplicaciones y poder gestionar los recursos. Él también se encarga de crear una interfaz clara para facilitar el uso para el programador. Todas las operaciones y diálogos que se establecen entre los programas del sistema y los recursos del hardware son procesados por el Kernel.
Llamado > Sistema de llamado > Kernel
* La comunicación entre los programas informáticos y el hardware.
* Gestión de los distintos programas informáticos (tareas) de una máquina.
* Gestión del hardware (memoria, procesador, periférico, forma de almacenamiento, etc.)
¿Qué hace el Kernel?
El Kernel se encarga de asegurar la carga y ejecución de los procesos, controlar las entradas/salidas y crear una interfaz entre si mismo y el usuario. Se puede pensar al kernel como un guardian. Cuando una aplicación necesita algo requiere acceso a recursos del hardware. El kernel es el guardian intermediario entre la aplicación y los recursos.
Manejo de recursos
El Kernel es también responsable del manejo de recursos. Este manejo de recursos tiene diversos contextos:
* servicio de llamado de aplicaciones
* servicio de interruptores del sistema
* buscando y manejando los recursos disponibles
El Kernel al recibir un llamado de recursos -por ejemplo a través de una aplicación-, genera una respuesta, supongamos que queremos abrir un editor de textos, el papel del Kernel no solo sera el dialogar con el sistema para que se ejecute, también se asegurará que el sistema tiene el espacio suficiente para que el programa se ejecute.
1. Un nuevo programa es iniciado
2. El programa require espacio para su funcionamiento en el sistema
3. Kernel asigna el espacio que le es requerido
¿Quién es ALSA?
Las siglas de ALSA significan “Advanced Linux Sound Architecture" que en español significa Arquitectura Avanzada para Sonido en Linux.
Las tarjeta de sonido pueden ser distintas: pueden estar integradas con la tarjeta madre; pueden ser una tarjeta PCI conectada a la tarjeta madre; tarjeta de sonido USB. Igualmente pueden tener varias entradas y salidas. Independientemente de la tarjeta de audio que tengas, se necesita un módulo o controlador (device driver) que dialoga con el kernel linux.
ALSA fue desarrollado por separado del kernel Linux hasta que se introdujo en la serie 2.5 en el año 2002.En la versión 2.6 de Linux, ALSA reemplazó a OSSv3, aunque una capa de compatibilidad con este existe.
¿Qué hace ALSA?
El ALSA es un proyecto que contiene módulos o controladores que dialogaran con el hardware de tu computadora (tarjeta de sonido) para que funcione con software libre.
ALSA provee funcionalidad de audio y MIDI para el sistema Operativo de Linux. El MIDI (Musical Instrument Digital Interface, Interfaz Digital de Instrumentos Musicales) es un protocolo industrial estándar (conjunto de instrucciones o reglas que dialogan entre si) que permite que las computadoras, sintetizadores, secuenciadores, controladores y otros dispositivos musicales electrónicos comunicarse y compartir información para la generación de sonidos. El MIDI intercambio sistemas de datos en crudo, no transmite una señal de audio o media, sino que transmite ¨mensajes¨como la frecuencia e intensidad de notas musicales, señales de control para parámetros como volumen, vibración y canales, cortes, y señales para determinar los tiempos.
ALSA tiene las siguientes características:
Soporte eficiente para todo tipo de interfaces de audio, desde interfaces para usuarios comunes hasta interfaces profesional con múltiples canales.
Módulos completos de controladores de sonido.
SMP (Symmetric Multi-Processing
?, multiproceso simétrico). Buen soporte multiprocesador, se trata de un tipo de arquitectura de ordenadores en que dos o más procesadores comparten una única memoria central) y diseño thread-safe (Seguridad en hilos, se refiere a un código que funciona correctamente durante la ejecución simultánea de múltiples threads o tareas).
Uso de espacio en librerías (alsa-lib) para simplificar la aplicación de programación y proveer mayor nivel de funcionalidad.
Soporte para el viejo OSS (Open Sound System, Sistema Abierto de Sonido) que provee compatibilidad binaria para la mayoría de programas OSS.
Mezclado de múltiples canales en hardware
Operación Full-duplex. Es la capacidad de grabar y reproducir audio simultáneamente.
¿Con quién es compatible ALSA?
Una de las ventajas de ALSA frente a OSS, es que tiene mayor soporte para diferentes tarjetas de sonido. Para encontrar información sobre las tarjetas de sonido compatibles con ALSA puedes visitar el siguiente enlace:
http://www.alsa-project.org/main/index.php/Matrix:Main
ALSAMIXER
La distribución de ALSA viene con un paquete para la configuración de entradas y salidas de audio, llamado ALSAMIXER. Este programa corre en la terminal, su navegación es a través de comandos y utilizando la tecla “tab” para cambiar entre reproducción y captura; “barra espaciadora” para activar, desactivar y silenciar; y las flechas. Para una interfaz gráfica en el entorno GNOME y para la navegación con el “ratón” se puede instalar la versión para escritorio “gnome-alsamixer”.
Uso de comandos
Opción
Descripción
-h, -help
Ayuda: muestra las opciones disponibles.
-c <número de placa o identificación>
Selecciona la placa de sonido a utilizar, si en el sistema existen más de una placa. Las placas se numeran desde 0 (por defecto).
-D <identificación de dispositivo>
Selecciona el mezclador para el control.
-g
Cambia el uso de colores.
-s
Minimiza la ventana del mezclador
-V <modo de vista>
Selecciona el modo de vista inicial, reproducción, captura o todos.
¿Cómo configuro ALSA?
Para probar si ALSA reconoce la tarjeta de sonido:
alsaconfig
Y aparecerá una pantalla así:
Si la tarjeta de sonido ha sido configurada para ser parte del kernel, la detección de la tarjeta de sonido ocurrirá sin problemas:
Algunas distribuciones como Ubuntu no viene con la aplicación alsaconf y tampoco distribuyen este software en su repositorio, puesto que supone que la tarjeta de sonido será reconocida durante la instalación del sistema. En caso de que se quiera instalar una tarjeta de sonido externa hay que revisar si el módulo existe en su kernel. Para ellos se puede utilizar el programa “modprobe” desde la terminal. Si el kernel no estuviera compilando los módulos de ALSA que su tarjeta de sonido necesita habrá que recopilar un nuevo kernel con esa opción. Puede ir al siguiente enlace para buscar más información
http://www.vivaolinux.com.br/dicas/verDica.php?codigo=1459
Se especifica el módulo que quieres inyectar al kernel, en este caso alsaconf :
sudo modprobe alsaconf
Revisar que el módulo se halla cargado pidiendole a modprobe que muestre la lista de módulos:
modprobe -l alsaconf
La mayoría de las veces, las tarjetas de sonido son del tipo PCI, para lo que utilizamos el comando lscpi para obtener la información de la tarjeta de sonido. En caso de tener una tarjeta de sonido USB utiliza el comando lsusb. Para las tarjetas ISA puedes ir al siguiente enlace que detalla más información:
http://www.linuxjournal.com/article/3269.
Nosotros supondremos que vamos a buscar una tarjeta de sonido del tipo PCI:
lspci -v | grep -i audio
Veamos un ejemplo:
lspci -v | grep -i audio
0000:00:0a.0 Multimedia audio controller: Creative Labs SB Live! EMU10k1 (rev 06)
En este ejemplo se muestra que la tarjeta de sonido es del tipo Sound Blaster LIVE! Del fabricante Creative Labs. Ahora vamos a buscar en la matriz de ALSA en el enlace antes mencionado
http://bugtrack.alsa-project.org/main/index.php/Matrix:Main
Una vez en la página elegimos Creative Labs en la lista. Una vez en los cuadros de tarjetas de sonido de Creative Labs buscaremos el tipo de nuestro ejemplo SB LIVE!, y buscamos el módulo que se requiere para su funcionamiento en este caso emu10k1.
En caso de querer información más detallada sobre el módulo emu10k1 podemos ir su página en “Details”. Para instalar los módulos requeridos utilizamos nuevamente el programa modprobe descrito con anterioridad.
ALSA-sequencer
El módulo alsa-sequencer permite manejar entradas y salidas MIDI entre los softwares y hardwares que se utilizan. Es posible manejar las entradas y salidas por medio de texto en la consola con el comando alsaconnect, o bien utilizar la interfaz gráfica alsaconnectgui. Sin embargo para mayor aprovechamiento de las conexiones es recomendable utilizar el Jack server.
Enlaces de referencia:
http://www.alsa-project.org/
http://alsa.opensrc.org/
http://www.estudiolivre.org/tiki-index.php?page=ALSA&bl
http://www.gulcar.org/modules.php?name=Forums&file=viewtopic&p=1830
http://delajusco.wordpress.com/2007/08/11/modprobe/
http://www.gentoo.org/doc/es/alsa-guide.xml
http://es.wikipedia.org/wiki/Advanced_Linux_Sound_Architecture
http://www.alsa-project.org/~valentyn/
http://linux-sound.org/
http://www.agnula.org/
http://www.djcj.org/LAU/guide/index.php
Darkice un programa para la transmisión de audio por internet
Quién es Darkice?
Darkice es un programa para la transmisión de audio en vivo a través del internet (streaming). Una de sus ventajas es que puedes transmitir múltilples streamings en formatos Ogg Vorbis y mp3 en diferentes calidades. Puedes ser utilizado con los servidores Icecast1, Icecast2 y Shoutcast. Cada uno de los streamings (hasta 8) pueden ser configurados con diferentes bitrates y formatos. Una herramienta muy útil cuando nuestros escuchas cuentan con una diversidad de reproductores de audio y velocidades de conexión al internet.
El programa captura el sonido a través de una interfaz de audio, lo codifica y lo envía a un servidor de streaming. Vamos a ver en breve algunas de las características de Darkice y después explicaremos como puedes instalar este programa en tu sistema operativo y como puedes configurarlo para su funcionamiento. Puede correr en los siguientes sistemas operativos:
* FreeBSD
* Linux
* MacOS X
* NetBSD / OpenBSD
* SUN Solaris
Puede capturar sonido a través de los siguientes dispositivos:
* Dispositivos de audio OSS
* Dispositivos de audio ALSA
* Interfaz de audio Solaris
* Fuentes del servidor Jack
* Entrada de audio uLaw a través de una interfaz serial
Puede codificar el audio en los siguientes formatos:
* mp3 – usando la librería lame
* mp2 – usando la librería twolame
* Ogg Vorbis
* aac – usando la librería faac
Puede enviar el audio codificado a los siguientes servidores de stream:
* ShoutCast?
* IceCast 1.3.x y 2.x
* Darwin Streaming Server
* archivar el audio codificado en archivos
El autor de DarkIce
? es Ákos Maróy y su mantenimiento esta a cargo de Rafael Diniz.
Actualmente Darkice es considerado un programa estable. Existe también una versión gráfica GTK llamada Darksnow desarrollada por Rafael Diniz. ¿Cómo instalo Darkice en mi computadora?
Tenemos la opción de compilar el programa desde el código fuente (en cualquier Linux) o usar el manejador de paquetes de tu distribución.
Compilar el programa desde el código fuente
-Abrir consola e instalar Darkice como se muestra a continuación:
Desde el usuario root:
sudo su
Te pedira tu password de superusuario. Después de esto ya estarás en el superusuario, así que sólo tendrás que pegar cada una de las siguientes instrucciones una por una y oprimir “Enter”. Si solo queremos transmitir en formato ogg sólo tenemos que instalar Darkice con:
aptitude install darkice
Si queremos transmitir con mp3 hay que hacer un par de pasos más:
apt-get install checkinstall
cd /usr/src
wget -c http://ufpr.dl.sourceforge.net/sourceforge/lame/lame-3.97.tar.gz
wget -c http://ufpr.dl.sourceforge.net/sourceforge/darkice/darkice-0.18.1.tar.gz
tar -xzvf lame-3.97.tar.gz
tar -xzvf darkice-0.17.1.tar.gz
cd lame-3.97
./configure
Si aparece un error indicando que no puede compilar con soprte para Lame o que faltan librerías de Jack puedes instalar liblame0 , liblame-dev. libbio2jack0, libbio2jack0-dev, libjack0.100.0 y libjack0.100.0-dev. Puedes instalar estas librerías desde la terminal o desde el gestor de paquetes en Synaptic. Después volver a configurar con el comando ./configure
make
Para crear el paquete Debian, cuando nos pregunta el sistema oprimimos la tecla “Enter” para aceptar las opciones por defecto. Si tu sistema no es basado en Debian elimina la instrucción apt-get y utiliza make install en vez de usar la instrucción checkinstall.
checkinstall
cd ../darkice-0.17.1
./configure
make
Para crear el paquete Debian, cuando nos pregunta le damos al “intro” para aceptar las opciones por defecto.
checkinstall
Para resolver dependencias instalamos auto-apt
apt-get install auto-apt
auto-apt update
auto-apt run ./configure
auto-apt run make
Instalación en Debian etch con el manejador de paquetes
Es recomendable utilizar el manejador de paquetes de tu distribución. Para no complicarse con las dependencias, en debían/GNU Linux y sus variaciones podemos usar aptitude o synaptic para instalar paquetes. La diferencia entre es que aptitude opera desde la línea de comandos, y synaptic ofrece una interfaz gráfica.
Para transmitir sólo en formato Ogg Vorbis
aptitude install darkice
Para transmitir en formato mp3
Debian no incluye nativamente programas para la codificación en mp3. Si se quiere transmitir en mp3 es necesario incluir los paquetes de “debian-multimedia” en nuestro sistema y configurar el manejador de paquetes para tenerlos disponibles.
Editar lista de fuentes
Cambia a root.
sudo su
Anota tu password.
Abrir el archivo ”/etc/apt/sources.list” con un editor de textos. Aquí lo hacemos con gedit, pero podrías usar nano o vim también.
gedit /etc/apt/sources.list
Añadir esta línea al documento y guarda:
deb
http://www.debian-multimedia.org etch main
Actualiza el sistema e instala nuestra lista de paquetes:
aptitude update
Ahora estamos listos para instalar Darkice:
aptitude install darkice-full
Deberas ver que va descargando Darkice y las dependencias que faltan. Al finalizar la descarga instalara todos los paquetes necesarios.
¿Cómo configurar Darkice para hacer un stream?
Ahora vamos a ver con configurar Darkice para transmitir por internet. Recuerda que pudes accesar al manual de Darkice con la siguiente línea en la terminal (en inglés):
man darkice
Darkice contiene un archivo que contiene un ejemplo de configuración para stream. El ejemplo contiene 3 ejemplos para configurar un stream con Icecast1, Icecast2 y Shoutcase. Vamos a abrir el archivo darkice.cfg con gedit para poderlo editar:
gedit usr/share/doc/darkice/examples/darkice.cfg
En el ejemplo aparecen ciertas variables que debemos modificar para definir la calidad de nuestro streaming, asi como el servidor de stream, la informacion del stream y de nuestro dispositivo de audio :
general
bufferSecs = 6 # tiempo de duracion del buffer
duration = 0 # duracion de reproduccion 0 representa infinito
reconnect = yes # reconectar el servidor en caso de que se desconecte
input
sampleRate = 22050 # sample rate en Hz
bitsPerSample = 16 # bits transmitidos por el sample.
channel = 1 # canales usados (1 = mono, 2 = stereo)
device = /dev/dsp1 # Dispositivo usado para la capturar de audio
icecast2-0
bitrate = 32 # Cantidad de kbps que seran transmitidos durante la coneccion
bitrateMode = cbr # Tipo de bitrate
format = mp3 # Formato de transmision
server = giss.tv # Nombre del servidor del streaming
port = 8080 # Puerto TCP del servidor icecast2
mountPoint = radio.ogg # Punto de montaje del servidor icecast2
name = Radio # Nombre generico de la radio
description = Radio # Descripcion de la radio
genre = Noticia # Genero de la radio
password = SENHA # Password del servidor icecast2
url = http://radio.minhasradio.org # URL del servidor de streaming
localDumpFile
Una vez modificadas las variables para la configuracion de nuestro streaming,guardamos el documento en otro directorio de nuestra computadora, y ahora podemos abrir el archivo con darkice para comenzar nuestro streaming:
darkice -c home/localhost/Desktop/darkice.cfg