Situación:
Ordenador ajeno. Windows va un poco lento y tengo un DVD de Molinux 6.0 "Zoraida", la distro del Gobierno de la Comunidad de Castilla-La Mancha, basada en ubuntu 10.04.
Lo usaré en modo Live. Unos minutos después... Oh NOOO! ¡No funciona el sonido!
Abro una terminal y ejecuto:
$ alsamixer
Con la esperanza de que todo sea cosa de subir algún nivel o de activar algún canal. Pero aparece este mensaje:
no se pueden cargar los controles del mezclador: Argumento inválido
Lo primero que hago es mirar si realmente tengo una tarjeta de sonido:
$ lspci |grep -i audio
Que me devuelve:
00:1b.0 Audio device: Intel Corporation N10/ICH 7 Family High Definition Audio Controller (rev 01)
También echo un vistazo a /proc/asound/...
$ cat /proc/asound/cards /proc/asound/modules
0 [Intel ]: HDA-Intel - HDA Intel
HDA Intel at 0xfdff8000 irq 16
0 snd_hda_intel
¿Entonces, qué es lo que falla? La verdad es que snd-hda-intel soporta muchas tarjetas de audio parecidas pero diferentes. Voy a buscar el codec:
$ cat /proc/asound/card0/codec* |grep -i codec
Que me da:
Codec: Realtek ALC887
Y encuentro dos sitios donde se da la solución:
https://answers.launchpad.net/ubuntu/+source/alsa-driver/+question/150750 (comentario #2)
https://lists.ubuntu.com/archives/ubuntu-es/2011-March/046654.html
que consiste en agregar la línea
options snd-hda-intel model=generic
en el archivo /etc/modprobe.d/alsa-base.conf
Genial, pero ¿Qué hago yo con un Live CD? No puedo guardar ese archivo. ¿Cómo pasar esa opción al módulo snd-hda-intel sin reiniciar?
Pues lo primero es descargarlo:
$ sudo rmmod snd-hda-intel
Y ahora lo volvemos a cargar con la opción añadida al final:
$ sudo modprobe snd-hda-intel model=generic
Pulseaudio se queda medio-atontado con la operación: Si vamos a las preferencias de sonido nos aparece un dispositivo de salida bobo ("dummy").
Debido a la característica de "autospawn" de pulseaudio, matarlo es como reiniciarlo. Con k de kill:
$ pulseaudio -k
Y ahora sí:
$ speaker-test -c 2 -t wav
front left... front right... front left... front right... música para mis oídos.
sábado, 5 de noviembre de 2011
viernes, 8 de julio de 2011
Mis primeros pasos con Lilypond
(Dedicado a mi padre)
#########################
Notas de revisiones:
Rev 0: 19 julio 2011. Publicado.
#########################
Llevo un tiempo usando lilypond (página oficial, wikipedia, ambas en castellano) para escribir partituras, sobretodo para guitarra. El otro día, mi amigo y gran guitarrista Unai vio (y amablemente se animó a interpretar) alguna de ellas. Parece que le gustaron y me animó a mejorarlas.
Antes de nada, el "disclaimer" de rigor: Soy un guitarrista aficionado que disfruta con lilypond por la belleza de la impresión, para reflexionar sobre lo que toco, mejorar posturas, entender mejor la música... Y porque me resulta un pasatiempos divertido. Al mismo tiempo, creo que puede ser una buena herramienta para algunos músicos que quizás aún no lo hayan descubierto. Esta entrada habla de mi experiencia autodidacta, con algunos ejemplos de mi proceso de aprendizaje y un par de piezas de música antigua que suelo tocar desde hace muchos años. Hay una habitación muy grande y yo estoy mirando por el ojo de la cerradura pero está bien saber que se puede disfrutar desde el primer día. Además, es un buen ejercicio mental.
Contrariamente a algunos mitos que podemos encontrar en internet, ni hay que saber C++ ni hay que esperar (al menos no más de unos segundos) para ver el resultado impreso. Lilypond se escribe en texto plano con un lenguaje no excesivamente complicado y orientado a la expresión musical.
Cuando falla la compilación o hay avisos de incoherencias, es un pequeño triunfo encontrar el problema y solucionarlo (me he comido una llave, el compás no cuadra...). Cada vez son menos estos fallos pues ya tengo mis plantillas para no tener que empezar desde cero cada vez. Cuando quiero representar algo no tan frecuente investigo en el manual y en el repositorio de snippets (fragmentos de código lilypond). Ver estos fragmentos por primera vez asusta un poco pero empezar es muy fácil. Por ejemplo, esto:
\version "2.14.1"
\score {
\relative c' {c d e f g a b c}
}
Produce esto:

Lo podéis probar ahora mismo en omet.ca, una página web para edición de partituras "online" (en progreso), que sirve entre otras cosas para generar pdf's a partir de código lilypond (más abajo están las instrucciones para instalar lilypond localmente). Simplemente copiar el código de arriba en la pestaña "Sandbox" y pulsar la flecha para compilar y aparecerá una nueva pestaña "Rendered" con la impresión de la partitura, así como un enlace directo para descargarlo en formato pdf.
Por aquello de "divide y vencerás" y también para aprovechar bloques de texto que sirvan como plantilla para partituras similares, conviene separar la melodía en un bloque diferente, como en el siguiente ejemplo, donde definimos la palabra clave "voz" con la sucesión de notas relativas a do alto y la invocamos más abajo dentro del bloque \score.
Observad que las líneas que empiezan por el símbolo de porcentaje, "%", son comentarios, es decir, no son tenidos en cuenta por lilypond pero vienen muy bien para nuestras referencias y recordatorios, en este ejemplo para numerar los compases. Por otro lado, las "tuberías", "|" sirven como separadores de compás; no son estrictamente necesarias pues lilypond imprimirá las barras de acuerdo al compás y a las duraciones de notas indicadas, hayamos escrito o no las tuberías. Sin embargo, éstas no sólo ayudan a guiarnos en el archivo de texto, sino que además habilitan la comprobación de compases: Si un compás no cuadra lilypond nos lo chivará.
Para hacerlo más legible podemos dejar líneas en blanco.
Este código da el mismo resultado que hemos visto arriba:
\version "2.14.1"
voz = \relative c'{
%1
c d e f |
%2
g a b c |
}
\score {
\voz
}
Sin haberlo indicado expresamente, el compás es de 4/4, la tonalidad do mayor (no se imprimió ninguna armadura), la clave de sol y las notas negras. Creo que es mejor indicarlo, por claridad y para que sea fácil cambiarlo (¡Editar un plantilla es fácil!). Así que obtenemos el mismo resultado con este código:
\version "2.14.1"
voz = \relative c'{
\key c \major
\time 4/4
\clef treble
%1
c4 d e f |
%2
g a b c |
}
\score {
\voz
}
Fijémonos ahora en la duración de las notas. La primera es una negra (se indica con un 4) y todas las siguientes, como no decimos otra cosa, son negras también.
En cuanto a la altura tonal, la primera nota toma la octava de referencia indicada en la variable "\relative". El apóstrofe (rayita arriba) indica que partimos de una octava más alta que el do central. La coma (rayita abajo) indicaría una octava más baja.
Veis que estoy usando el estilo anglosajón para los nombres de las notas. Si os resulta más cómodo, podéis cambiar al más familiar do, re, mi... simplemente indicando \language "espanol" (sí, sin eñe). Este código genera el mismo resultado:
\version "2.14.1"
\language "espanol"
voz = \relative do'{
\key do \major
\time 4/4
\clef treble
%1
do4 re mi fa |
%2
sol la si do |
}
\score {
\voz
}
Veamos otro ejemplo:
\version "2.14.1"
voz = \relative c''{
\key d \minor
\time 4/4
\clef treble
%1
c4 d bes bes, |
%2
f'1 |
}
\score {
\voz
}
que una vez compilado aparece así:

Como veis, he modificado la tonalidad (re menor) y la octava de referencia para la primera nota (c''). bes es "si bemol" (para indicar sostenido usaríamos "is", por ejemplo, cis sería "do sostenido"). La cuarta nota es un "si bemol" una octava más baja que la anterior y la nota del segundo compás es un "fa" que dura una redonda (duración 1).
Como hemos señalado antes, gracias al comando \relative, la altura tonal de una nota siempre es relativa a la anterior. Cuando los intervalos entre notas consecutivas son pequeños no indicamos apóstrofe ni coma y la nota irá a su lugar. Cuando son grandes, hay unas reglas para establecer la altura tonal correcta escribiendo apóstrofe, coma, o nada. Estas reglas están explicadas en el manual (alternativamente, se puede usar el viejo método de "prueba y error").
Observamos que, habiendo indicado la tonalidad de re menor, aparece la armadura correspondiente en la impresión, "si bemol". Pero ojo, en las notas del código lilypond debemos indicar siempre la alteración. En este caso, si hubiéramos escrito b en lugar de bes, habría aparecido un becuadro delante de cada nota "si".
Veis que las líneas adicionales, así como las barras de separación de compás, son un poco más gruesas que las líneas del pentagrama pues Lilypond imita la escritura tradicional grabada a mano. Como tantos otros detalles, esto también se puede modificar.
Ahora un poco más complicado, con dos voces (melodía y bajo):
\version "2.14.1"
global = {
\key c \major
\time 4/4
\tempo 4 = 104
}
alto = \relative c'' {
\clef treble
\transposition c
\stemUp
%1
r8 e4 dis8 e d16 c~ c8. c16 |
%2
d8 c d c d c16 a~ a4 |
}
bajo = \relative c' {
\transposition c
\stemDown
%1
c4 g c c |
%2
f, c' f, f |
}
\score {
\new Staff
<<
\new Voice { \global \alto }
\new Voice { \global \bajo }
>>
\layout {}
}
\score {
\unfoldRepeats
\new Staff \with { midiInstrument = "Acoustic Guitar (nylon)" }
<<
\new Voice { \global \alto }
\new Voice { \global \bajo }
>>
\midi {}
}
Que da esta salida (clicar para verla bien):

Como veis, he introducido una nueva variable "global" que irá en todas las voces, con la tonalidad, la signatura de compás y el tempo. En la voz "alto" señalo la clave de sol, indico que todas las plicas vayan hacia arriba por defecto (\stemUp) e indico \transposition c, ya que la guitarra es un instrumento traspuesto por una octava. Es decir, se escribe en clave de sol sin indicaciones adicionales (sin un 8 abajo) pero las notas están realmente en una octava más baja.
En la voz "bajo" no hace falta volver a señalar la clave pero sí la trasposición, y además quiero que las plicas vayan hacia abajo (\stemDown).
Además, duplico el bloque \score; uno para la impresión (\layout {}) y otro para la salida MIDI. En este caso podría haberlo hecho en un solo bloque pero para el MIDI es necesario "desdoblar las repeticiones" (\unfoldRepeats) cuando éstas existen.
Podíamos haber indicado también digitaciones y cuerdas. Por ejemplo, para indicar un "do" negra con puntillo en la quinta cuerda con el tercer dedo, escribiríamos "c4.\4-3". Si no vemos necesario indicar la cuerda pero queremos indicar el dedo, bastará con "c4.-3".
En general, cuanto más común o habitual es lo que queremos indicar, más sencillo es el código. Como veis, lilypond tiene su curva de aprendizaje pero la pendiente, aunque larga (infinita nos parece), es bastante suave.
En la versión 2.14.1 se puede producir la salida en formato svg, además de pdf. Esto es genial, pues gracias a un editor de gráficos vectoriales como inkscape podremos corregir pequeños detalles (como colisiones o desplazamientos excesivos para evitar colisiones) que sólo con lilypond, a veces resulta complicado. Además nos ofrece una forma muy cómoda de personalizar las partituras (dibujitos, fotos, sellos... cualquier cosa imaginable puede ir en el mismo papel con un poco de arte e imaginación).
Instalación de lilypond
Es posible que tu distribución no tenga la última versión disponible en sus repositorios. Por ejemplo, para ubuntu lucid está la 2.12.3, pero en el momento de escribir esto la última estable es la 2.14.1. Por cierto, la 2.12.3 no permite exportar a svg.
Las instrucciones de instalación están en la propia página de descarga:
cd RUTA-DEL-DIRECTORIO-DE-DESCARGA
sh lilypond-2.14.1-SISTEMA-OPERATIVO.sh
Esto instala lilypond al directorio personal. Yo prefiero instalar al sistema, como el resto de programas. Yo hice:
cd Descargas
sudo sh lilypond-2.14.1-1.linux-x86.sh --prefix /usr
Entorno de trabajo
Existen algunos editores gráficos para Lilypond que facilitan la creación de plantillas, entradas de notas, etc. Yo de momento lo estoy usando con un simple editor de texto. A veces uso vim, a veces gedit.
Además, abro una ventanita de terminal (terminator), con dos subventanas; una para generar los ficheros de salida y otra para lanzar el lector de pdf's, evince. Uso Audacious para reproducir el MIDI. Está bien escucharlo para comprobar que el tempo es el correcto y que no hay fallos de tonos o duraciones.
"Compilación del código lilypond"
Para generar el archivo pdf (y el MIDI en su caso), basta con poner en la terminal:
lilypond miarchivo.ly
donde archivo.ly es el archivo de texto con el código de lilypond.
Para obtener la salida a svg, debemos indicar:
lilypond -dbackend=svg miarchivo.ly
Como siempre, podemos ver más opciones con:
lilypond --help
Piezas casi terminadas
Las piezas que incluyo en [1] y en [2] son bastante antiguas. Quizás fueron escritas para vihuela. Si alguien sabe su nombre original, o su autor, por favor indicármelo. Estaban en una cinta de casette de mi hermano hace más de 20 años y las aprendí "de oído" con su ayuda. Ahora estoy intentando transcribirlas.
La estructura del código es muy similar a la que he presentado antes, aunque algo más completa. Incluye un bloque para la cabecera, definición del papel, márgenes, tamaños, distancias... Algún que otro "override" para modificar la impresión por defecto (las notas y algunas líneas me parecen excesivamente gruesas comparadas con algunas partituras impresas que he visto). Es entretenido cambiar estos parámetros o eliminarlos (mejor "comentar" la línea antes que borrarla) y ver cómo queda. Hay una parte de código de "definición de cejillas" que es incomprensible para mí en un 80%. Lo saqué del repositorio de snippets. Es que así quedan mejor, me parece.
Sólo hay que copiar el texto a un archivo, darle un nombre con la extensión .ly y compilarlo con lilypond. O bien, utilizar omet.ca. ¡A ver qué os parecen!
[1]: Anónimo medieval http://paste.ubuntu.com/641524/
[2]: Danza medieval http://paste.ubuntu.com/641525/
Agradecimentos:
Francisco Vila y resto del equipo de desarrollo.
Unai y Juan por animarme a seguir con lilypond.
Otros recursos y direcciones de interés relacionadas con lilypond
Un manual de iniciación escrito en 2005
Proyecto mutopia donde su pueden encontrar un montón de partituras con su correspondiente código lilypond
#########################
Notas de revisiones:
Rev 0: 19 julio 2011. Publicado.
#########################
Llevo un tiempo usando lilypond (página oficial, wikipedia, ambas en castellano) para escribir partituras, sobretodo para guitarra. El otro día, mi amigo y gran guitarrista Unai vio (y amablemente se animó a interpretar) alguna de ellas. Parece que le gustaron y me animó a mejorarlas.
Antes de nada, el "disclaimer" de rigor: Soy un guitarrista aficionado que disfruta con lilypond por la belleza de la impresión, para reflexionar sobre lo que toco, mejorar posturas, entender mejor la música... Y porque me resulta un pasatiempos divertido. Al mismo tiempo, creo que puede ser una buena herramienta para algunos músicos que quizás aún no lo hayan descubierto. Esta entrada habla de mi experiencia autodidacta, con algunos ejemplos de mi proceso de aprendizaje y un par de piezas de música antigua que suelo tocar desde hace muchos años. Hay una habitación muy grande y yo estoy mirando por el ojo de la cerradura pero está bien saber que se puede disfrutar desde el primer día. Además, es un buen ejercicio mental.
Contrariamente a algunos mitos que podemos encontrar en internet, ni hay que saber C++ ni hay que esperar (al menos no más de unos segundos) para ver el resultado impreso. Lilypond se escribe en texto plano con un lenguaje no excesivamente complicado y orientado a la expresión musical.
Cuando falla la compilación o hay avisos de incoherencias, es un pequeño triunfo encontrar el problema y solucionarlo (me he comido una llave, el compás no cuadra...). Cada vez son menos estos fallos pues ya tengo mis plantillas para no tener que empezar desde cero cada vez. Cuando quiero representar algo no tan frecuente investigo en el manual y en el repositorio de snippets (fragmentos de código lilypond). Ver estos fragmentos por primera vez asusta un poco pero empezar es muy fácil. Por ejemplo, esto:
\version "2.14.1"
\score {
\relative c' {c d e f g a b c}
}
Produce esto:

Lo podéis probar ahora mismo en omet.ca, una página web para edición de partituras "online" (en progreso), que sirve entre otras cosas para generar pdf's a partir de código lilypond (más abajo están las instrucciones para instalar lilypond localmente). Simplemente copiar el código de arriba en la pestaña "Sandbox" y pulsar la flecha para compilar y aparecerá una nueva pestaña "Rendered" con la impresión de la partitura, así como un enlace directo para descargarlo en formato pdf.
Por aquello de "divide y vencerás" y también para aprovechar bloques de texto que sirvan como plantilla para partituras similares, conviene separar la melodía en un bloque diferente, como en el siguiente ejemplo, donde definimos la palabra clave "voz" con la sucesión de notas relativas a do alto y la invocamos más abajo dentro del bloque \score.
Observad que las líneas que empiezan por el símbolo de porcentaje, "%", son comentarios, es decir, no son tenidos en cuenta por lilypond pero vienen muy bien para nuestras referencias y recordatorios, en este ejemplo para numerar los compases. Por otro lado, las "tuberías", "|" sirven como separadores de compás; no son estrictamente necesarias pues lilypond imprimirá las barras de acuerdo al compás y a las duraciones de notas indicadas, hayamos escrito o no las tuberías. Sin embargo, éstas no sólo ayudan a guiarnos en el archivo de texto, sino que además habilitan la comprobación de compases: Si un compás no cuadra lilypond nos lo chivará.
Para hacerlo más legible podemos dejar líneas en blanco.
Este código da el mismo resultado que hemos visto arriba:
\version "2.14.1"
voz = \relative c'{
%1
c d e f |
%2
g a b c |
}
\score {
\voz
}
Sin haberlo indicado expresamente, el compás es de 4/4, la tonalidad do mayor (no se imprimió ninguna armadura), la clave de sol y las notas negras. Creo que es mejor indicarlo, por claridad y para que sea fácil cambiarlo (¡Editar un plantilla es fácil!). Así que obtenemos el mismo resultado con este código:
\version "2.14.1"
voz = \relative c'{
\key c \major
\time 4/4
\clef treble
%1
c4 d e f |
%2
g a b c |
}
\score {
\voz
}
Fijémonos ahora en la duración de las notas. La primera es una negra (se indica con un 4) y todas las siguientes, como no decimos otra cosa, son negras también.
En cuanto a la altura tonal, la primera nota toma la octava de referencia indicada en la variable "\relative". El apóstrofe (rayita arriba) indica que partimos de una octava más alta que el do central. La coma (rayita abajo) indicaría una octava más baja.
Veis que estoy usando el estilo anglosajón para los nombres de las notas. Si os resulta más cómodo, podéis cambiar al más familiar do, re, mi... simplemente indicando \language "espanol" (sí, sin eñe). Este código genera el mismo resultado:
\version "2.14.1"
\language "espanol"
voz = \relative do'{
\key do \major
\time 4/4
\clef treble
%1
do4 re mi fa |
%2
sol la si do |
}
\score {
\voz
}
Veamos otro ejemplo:
\version "2.14.1"
voz = \relative c''{
\key d \minor
\time 4/4
\clef treble
%1
c4 d bes bes, |
%2
f'1 |
}
\score {
\voz
}
que una vez compilado aparece así:

Como veis, he modificado la tonalidad (re menor) y la octava de referencia para la primera nota (c''). bes es "si bemol" (para indicar sostenido usaríamos "is", por ejemplo, cis sería "do sostenido"). La cuarta nota es un "si bemol" una octava más baja que la anterior y la nota del segundo compás es un "fa" que dura una redonda (duración 1).
Como hemos señalado antes, gracias al comando \relative, la altura tonal de una nota siempre es relativa a la anterior. Cuando los intervalos entre notas consecutivas son pequeños no indicamos apóstrofe ni coma y la nota irá a su lugar. Cuando son grandes, hay unas reglas para establecer la altura tonal correcta escribiendo apóstrofe, coma, o nada. Estas reglas están explicadas en el manual (alternativamente, se puede usar el viejo método de "prueba y error").
Observamos que, habiendo indicado la tonalidad de re menor, aparece la armadura correspondiente en la impresión, "si bemol". Pero ojo, en las notas del código lilypond debemos indicar siempre la alteración. En este caso, si hubiéramos escrito b en lugar de bes, habría aparecido un becuadro delante de cada nota "si".
Veis que las líneas adicionales, así como las barras de separación de compás, son un poco más gruesas que las líneas del pentagrama pues Lilypond imita la escritura tradicional grabada a mano. Como tantos otros detalles, esto también se puede modificar.
Ahora un poco más complicado, con dos voces (melodía y bajo):
\version "2.14.1"
global = {
\key c \major
\time 4/4
\tempo 4 = 104
}
alto = \relative c'' {
\clef treble
\transposition c
\stemUp
%1
r8 e4 dis8 e d16 c~ c8. c16 |
%2
d8 c d c d c16 a~ a4 |
}
bajo = \relative c' {
\transposition c
\stemDown
%1
c4 g c c |
%2
f, c' f, f |
}
\score {
\new Staff
<<
\new Voice { \global \alto }
\new Voice { \global \bajo }
>>
\layout {}
}
\score {
\unfoldRepeats
\new Staff \with { midiInstrument = "Acoustic Guitar (nylon)" }
<<
\new Voice { \global \alto }
\new Voice { \global \bajo }
>>
\midi {}
}
Que da esta salida (clicar para verla bien):

Como veis, he introducido una nueva variable "global" que irá en todas las voces, con la tonalidad, la signatura de compás y el tempo. En la voz "alto" señalo la clave de sol, indico que todas las plicas vayan hacia arriba por defecto (\stemUp) e indico \transposition c, ya que la guitarra es un instrumento traspuesto por una octava. Es decir, se escribe en clave de sol sin indicaciones adicionales (sin un 8 abajo) pero las notas están realmente en una octava más baja.
En la voz "bajo" no hace falta volver a señalar la clave pero sí la trasposición, y además quiero que las plicas vayan hacia abajo (\stemDown).
Además, duplico el bloque \score; uno para la impresión (\layout {}) y otro para la salida MIDI. En este caso podría haberlo hecho en un solo bloque pero para el MIDI es necesario "desdoblar las repeticiones" (\unfoldRepeats) cuando éstas existen.
Podíamos haber indicado también digitaciones y cuerdas. Por ejemplo, para indicar un "do" negra con puntillo en la quinta cuerda con el tercer dedo, escribiríamos "c4.\4-3". Si no vemos necesario indicar la cuerda pero queremos indicar el dedo, bastará con "c4.-3".
En general, cuanto más común o habitual es lo que queremos indicar, más sencillo es el código. Como veis, lilypond tiene su curva de aprendizaje pero la pendiente, aunque larga (infinita nos parece), es bastante suave.
En la versión 2.14.1 se puede producir la salida en formato svg, además de pdf. Esto es genial, pues gracias a un editor de gráficos vectoriales como inkscape podremos corregir pequeños detalles (como colisiones o desplazamientos excesivos para evitar colisiones) que sólo con lilypond, a veces resulta complicado. Además nos ofrece una forma muy cómoda de personalizar las partituras (dibujitos, fotos, sellos... cualquier cosa imaginable puede ir en el mismo papel con un poco de arte e imaginación).
Instalación de lilypond
Es posible que tu distribución no tenga la última versión disponible en sus repositorios. Por ejemplo, para ubuntu lucid está la 2.12.3, pero en el momento de escribir esto la última estable es la 2.14.1. Por cierto, la 2.12.3 no permite exportar a svg.
Las instrucciones de instalación están en la propia página de descarga:
cd RUTA-DEL-DIRECTORIO-DE-DESCARGA
sh lilypond-2.14.1-SISTEMA-OPERATIVO.sh
Esto instala lilypond al directorio personal. Yo prefiero instalar al sistema, como el resto de programas. Yo hice:
cd Descargas
sudo sh lilypond-2.14.1-1.linux-x86.sh --prefix /usr
Entorno de trabajo
Existen algunos editores gráficos para Lilypond que facilitan la creación de plantillas, entradas de notas, etc. Yo de momento lo estoy usando con un simple editor de texto. A veces uso vim, a veces gedit.
Además, abro una ventanita de terminal (terminator), con dos subventanas; una para generar los ficheros de salida y otra para lanzar el lector de pdf's, evince. Uso Audacious para reproducir el MIDI. Está bien escucharlo para comprobar que el tempo es el correcto y que no hay fallos de tonos o duraciones.
"Compilación del código lilypond"
Para generar el archivo pdf (y el MIDI en su caso), basta con poner en la terminal:
lilypond miarchivo.ly
donde archivo.ly es el archivo de texto con el código de lilypond.
Para obtener la salida a svg, debemos indicar:
lilypond -dbackend=svg miarchivo.ly
Como siempre, podemos ver más opciones con:
lilypond --help
Piezas casi terminadas
Las piezas que incluyo en [1] y en [2] son bastante antiguas. Quizás fueron escritas para vihuela. Si alguien sabe su nombre original, o su autor, por favor indicármelo. Estaban en una cinta de casette de mi hermano hace más de 20 años y las aprendí "de oído" con su ayuda. Ahora estoy intentando transcribirlas.
La estructura del código es muy similar a la que he presentado antes, aunque algo más completa. Incluye un bloque para la cabecera, definición del papel, márgenes, tamaños, distancias... Algún que otro "override" para modificar la impresión por defecto (las notas y algunas líneas me parecen excesivamente gruesas comparadas con algunas partituras impresas que he visto). Es entretenido cambiar estos parámetros o eliminarlos (mejor "comentar" la línea antes que borrarla) y ver cómo queda. Hay una parte de código de "definición de cejillas" que es incomprensible para mí en un 80%. Lo saqué del repositorio de snippets. Es que así quedan mejor, me parece.
Sólo hay que copiar el texto a un archivo, darle un nombre con la extensión .ly y compilarlo con lilypond. O bien, utilizar omet.ca. ¡A ver qué os parecen!
[1]: Anónimo medieval http://paste.ubuntu.com/641524/
[2]: Danza medieval http://paste.ubuntu.com/641525/
Agradecimentos:
Francisco Vila y resto del equipo de desarrollo.
Unai y Juan por animarme a seguir con lilypond.
Otros recursos y direcciones de interés relacionadas con lilypond
Un manual de iniciación escrito en 2005
Proyecto mutopia donde su pueden encontrar un montón de partituras con su correspondiente código lilypond
sábado, 26 de marzo de 2011
Radio Tray
Pequeña aplicación, gran descubrimiento
Radio Tray
En gnome, cuando lanzamos el programa desde Aplicaciones -> Sonido y Vídeo su icono aparece en el Área de Notificación del panel. Desde ahí mismo, con botón 1 (normalmente izquierdo), podemos elegir la emisora. ¡Y yo usando VLC para escuchar la radio!
Instalación
En ubuntu lucid no está en los repositorios oficiales. Tampoco creo que esté en maverick y tampoco he encontrado ningún PPA que lo incluya. No hay problema en usar el método "windows". Lo podemos descargar o directamente instalar desde el link de descarga directa del archivo radiotray_0.6.3_all.deb en su sitio oficial de sourceforge. El sufijo _all sugiere que el paquete es compatible con sistemas de 32 y de 64 bits.
Supongo que resolverá directamente las dependencias, si nos falta alguna. A mí me ha funcionado a la primera.
Uso
Aquí no hay mucho más que explicar. Precisamente de eso se trata: Es _fácil_.
Radio Tray incluye varias emisoras de música. Si pulsamos el icono con botón 2 (normalmente derecho) podemos configurar las emisoras. Entre otras cosas, añadir una nueva.
Añadir una emisora
Para añadir una emisora, debemos conocer su dirección de streaming. La extensión UnPlug de firefox nos puede ayudar para ello.
Antes de añadir la nueva radio, si no entra dentro de las categorías existentes, podemos añadir un nuevo grupo, acordándonos de poner "root" como "parent group" para que aparezca en la raíz. También podemos crear subgrupos dentro de los grupos existentes.
He añadido una emisora y he estropeado el invento
Probablemente porque la dirección de streaming no es correcta o no funciona. Lo malo es que Radio Tray no responde (!). killall al rescate. Abrimos una línea de comandos con ALT+F2 (o una terminal) y escribimos:
killall radiotray
Quiero que suene a través de Jack
Por supuesto, somos amigos de Jack.
El motor de audio es gstreamer, por lo tanto tenemos que "jackificar" gstreamer. Hace tiempo explicamos cómo conseguirlo en unos cuantos reproductores, entre otros, rhythmbox, el reproductor de música de ubuntu. Rhytmhbox también usa gstreamer, así que, si ya lo hicimos antes, radio tray también sonara con jack. Y si no, aquí os recuerdo cómo:
Q: ¿Puedo hacer que rythmhbox vaya con pulseaudio, como lo tengo ahora, y Radio Tray con jack?
A: No (que yo sepa).
Quiero grabar la radio
Buena idea. Para esto, nada como la máquina del tiempo.
Ya hicimos una entrada dedicada a timemachine (y a jack_capture).
Es genial porque igual escuchamos algo tan interesante que nos gustaría haberlo grabado. De repente nos acordamos de que... ¡Podemos viajar en el tiempo y grabarlo!
Eso sí, conviene cambiar el comportamiento por defecto de timemachine como explicamos en su día.
¡Y también conviene convertir los wav a ogg o a mp3 de vez en cuando! (Si tenéis prisa a corto plazo o sois terminal-fóbicos, ir directamente a los comentarios de César e igny y usar Sound Converter o Mobile Media Converter).
Radio Tray
En gnome, cuando lanzamos el programa desde Aplicaciones -> Sonido y Vídeo su icono aparece en el Área de Notificación del panel. Desde ahí mismo, con botón 1 (normalmente izquierdo), podemos elegir la emisora. ¡Y yo usando VLC para escuchar la radio!
Instalación
En ubuntu lucid no está en los repositorios oficiales. Tampoco creo que esté en maverick y tampoco he encontrado ningún PPA que lo incluya. No hay problema en usar el método "windows". Lo podemos descargar o directamente instalar desde el link de descarga directa del archivo radiotray_0.6.3_all.deb en su sitio oficial de sourceforge. El sufijo _all sugiere que el paquete es compatible con sistemas de 32 y de 64 bits.
Supongo que resolverá directamente las dependencias, si nos falta alguna. A mí me ha funcionado a la primera.
Uso
Aquí no hay mucho más que explicar. Precisamente de eso se trata: Es _fácil_.
Radio Tray incluye varias emisoras de música. Si pulsamos el icono con botón 2 (normalmente derecho) podemos configurar las emisoras. Entre otras cosas, añadir una nueva.
Añadir una emisora
Para añadir una emisora, debemos conocer su dirección de streaming. La extensión UnPlug de firefox nos puede ayudar para ello.
Antes de añadir la nueva radio, si no entra dentro de las categorías existentes, podemos añadir un nuevo grupo, acordándonos de poner "root" como "parent group" para que aparezca en la raíz. También podemos crear subgrupos dentro de los grupos existentes.
He añadido una emisora y he estropeado el invento
Probablemente porque la dirección de streaming no es correcta o no funciona. Lo malo es que Radio Tray no responde (!). killall al rescate. Abrimos una línea de comandos con ALT+F2 (o una terminal) y escribimos:
killall radiotray
Quiero que suene a través de Jack
Por supuesto, somos amigos de Jack.
El motor de audio es gstreamer, por lo tanto tenemos que "jackificar" gstreamer. Hace tiempo explicamos cómo conseguirlo en unos cuantos reproductores, entre otros, rhythmbox, el reproductor de música de ubuntu. Rhytmhbox también usa gstreamer, así que, si ya lo hicimos antes, radio tray también sonara con jack. Y si no, aquí os recuerdo cómo:
Necesitamos el paquete gstreamer0.10-plugins-bad
Ejecutamos (alt + F2 o desde terminal) 'gconf-editor' y en el directorio .../system/gstreamer/0.10/default/ damos el valor 'jackaudiosink' a los nombres 'audiosink', 'chataudiosink' y 'musicaudiosink'. Si no queremos que se autoconecten las salidas del reproductor a los system:playbacks, pondremos: 'jackaudiosink connect=none'
Q: ¿Puedo hacer que rythmhbox vaya con pulseaudio, como lo tengo ahora, y Radio Tray con jack?
A: No (que yo sepa).
Quiero grabar la radio
Buena idea. Para esto, nada como la máquina del tiempo.
Ya hicimos una entrada dedicada a timemachine (y a jack_capture).
Es genial porque igual escuchamos algo tan interesante que nos gustaría haberlo grabado. De repente nos acordamos de que... ¡Podemos viajar en el tiempo y grabarlo!
Eso sí, conviene cambiar el comportamiento por defecto de timemachine como explicamos en su día.
¡Y también conviene convertir los wav a ogg o a mp3 de vez en cuando! (Si tenéis prisa a corto plazo o sois terminal-fóbicos, ir directamente a los comentarios de César e igny y usar Sound Converter o Mobile Media Converter).
sábado, 12 de febrero de 2011
¿Qué opináis de los nuevos Linux?
(Otra entrada de transición. Estoy empezando a dejar el blog. Lo siento de verdad por los que seguís el blog. Necesito aprender cosas nuevas y que me dé tiempo a ir a nadar).
Quizás no escriba la tercera parte de la configuración de jack porque es lo más fácil, los cuadros por periodo, periodos por búfer y la frecuencia. No volverse locos, los valores por defecto están bien para empezar. Por lo que he leído, periodos por búfer de 3 son aceptables ó necesarios (pero no creo que obligatorios) para tarjetas USB y Firewire. En general, los valores por defecto funcionan.
La cuarta parte iba a tratar sobre el resto de opciones. Algunas son innecesarias y hay otras que no conozco bien. Yo no marco ninguna casilla de la columna de la izquierda, aparte del modo realtime o "Tiempo Real", como indicamos en la primera parte.
¡Se me acaban las ideas, ahora que suene la música!
Si alguien tiene alguna duda o algo que no le funciona como quiere, lo podéis preguntar en hispasonic que os van a contestar amablemente.
)
__________________________________________________________
Fin de la introducción, ahora, a por la entrada de hoy:
*********************************************************
He leído en el blog de cristalinux, y después he comprobado, que hay un poyecto para portar Android a PC.
Por otro lado, también creo recordar que he leído en la página de linux foundation que WebOS (¿Quién tendrá la culpa de que se llame así?) también quiere asaltar el escritorio.
Y qué pasa con MeeGo? Parece que Nokia ha cambiado la estrategia y ha dejado de pensar a largo plazo para que vender sea más sencillo. Lo que es peor, Windows 7 en sus móviles no tiene soporte para qt. Supongo que esto habrá desanimado a un montón de desarrolladores que siempre han pensado que qt4 es multiplataforma. Así va el mundo, menos mal que BG pone un montón de pasta para combatir enfermedades, algo bueno tenía que tener.
Sobre los GNU/Linux, las distribuciones modernas son buenísimas. El instalador es tan sencillo que puedes hacerlo mientras escuchas música, y desayunas al mismo tiempo, mientras que hace unos años te obligaba a estar super-atento y a rascarte la cabeza de vez en cuando. El aspecto de gnome ha mejorado un montón y los trucos para trabajar con montones de ventanas a la vez sin que te vuelvas (más) loco son geniales.
Parece que cada vez habrá más pantallas touchscreen de todos los tamaños, lo cual nos obligará a llevar siempre las manos limpias y las uñas cortadas. Demasiado incómodo para un fontanero o para alguien que experimenta técnicas para tocar la guitarra... A mí me gusta pero por otro lado pienso que la tierra se está empezando a cansar de que le muevan las cosas de su sitio...
El software libre importa mucho. Son esfuerzos que ayudan a otros a llegar más alto y quedan grabados para siempre. Igual sueno un poco "linux fanboy" pero por eso creo que es importante que Linux avance, porque ayuda a popularizar el software libre. Y porque es más fácil para mí :)
Gracias a los desarrolladores. Tiene que ser increíble la sensación de una persona que ha hecho algo que todo el mundo a su alrededor utiliza a diario, y al mismo tiempo pasar completamente desapercibido. Supongo que te odiarán si empiezas a gritar, "Éste ha hecho que funcionen vuestros móviles". En las ocasiones familiares, ya habrá tenido que cambiar la hora a alguno.
Salud! Pablo
Quizás no escriba la tercera parte de la configuración de jack porque es lo más fácil, los cuadros por periodo, periodos por búfer y la frecuencia. No volverse locos, los valores por defecto están bien para empezar. Por lo que he leído, periodos por búfer de 3 son aceptables ó necesarios (pero no creo que obligatorios) para tarjetas USB y Firewire. En general, los valores por defecto funcionan.
La cuarta parte iba a tratar sobre el resto de opciones. Algunas son innecesarias y hay otras que no conozco bien. Yo no marco ninguna casilla de la columna de la izquierda, aparte del modo realtime o "Tiempo Real", como indicamos en la primera parte.
¡Se me acaban las ideas, ahora que suene la música!
Si alguien tiene alguna duda o algo que no le funciona como quiere, lo podéis preguntar en hispasonic que os van a contestar amablemente.
)
__________________________________________________________
Fin de la introducción, ahora, a por la entrada de hoy:
*********************************************************
He leído en el blog de cristalinux, y después he comprobado, que hay un poyecto para portar Android a PC.
Por otro lado, también creo recordar que he leído en la página de linux foundation que WebOS (¿Quién tendrá la culpa de que se llame así?) también quiere asaltar el escritorio.
Y qué pasa con MeeGo? Parece que Nokia ha cambiado la estrategia y ha dejado de pensar a largo plazo para que vender sea más sencillo. Lo que es peor, Windows 7 en sus móviles no tiene soporte para qt. Supongo que esto habrá desanimado a un montón de desarrolladores que siempre han pensado que qt4 es multiplataforma. Así va el mundo, menos mal que BG pone un montón de pasta para combatir enfermedades, algo bueno tenía que tener.
Sobre los GNU/Linux, las distribuciones modernas son buenísimas. El instalador es tan sencillo que puedes hacerlo mientras escuchas música, y desayunas al mismo tiempo, mientras que hace unos años te obligaba a estar super-atento y a rascarte la cabeza de vez en cuando. El aspecto de gnome ha mejorado un montón y los trucos para trabajar con montones de ventanas a la vez sin que te vuelvas (más) loco son geniales.
Parece que cada vez habrá más pantallas touchscreen de todos los tamaños, lo cual nos obligará a llevar siempre las manos limpias y las uñas cortadas. Demasiado incómodo para un fontanero o para alguien que experimenta técnicas para tocar la guitarra... A mí me gusta pero por otro lado pienso que la tierra se está empezando a cansar de que le muevan las cosas de su sitio...
El software libre importa mucho. Son esfuerzos que ayudan a otros a llegar más alto y quedan grabados para siempre. Igual sueno un poco "linux fanboy" pero por eso creo que es importante que Linux avance, porque ayuda a popularizar el software libre. Y porque es más fácil para mí :)
Gracias a los desarrolladores. Tiene que ser increíble la sensación de una persona que ha hecho algo que todo el mundo a su alrededor utiliza a diario, y al mismo tiempo pasar completamente desapercibido. Supongo que te odiarán si empiezas a gritar, "Éste ha hecho que funcionen vuestros móviles". En las ocasiones familiares, ya habrá tenido que cambiar la hora a alguno.
Salud! Pablo
sábado, 8 de enero de 2011
Cómo convertir wav a mp3 o a ogg masivamente
En este tutorial explicaré cómo convertir de wav a formatos comprimidos como ogg y mp3 con un par de comandos inventados y muy fáciles de implementar. No me acuerdo de dónde saqué la idea o si simplemente lo copié de algún sitio, perdonar que no ponga las fuentes. He podido copiarlo de cualquier sitio que os aparezca en google usando las palabras clave.
1. Cómo generar tus propios comandos
Generar un nuevo comando basado en combinaciones de otros comandos y acaso con un poquito de programación básica en bash es divertido.
Primero tenemos que saber cuál es el contenido de la variable $PATH, con un comando como éste:
echo $PATH
Quizás encontréis algo parecido a esto:
/home/pablo/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
Supongo que no todo el mundo tendrá el directorio /home/su_nombre_de_usuario/bin en la variable $PATH y también es posible que alguien le quiera dar otro nombre a la carpeta que contiene los scripts de usuario. Por ejemplo, podría querer tener un directorio oculto llamado ".mis-scripts" (ojo al punto delante para que automáticamente se convierta en oculto).
En este caso, lo que queremos es añadir "/home/nombre_usuario/.mis-scritps" a la variable PATH. Esto lo podemos hacer de la siguiente forma:
gedit ~/.bashrc
La virguililla "~" es lo mismo que "/home/nombre_de_usuario_que_está_logeado". (Para saber qué usuario está logeado o bien si nos da un ataque de amnesia, podemos usar el comando whoami). Si no queréis copiar y pegar, en el teclado español podemos imprimir en pantalla la virguililla con la combinación [Alt Gr - Ñ] o con [Alt Gr - 4].
El caso es que al final del archivo .bashrc añadimos la siguiente línea:
PATH=/home/nombre_de_usuario/.mis-scripts:$PATH
Por supuesto, el directorio .mis-scripts deberá existir. Lo podemos crear con botón derecho dentro de nuestra carpeta personal. O bien con el comando:
mkdir ~/.mis-scripts
o el nombre que se os ocurra, u oculto o no oculto.
Adelántadome un poco para no perder más tiempo reiniciando cuando lleguemos al paso 4, si usamos gnome y nautilus (que traen por defecto las distros mayoritarias) vamos a instalar ahora el paquete "nautilus-open-terminal". Ya que tenemos la terminal abierta, sólo hay que copiar el comando:
sudo apt-get install nautilus-open-terminal
En el siguiente logueo del usuario (o arranque del ordenador) comprobamos otra vez con "echo $PATH" si el directorio elegido forma parte de PATH.
Bueno, pues ahora todos los scripts de bash ejecutables que estén en este directorio se pueden ejecutar simplemente invocando el nombre del archivo.
Yo tengo uno que se llama wav2mp3
2. Contenido de wav2mp3
Una vez que hemos comprobado que tenemos un directorio en "nuestro home" que forma parte de la variable PATH, podemos crear un archivo de texto dentro de dicho directorio, con el nombre wav2mp3 (o cualquier otro que se os ocurra siempre que sea coherente con el resto de explicaciones del tutorial) y con el siguiente contenido:
#!/bin/bash
#
# wav2mp3
#
for i in *.wav; do
lame -h -b 320 "$i" "${i%.wav}.mp3"
done
El comando que realmente hace la conversión es lame. En este caso, decimos que convierta a mp3 con buena calidad (opción -h) y a 320 kps (opción -b 320). Lo bueno de este script es que nos convierte de una vez todos los archivos wav que tengamos en el directorio donde lo apliquemos, como veremos en el punto 4.
3. Permiso de ejecución
Debemos dar a wav2mp3 permiso de ejecución. Botón derecho sobre el archivo, propiedades, permisos, permitir ejecutar el archivo como un programa. Desde la terminal lo podemos hacer con el comando:
chmod +x ~/.mis-scripts/*
4. Uso de wav2mp3
Para usar wav2mp3 abrimos una terminal en la localización donde tenemos los wav que queremos convertir a mp3. Para ello, si tenemos instalado nautilus-open-terminal, simplemente tendremos que navegar gráficamente hasta la carpeta que contiene los wavs, pulsar botón derecho dentro de la misma y "Abrir en un terminal".
Ahora escribimos:
wav2mp3
Y voilà, en un rato más o menos largo todos nuestros archivos de audio en wav serán convertidos a mp3 de alta calidad , en el mismo directorio, manteniendo su nombre y cambiando la extensión a mp3.
5. Y ogg?
Bueno, habrá que hacer otro comando wav2ogg. Para ello podemos usar este script:
#!/bin/bash
#
# wav2ogg
#
for i in *.wav; do
oggenc "$i" -q 6 -o "${i%.wav}.ogg"
done
Por supuesto, lame y oggenc pueden ser invocados con otras opciones. Siempre podemos echar un vistazo a sus manuales:
man lame
man oggenc
1. Cómo generar tus propios comandos
Generar un nuevo comando basado en combinaciones de otros comandos y acaso con un poquito de programación básica en bash es divertido.
Primero tenemos que saber cuál es el contenido de la variable $PATH, con un comando como éste:
echo $PATH
Quizás encontréis algo parecido a esto:
/home/pablo/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
Supongo que no todo el mundo tendrá el directorio /home/su_nombre_de_usuario/bin en la variable $PATH y también es posible que alguien le quiera dar otro nombre a la carpeta que contiene los scripts de usuario. Por ejemplo, podría querer tener un directorio oculto llamado ".mis-scripts" (ojo al punto delante para que automáticamente se convierta en oculto).
En este caso, lo que queremos es añadir "/home/nombre_usuario/.mis-scritps" a la variable PATH. Esto lo podemos hacer de la siguiente forma:
gedit ~/.bashrc
La virguililla "~" es lo mismo que "/home/nombre_de_usuario_que_está_logeado". (Para saber qué usuario está logeado o bien si nos da un ataque de amnesia, podemos usar el comando whoami). Si no queréis copiar y pegar, en el teclado español podemos imprimir en pantalla la virguililla con la combinación [Alt Gr - Ñ] o con [Alt Gr - 4].
El caso es que al final del archivo .bashrc añadimos la siguiente línea:
PATH=/home/nombre_de_usuario/.mis-scripts:$PATH
Por supuesto, el directorio .mis-scripts deberá existir. Lo podemos crear con botón derecho dentro de nuestra carpeta personal. O bien con el comando:
mkdir ~/.mis-scripts
o el nombre que se os ocurra, u oculto o no oculto.
Adelántadome un poco para no perder más tiempo reiniciando cuando lleguemos al paso 4, si usamos gnome y nautilus (que traen por defecto las distros mayoritarias) vamos a instalar ahora el paquete "nautilus-open-terminal". Ya que tenemos la terminal abierta, sólo hay que copiar el comando:
sudo apt-get install nautilus-open-terminal
En el siguiente logueo del usuario (o arranque del ordenador) comprobamos otra vez con "echo $PATH" si el directorio elegido forma parte de PATH.
Bueno, pues ahora todos los scripts de bash ejecutables que estén en este directorio se pueden ejecutar simplemente invocando el nombre del archivo.
Yo tengo uno que se llama wav2mp3
2. Contenido de wav2mp3
Una vez que hemos comprobado que tenemos un directorio en "nuestro home" que forma parte de la variable PATH, podemos crear un archivo de texto dentro de dicho directorio, con el nombre wav2mp3 (o cualquier otro que se os ocurra siempre que sea coherente con el resto de explicaciones del tutorial) y con el siguiente contenido:
#!/bin/bash
#
# wav2mp3
#
for i in *.wav; do
lame -h -b 320 "$i" "${i%.wav}.mp3"
done
El comando que realmente hace la conversión es lame. En este caso, decimos que convierta a mp3 con buena calidad (opción -h) y a 320 kps (opción -b 320). Lo bueno de este script es que nos convierte de una vez todos los archivos wav que tengamos en el directorio donde lo apliquemos, como veremos en el punto 4.
3. Permiso de ejecución
Debemos dar a wav2mp3 permiso de ejecución. Botón derecho sobre el archivo, propiedades, permisos, permitir ejecutar el archivo como un programa. Desde la terminal lo podemos hacer con el comando:
chmod +x ~/.mis-scripts/*
4. Uso de wav2mp3
Para usar wav2mp3 abrimos una terminal en la localización donde tenemos los wav que queremos convertir a mp3. Para ello, si tenemos instalado nautilus-open-terminal, simplemente tendremos que navegar gráficamente hasta la carpeta que contiene los wavs, pulsar botón derecho dentro de la misma y "Abrir en un terminal".
Ahora escribimos:
wav2mp3
Y voilà, en un rato más o menos largo todos nuestros archivos de audio en wav serán convertidos a mp3 de alta calidad , en el mismo directorio, manteniendo su nombre y cambiando la extensión a mp3.
5. Y ogg?
Bueno, habrá que hacer otro comando wav2ogg. Para ello podemos usar este script:
#!/bin/bash
#
# wav2ogg
#
for i in *.wav; do
oggenc "$i" -q 6 -o "${i%.wav}.ogg"
done
Por supuesto, lame y oggenc pueden ser invocados con otras opciones. Siempre podemos echar un vistazo a sus manuales:
man lame
man oggenc
viernes, 17 de diciembre de 2010
Configuración del servidor de audio Jack. Segunda parte
#########################
Notas de revisiones:
Rev 0: 19 diciembre 2010. Publicado.
Rev 1: 25 mayo 2011. Edición de mantenimiento.
#########################
Segunda parte. Dispositivos de entrada y de salida. Jack sobre varias tarjetas de audio
Si estás perdido en la tarea de configurar el servidor de audio jack, no empieces por aquí. Lee antes la primera y más importante parte.
Lo normal es que jack trabaje sobre una única tarjeta (el "interfaz") en la cual tendremos entradas y salidas suficientes para capturar y reproducir sonido. Sin embargo, se puede configurar jack para que utilice diferentes dispositivos de entrada y de salida.
También presentamos las utilidades alsa_in y alsa_out.
En las faq de jackaudio hay escrito algo sobre esto, yo intentaré elaborarlo un poquito más aun a riesgo de meter la pata.
Tarjetas y dispositivos
Alsa maneja los conceptos de "Tarjeta" (Card), "Dispositivo" (Device) y "Subdispositivo" (Subdevice). Cada tarjeta puede tener varios "dispositivos" y éstos a su vez, varios "subdispositivos". Jack necesita saber qué tarjeta y qué dispositivo usar así que dejamos de lado el "subdispositivo" (menos mal).
En general, una tarjeta soportada por alsa, se denomina numéricamente "hw:x,y", donde "x" es el número de tarjeta e "y" es el número de dispositivo, comenzando ambos desde cero. Muchas tarjetas tienen un dispositivo único y no hace falta especificarlo. Así, hw:0 es lo mismo que hw:0,0. Sin embargo hay otras tarjetas que tienen varios dispositivos, típicamente, las tarjetas "de consumo". Veamos esta imagen:

"arecord -l" muestra las tarjetas y dispositivos que sirven para captura y "aplay -l" los que se pueden usar para reproducción (he filtrado las líneas que contienen la palabra "subdispositivo"). En cada tarjeta puede haber dispositivos únicamente de captura, únicamente de reproducción, o dúplex. Los dispositivos dúplex (capaces de captura y reproducción simultánea) aparecen en la salida de ambos comandos.
Veis que la tarjeta 0, en este caso la M Audio Audiophile 24/96 (hw:M2496) nos lo pone fácil; sólo tiene un dispositivo y es válido tanto para captura como para reproducción.
La tarjeta 1 es la integrada, hw:Intel. Tiene dos dispositivos, uno para los puertos analógicos y otro para el puerto digital. Ambos son utilizables tanto para captura como para reproducción.
La tarjeta 2 es una tarjeta virtual. Paso palabra.
Con la tarjeta 3, la mítica SB Live!, la cosa se lía un poco. Si elegimos la interfaz "hw:Live" la cosa va bien pero nos encontramos con que sólo tenemos dos puertos de captura y dos puertos de reproducción. hw:Live es equivalente a hw:Live,0 y por tanto se usa el dispositivo que corresponde a "ADC Capture/Standard PCM Playback", que, por lo que se ve, enseña solamente estos 2 + 2 puertos.
¿Qué pasa con el resto de salidas del sistema surround? Pues que están en otro "dispositivo".
Para acceder a estos puertos podemos usar "hw:Live,0" para captura (es decir, "dispositivo de entrada" y "hw:Live,3" para reproducción (dispositivo de salida). Eso sí, tendremos que ir descubriendo qué "puerto escribible" de jack corresponde a qué salida física y, por supuesto, el mezclador interno y los niveles de los canales deberán de estar configurados correctamente en alsamixer.
En el pantallazo se puede observar cómo el menú desplegable en los dispositivos de entrada y salida se corresponden con las salidas de arecord -l y aplay -l respectivamente.

Por supuesto, también podemos intentar usar dispositivos de entrada y salida de tarjetas diferentes, pero no es muy recomendable. Para eso es mejor usar alsa_in y alsa_out.
alsa_in y alsa_out
Ejemplo de uso:
Jack está ejecutándose sobre el interfaz hw:M2496 pero nos vendría bien un canal estéreo de la SB Live! para monitorización. Podríamos usar:
alsa_out -jSBlive -dhw:Live,0
La opción -j es opcional. Ver: man alsa_out
Otras opciones
En el archivo ~/.asoundrc podemos crear dispositivos virtuales aunque esto es algo que supera mis conocimientos y mi experiencia. Ver el clásico "el cheapo howto" http://quicktoots.linuxaudio.org/toots/el-cheapo/ y la documentación de alsa para algunos ejemplos.
Notas de revisiones:
Rev 0: 19 diciembre 2010. Publicado.
Rev 1: 25 mayo 2011. Edición de mantenimiento.
#########################
Segunda parte. Dispositivos de entrada y de salida. Jack sobre varias tarjetas de audio
Si estás perdido en la tarea de configurar el servidor de audio jack, no empieces por aquí. Lee antes la primera y más importante parte.
Lo normal es que jack trabaje sobre una única tarjeta (el "interfaz") en la cual tendremos entradas y salidas suficientes para capturar y reproducir sonido. Sin embargo, se puede configurar jack para que utilice diferentes dispositivos de entrada y de salida.
También presentamos las utilidades alsa_in y alsa_out.
En las faq de jackaudio hay escrito algo sobre esto, yo intentaré elaborarlo un poquito más aun a riesgo de meter la pata.
Tarjetas y dispositivos
Alsa maneja los conceptos de "Tarjeta" (Card), "Dispositivo" (Device) y "Subdispositivo" (Subdevice). Cada tarjeta puede tener varios "dispositivos" y éstos a su vez, varios "subdispositivos". Jack necesita saber qué tarjeta y qué dispositivo usar así que dejamos de lado el "subdispositivo" (menos mal).
En general, una tarjeta soportada por alsa, se denomina numéricamente "hw:x,y", donde "x" es el número de tarjeta e "y" es el número de dispositivo, comenzando ambos desde cero. Muchas tarjetas tienen un dispositivo único y no hace falta especificarlo. Así, hw:0 es lo mismo que hw:0,0. Sin embargo hay otras tarjetas que tienen varios dispositivos, típicamente, las tarjetas "de consumo". Veamos esta imagen:

"arecord -l" muestra las tarjetas y dispositivos que sirven para captura y "aplay -l" los que se pueden usar para reproducción (he filtrado las líneas que contienen la palabra "subdispositivo"). En cada tarjeta puede haber dispositivos únicamente de captura, únicamente de reproducción, o dúplex. Los dispositivos dúplex (capaces de captura y reproducción simultánea) aparecen en la salida de ambos comandos.
Veis que la tarjeta 0, en este caso la M Audio Audiophile 24/96 (hw:M2496) nos lo pone fácil; sólo tiene un dispositivo y es válido tanto para captura como para reproducción.
La tarjeta 1 es la integrada, hw:Intel. Tiene dos dispositivos, uno para los puertos analógicos y otro para el puerto digital. Ambos son utilizables tanto para captura como para reproducción.
La tarjeta 2 es una tarjeta virtual. Paso palabra.
Con la tarjeta 3, la mítica SB Live!, la cosa se lía un poco. Si elegimos la interfaz "hw:Live" la cosa va bien pero nos encontramos con que sólo tenemos dos puertos de captura y dos puertos de reproducción. hw:Live es equivalente a hw:Live,0 y por tanto se usa el dispositivo que corresponde a "ADC Capture/Standard PCM Playback", que, por lo que se ve, enseña solamente estos 2 + 2 puertos.
¿Qué pasa con el resto de salidas del sistema surround? Pues que están en otro "dispositivo".
Para acceder a estos puertos podemos usar "hw:Live,0" para captura (es decir, "dispositivo de entrada" y "hw:Live,3" para reproducción (dispositivo de salida). Eso sí, tendremos que ir descubriendo qué "puerto escribible" de jack corresponde a qué salida física y, por supuesto, el mezclador interno y los niveles de los canales deberán de estar configurados correctamente en alsamixer.
En el pantallazo se puede observar cómo el menú desplegable en los dispositivos de entrada y salida se corresponden con las salidas de arecord -l y aplay -l respectivamente.

Por supuesto, también podemos intentar usar dispositivos de entrada y salida de tarjetas diferentes, pero no es muy recomendable. Para eso es mejor usar alsa_in y alsa_out.
alsa_in y alsa_out
Ejemplo de uso:
Jack está ejecutándose sobre el interfaz hw:M2496 pero nos vendría bien un canal estéreo de la SB Live! para monitorización. Podríamos usar:
alsa_out -jSBlive -dhw:Live,0
La opción -j es opcional. Ver: man alsa_out
Otras opciones
En el archivo ~/.asoundrc podemos crear dispositivos virtuales aunque esto es algo que supera mis conocimientos y mi experiencia. Ver el clásico "el cheapo howto" http://quicktoots.linuxaudio.org/toots/el-cheapo/ y la documentación de alsa para algunos ejemplos.
sábado, 4 de diciembre de 2010
Configuración del servidor de audio Jack. Primera parte
#########################
Notas de revisiones:
Rev 0: diciembre 2010. Publicado.
Rev 1: 17 diciembre 2010. Actualizado.
Rev 2. 22 enero 2011. Retocado texto de introducción.
Rev 3. 27 enero 2011. Añadidas referencias y enlaces (al final).
REv 4. 24 mayo 2011. Añadidas notas sobre el soporte del hardware y página de referencia de Jack1 vs Jack2
#########################
Primera parte. La ruta del servidor, el driver, el interfaz y el modo realtime
Introducción
Como es sabido, el servidor o demonio jackd permite baja latencia y una gran flexibilidad en las conexiones entre los puertos de audio y midi de sus clientes. Su configuración es también muy flexible y depende por completo de nuestro hardware y software de bajo nivel. NO hay una configuración universal. Por eso es importante entender al menos los conceptos básicos.
Hay que tener en cuenta que Jack se comunica directamente con el driver de la tarjeta de audio que nosotros elijamos. Además, necesita que el sistema operativo le deje hacer "sus cosas".
Eso sí, si conseguimos que el servidor Jack esté a gusto en nuestro sistema habremos recorrido un buen trecho del camino hacia el objetivo de hacer música con Linux.
qjackctl, o Jack Control es una interfaz gráfica que, entre otras cosas, nos permite configurar el servidor jackd, a través del botón Setup, pestaña "Configuraciones".
Al que le gusta experimentar sólo un consejo: Los valores por defecto son lo más universales posible, así que, si no funciona a la primera es buena idea hacer un solo cambio cada vez y volver a probar en lugar de poner todo en duda y querer entenderlo a la primera. En muchas ocasiones, un pequeño cambio arregla las cosas.
Como dijo Einstein, "Haz las cosas lo más simple posible". Aunque después añade: "Pero no más simple". Supongo que esto último fue lo que inspiró al gran Rui Nuno Capela para meter en una única ventana de configuración lo importante y lo menos importante, lo esencial y lo inútil, pero eso sí, todos los argumentos posibles que se le pueden pasar a jackd (bueno, casi todos).
Así que para simplificar, en esta serie de entradas vamos a ver la configuración de jack con sus opciones y parámetros en orden (no estricto) de importancia. Como dijo el otro Jack (el destripador), vamos por partes.
La ventana principal de qjackctl, indicando que el servidor jackd está iniciado. Ojo, "Detenido" se refiere al "transporte de jack", el cual sirve para sincronizar diferentes aplicaciones con un transporte común. El transporte de jack no se trata en esta entrada.
Jack1 y Jack2
Antes de seguir adelante, una explicación que considero importante. Jack1 es el jack original, escrito en C y desarrollado por Paul Davies. Stephan Letz reescribió jack en otro lenguaje de programación (C++), para soportar multiprocesadores. Por ello, jack2 es también llamado jackmp. Ambas implementaciones de jack tratan de mantenerse compatibles en sus argumentos de línea de comandos (aunque hay alguna pequeña diferencia como veremos) y qjackctl sirve perfectamente para ambos.
En todo caso, se debe tener en cuenta que:
- jack2 no es un reemplazo de jack1. Simplemente es diferente. Ambos se desarrollan en paralelo.
- Aunque jack2 tiene cosas buenas que jack1 no tiene, en general, jack1 está más probado y tiende a ser más robusto, especialmente con ardour.
- Normalmente, no podemos tener instalados los dos jacks al mismo tiempo. Tenemos que elegir. En ubuntu, hasta lucid lynx tendremos jack1 por defecto y, a partir de maverick (10.10 y posteriores), jack2. Podemos cambiar a jack1 instalando el paquete "jackd1" (que, por supuesto, desinstalará jackd2).
- Para saber cuál de los dos jacks tenemos instalado usamos el comando: "jackd -V". Las versiones que comienzan por 0, por ejemplo, 0.119.0, son jack1. Las que comienzan por 1, por ejempo 1.9.6, son jack2.
En la sección "Para saber más" hay una explicación más técnica y mejor informada acerca de las diferencias entre jack1 y jack2.
La ruta del servidor, el driver, el interfaz y el modo realtime

1. Ruta del servidor
Es el comando básico con el que lanzamos el servidor jack. Normalmente, la ruta completa del ejecutable es /usr/bin/jackd aunque también sirve jackd a secas.
Modo síncrono o asíncrono en jack2
jack2 funciona por defecto en modo asíncrono. Me parece que el modo asíncrono permite conectar y desconectar clientes sin provocar xruns pero lo malo es que añade un periodo de latencia (que qjackctl no reporta). jack1 simplemente no tiene modo asíncrono así que si queremos un jack2 que se parezca a jack1 lo lanzamos en modo síncrono añadiendo "-S" (precedido de un espacio y sin las comillas) al comando jackd, es decir, /usr/bin/jackd -S
Como veis en el pantallazo en la parte de abajo a la derecha, yo tengo instalado jack1 así que no me preocupo por esto. Sin embargo, si estáis con jack2, os recomiendo que lo lancéis en modo síncrono.
2. Driver
Usaremos el driver alsa si nuestra tarjeta es PCI o USB. Si tenemos una tarjeta firewire, usaremos el driver firewire. El resto de opciones, o están obsoletas o son para otros sistemas operativos, o para tarjetas soportadas por drivers alternativos y rara vez útiles. Aquí hacemos otro inciso obligatorio....
Soporte de tarjetas de audio
El soporte de tarjetas de audio en Linux está lejos de ser ideal, por lo que es importantísimo informarse antes de comprar. No me voy a extender porque es un tema que no controlo demasiado. Solo unas ideas:
Las tarjetas firewire están soportadas por los drivers del proyecto ffado, mientras que las USB y las PCI, por el proyecto ALSA. En sus páginas oficiales, se puede ver un listado de las tarjetas soportadas. Tener en cuenta que no todas están soportadas igual de bien.
Además, no sólo hay que tener en cuenta la propia tarjeta, sino también los controladores de los puertos USB y firewire.
Lo mejor es preguntar en sus páginas oficiales o en sus listas de correos, o en su defecto, en foros de usuarios, como el de hispasonic GNU/Linux o el superforo de ardour, ambos en castellano.
En inglés, las listas de usuarios de Linux Audio, de ALSA, de ffado, el foro de linuxmusicians, el foro de ardour... Además, algunos canales de IRC en freenode.net como #ffado, #alsa, #jack, #ardour, #opensourcemusicians, #ubuntustudio, etc, son recursos de ayuda en tiempo real que, con un poco de educación, suerte y paciencia, nos pueden ahorrar mucho tiempo y quebraderos de cabeza.
Ver también What audio interfaces should I use with Ardour?
3. Interfaz
Aquí indicamos la tarjeta de audio que va a utilizar Jack. Lo mejor es identificarla por su nombre en lugar de por su número.
Una forma para saber el nombre es usando el comando "cat /proc/asound/cards". Lo vemos entre corchetes. Como podéis observar en el pantallazo, linux-alsa está viendo 4 "tarjetas"; una m-audio 2496, la hda-intel integrada, snd_aloop y un teclado midi hardware, KeyRig 49. Por supuesto, quiero que jack trabaje sobre la m-audio que se identifica como "hw:M2496" y esto es lo que escribo en el campo "Interfaz". No importa que no aparezca en el menú desplegable; en este ejemplo hw:0 es lo mismo que hw:M2496. Es mejor poner hw:M2496 porque la numeración podría cambiar en diferentes arranques del ordenador pero el nombre no.
No con todas las tarjetas es tan fácil y tan directo. En la segunda parte desarrollamos un poco más todo esto y explicamos cómo usar un dispositivo para captura y otro diferente para reproducción.
4. Tiempo real
La casilla Tiempo Real da a jack privilegios de "real-time scheduling", es decir le "da derecho" a disponer de mayor prioridad que otros procesos. Esto es necesario para que jack pueda funcionar de forma estable a baja latencia. A veces se confunde la opción realtime con la necesidad de funcionar con un kernel 'rt'. No es que no tenga nada que ver, pero no es necesario un kernel realtime (con el parche PREEMPT_RT) para poder lanzar jackd con prioridad realtime.
Para que un usuario (es decir, no el administrador del sistema) pueda arrancar jack con la opción 'RealTime' es necesario que el usuario tenga asignada "prioridad de realtime" en el archivo de configuración del sistema '/etc/security/limits.conf' o cualquier otro archivo dentro del directorio /etc/security/limits.d/. En la práctica, esto se consigue haciendo que el usuario pertenezca a un grupo (en Debian/ubuntu, típicamente el grupo 'audio') y declarando el "privilegio" para este grupo, mediante una línea como '@audio - rtprio 99'. Además, debemos añadir otra línea como '@audio - memlock xxxxxx' donde xxxxxx es un número en kbytes relativamente alto. Algunos recomiendan que sea alrededor del 75% de la memoria RAM total. Otros directamente ponen el valor 'unlimited'. Según las advertencias de jack, el valor "unlimited" es peligroso para entornos multiusuario pero para un ordenador personal de usuario único tengo entendido que es aceptable.
En Debian testing y en ubuntu a partir de lucid, la forma más sencilla de darse prioridades de rtprio y memlock unlimted es con el comando:
sudo dpkg-reconfigure -p high jackd
(esto funciona en ubuntu lucid por ejemplo). En ubuntu maverick y probablemente en debian testing y derivadas, hay que especificar jackd1 o jackd2. Por ejemplo, desde una instalación limpia de ubuntu maverick, habría que hacer:
sudo dpkg-reconfigure -p high jackd2
Después, debemos asegurarnos que estamos en el grupo audio con el comando:
groups
Y si no es así, debemos añadir nuestro usuario al grupo audio. Se puede hacer de varias formas, por ejemplo con el comando:
sudo adduser nuestro_nombre_de_usuario audio
Estos cambios requieren reiniciar el ordenador.
Antes de lanzar jack viene bien comprobar que realmente nuestro usuario tiene los privilegios rtprio y memlock. Podemos usar el comando ulimit:
ulimit -r -l
Si la respuesta es algo parecido a:
real-time priority (-r) 99
max locked memory (kbytes, -l) unlimited
ya tenemos el sistema preparado para jack en modo realtime.
Entonces, ¿Cuando es necesario un kernel realtime?
Básicamente y que yo sepa, cuando los dispositivos hardware (tarjeta de audio, controlador firewire) comparten número de IRQ con otros dispositivos. Si recibimos muchos xruns sin motivo aparente (por ejemplo, con solamente jackd activo) a una latencia no excesivamente baja (por ejemplo, con 512 cuadros por periodo) merece la pena intentarlo con el kernel rt. No olvidemos que necesitamos levantar las prioridades de estos dispositivos, lo cual lo podemos hacer de forma automática con el script rtirq. Otro motivo para instalar el kernel rt es que, incluso cuando tenemos un sistema estable con una latencia lo suficientemente baja, queramos participar en una carrera para presumir de latencia. Yo creo que la latencia, cuanta más mejor, siempre que no nos impida interactuar cómodamente, es decir, siempre que no fastidie. Recordemos que el sonido tarda 2,9 ms en viajar a un metro de distancia... A alguien le molesta la latencia real de casi 9 ms cuando se pone a tocar o a cantar a 3 metros de un monitor? Bastante más te puedes alejar y seguirás igual de bien. Claro que se puede argumentar que todo suma, así que en software, cuanta menos latencia mejor. También es verdad, pero sin pasarse...
Para saber más
FAQ de jackaudio.org
Knowing jack, por Dave Philips
Diferencias entre Jack1 y Jack2
Notas de revisiones:
Rev 0: diciembre 2010. Publicado.
Rev 1: 17 diciembre 2010. Actualizado.
Rev 2. 22 enero 2011. Retocado texto de introducción.
Rev 3. 27 enero 2011. Añadidas referencias y enlaces (al final).
REv 4. 24 mayo 2011. Añadidas notas sobre el soporte del hardware y página de referencia de Jack1 vs Jack2
#########################
Primera parte. La ruta del servidor, el driver, el interfaz y el modo realtime
Introducción
Como es sabido, el servidor o demonio jackd permite baja latencia y una gran flexibilidad en las conexiones entre los puertos de audio y midi de sus clientes. Su configuración es también muy flexible y depende por completo de nuestro hardware y software de bajo nivel. NO hay una configuración universal. Por eso es importante entender al menos los conceptos básicos.
Hay que tener en cuenta que Jack se comunica directamente con el driver de la tarjeta de audio que nosotros elijamos. Además, necesita que el sistema operativo le deje hacer "sus cosas".
Eso sí, si conseguimos que el servidor Jack esté a gusto en nuestro sistema habremos recorrido un buen trecho del camino hacia el objetivo de hacer música con Linux.
qjackctl, o Jack Control es una interfaz gráfica que, entre otras cosas, nos permite configurar el servidor jackd, a través del botón Setup, pestaña "Configuraciones".
Al que le gusta experimentar sólo un consejo: Los valores por defecto son lo más universales posible, así que, si no funciona a la primera es buena idea hacer un solo cambio cada vez y volver a probar en lugar de poner todo en duda y querer entenderlo a la primera. En muchas ocasiones, un pequeño cambio arregla las cosas.
Como dijo Einstein, "Haz las cosas lo más simple posible". Aunque después añade: "Pero no más simple". Supongo que esto último fue lo que inspiró al gran Rui Nuno Capela para meter en una única ventana de configuración lo importante y lo menos importante, lo esencial y lo inútil, pero eso sí, todos los argumentos posibles que se le pueden pasar a jackd (bueno, casi todos).
Así que para simplificar, en esta serie de entradas vamos a ver la configuración de jack con sus opciones y parámetros en orden (no estricto) de importancia. Como dijo el otro Jack (el destripador), vamos por partes.
La ventana principal de qjackctl, indicando que el servidor jackd está iniciado. Ojo, "Detenido" se refiere al "transporte de jack", el cual sirve para sincronizar diferentes aplicaciones con un transporte común. El transporte de jack no se trata en esta entrada. Jack1 y Jack2
Antes de seguir adelante, una explicación que considero importante. Jack1 es el jack original, escrito en C y desarrollado por Paul Davies. Stephan Letz reescribió jack en otro lenguaje de programación (C++), para soportar multiprocesadores. Por ello, jack2 es también llamado jackmp. Ambas implementaciones de jack tratan de mantenerse compatibles en sus argumentos de línea de comandos (aunque hay alguna pequeña diferencia como veremos) y qjackctl sirve perfectamente para ambos.
En todo caso, se debe tener en cuenta que:
- jack2 no es un reemplazo de jack1. Simplemente es diferente. Ambos se desarrollan en paralelo.
- Aunque jack2 tiene cosas buenas que jack1 no tiene, en general, jack1 está más probado y tiende a ser más robusto, especialmente con ardour.
- Normalmente, no podemos tener instalados los dos jacks al mismo tiempo. Tenemos que elegir. En ubuntu, hasta lucid lynx tendremos jack1 por defecto y, a partir de maverick (10.10 y posteriores), jack2. Podemos cambiar a jack1 instalando el paquete "jackd1" (que, por supuesto, desinstalará jackd2).
- Para saber cuál de los dos jacks tenemos instalado usamos el comando: "jackd -V". Las versiones que comienzan por 0, por ejemplo, 0.119.0, son jack1. Las que comienzan por 1, por ejempo 1.9.6, son jack2.
En la sección "Para saber más" hay una explicación más técnica y mejor informada acerca de las diferencias entre jack1 y jack2.
La ruta del servidor, el driver, el interfaz y el modo realtime

1. Ruta del servidor
Es el comando básico con el que lanzamos el servidor jack. Normalmente, la ruta completa del ejecutable es /usr/bin/jackd aunque también sirve jackd a secas.
Modo síncrono o asíncrono en jack2
jack2 funciona por defecto en modo asíncrono. Me parece que el modo asíncrono permite conectar y desconectar clientes sin provocar xruns pero lo malo es que añade un periodo de latencia (que qjackctl no reporta). jack1 simplemente no tiene modo asíncrono así que si queremos un jack2 que se parezca a jack1 lo lanzamos en modo síncrono añadiendo "-S" (precedido de un espacio y sin las comillas) al comando jackd, es decir, /usr/bin/jackd -S
Como veis en el pantallazo en la parte de abajo a la derecha, yo tengo instalado jack1 así que no me preocupo por esto. Sin embargo, si estáis con jack2, os recomiendo que lo lancéis en modo síncrono.
2. Driver
Usaremos el driver alsa si nuestra tarjeta es PCI o USB. Si tenemos una tarjeta firewire, usaremos el driver firewire. El resto de opciones, o están obsoletas o son para otros sistemas operativos, o para tarjetas soportadas por drivers alternativos y rara vez útiles. Aquí hacemos otro inciso obligatorio....
Soporte de tarjetas de audio
El soporte de tarjetas de audio en Linux está lejos de ser ideal, por lo que es importantísimo informarse antes de comprar. No me voy a extender porque es un tema que no controlo demasiado. Solo unas ideas:
Las tarjetas firewire están soportadas por los drivers del proyecto ffado, mientras que las USB y las PCI, por el proyecto ALSA. En sus páginas oficiales, se puede ver un listado de las tarjetas soportadas. Tener en cuenta que no todas están soportadas igual de bien.
Además, no sólo hay que tener en cuenta la propia tarjeta, sino también los controladores de los puertos USB y firewire.
Lo mejor es preguntar en sus páginas oficiales o en sus listas de correos, o en su defecto, en foros de usuarios, como el de hispasonic GNU/Linux o el superforo de ardour, ambos en castellano.
En inglés, las listas de usuarios de Linux Audio, de ALSA, de ffado, el foro de linuxmusicians, el foro de ardour... Además, algunos canales de IRC en freenode.net como #ffado, #alsa, #jack, #ardour, #opensourcemusicians, #ubuntustudio, etc, son recursos de ayuda en tiempo real que, con un poco de educación, suerte y paciencia, nos pueden ahorrar mucho tiempo y quebraderos de cabeza.
Ver también What audio interfaces should I use with Ardour?
3. Interfaz
Aquí indicamos la tarjeta de audio que va a utilizar Jack. Lo mejor es identificarla por su nombre en lugar de por su número.
Una forma para saber el nombre es usando el comando "cat /proc/asound/cards". Lo vemos entre corchetes. Como podéis observar en el pantallazo, linux-alsa está viendo 4 "tarjetas"; una m-audio 2496, la hda-intel integrada, snd_aloop y un teclado midi hardware, KeyRig 49. Por supuesto, quiero que jack trabaje sobre la m-audio que se identifica como "hw:M2496" y esto es lo que escribo en el campo "Interfaz". No importa que no aparezca en el menú desplegable; en este ejemplo hw:0 es lo mismo que hw:M2496. Es mejor poner hw:M2496 porque la numeración podría cambiar en diferentes arranques del ordenador pero el nombre no.
No con todas las tarjetas es tan fácil y tan directo. En la segunda parte desarrollamos un poco más todo esto y explicamos cómo usar un dispositivo para captura y otro diferente para reproducción.
4. Tiempo real
La casilla Tiempo Real da a jack privilegios de "real-time scheduling", es decir le "da derecho" a disponer de mayor prioridad que otros procesos. Esto es necesario para que jack pueda funcionar de forma estable a baja latencia. A veces se confunde la opción realtime con la necesidad de funcionar con un kernel 'rt'. No es que no tenga nada que ver, pero no es necesario un kernel realtime (con el parche PREEMPT_RT) para poder lanzar jackd con prioridad realtime.
Para que un usuario (es decir, no el administrador del sistema) pueda arrancar jack con la opción 'RealTime' es necesario que el usuario tenga asignada "prioridad de realtime" en el archivo de configuración del sistema '/etc/security/limits.conf' o cualquier otro archivo dentro del directorio /etc/security/limits.d/. En la práctica, esto se consigue haciendo que el usuario pertenezca a un grupo (en Debian/ubuntu, típicamente el grupo 'audio') y declarando el "privilegio" para este grupo, mediante una línea como '@audio - rtprio 99'. Además, debemos añadir otra línea como '@audio - memlock xxxxxx' donde xxxxxx es un número en kbytes relativamente alto. Algunos recomiendan que sea alrededor del 75% de la memoria RAM total. Otros directamente ponen el valor 'unlimited'. Según las advertencias de jack, el valor "unlimited" es peligroso para entornos multiusuario pero para un ordenador personal de usuario único tengo entendido que es aceptable.
En Debian testing y en ubuntu a partir de lucid, la forma más sencilla de darse prioridades de rtprio y memlock unlimted es con el comando:
sudo dpkg-reconfigure -p high jackd
(esto funciona en ubuntu lucid por ejemplo). En ubuntu maverick y probablemente en debian testing y derivadas, hay que especificar jackd1 o jackd2. Por ejemplo, desde una instalación limpia de ubuntu maverick, habría que hacer:
sudo dpkg-reconfigure -p high jackd2
Después, debemos asegurarnos que estamos en el grupo audio con el comando:
groups
Y si no es así, debemos añadir nuestro usuario al grupo audio. Se puede hacer de varias formas, por ejemplo con el comando:
sudo adduser nuestro_nombre_de_usuario audio
Estos cambios requieren reiniciar el ordenador.
Antes de lanzar jack viene bien comprobar que realmente nuestro usuario tiene los privilegios rtprio y memlock. Podemos usar el comando ulimit:
ulimit -r -l
Si la respuesta es algo parecido a:
real-time priority (-r) 99
max locked memory (kbytes, -l) unlimited
ya tenemos el sistema preparado para jack en modo realtime.
Entonces, ¿Cuando es necesario un kernel realtime?
Básicamente y que yo sepa, cuando los dispositivos hardware (tarjeta de audio, controlador firewire) comparten número de IRQ con otros dispositivos. Si recibimos muchos xruns sin motivo aparente (por ejemplo, con solamente jackd activo) a una latencia no excesivamente baja (por ejemplo, con 512 cuadros por periodo) merece la pena intentarlo con el kernel rt. No olvidemos que necesitamos levantar las prioridades de estos dispositivos, lo cual lo podemos hacer de forma automática con el script rtirq. Otro motivo para instalar el kernel rt es que, incluso cuando tenemos un sistema estable con una latencia lo suficientemente baja, queramos participar en una carrera para presumir de latencia. Yo creo que la latencia, cuanta más mejor, siempre que no nos impida interactuar cómodamente, es decir, siempre que no fastidie. Recordemos que el sonido tarda 2,9 ms en viajar a un metro de distancia... A alguien le molesta la latencia real de casi 9 ms cuando se pone a tocar o a cantar a 3 metros de un monitor? Bastante más te puedes alejar y seguirás igual de bien. Claro que se puede argumentar que todo suma, así que en software, cuanta menos latencia mejor. También es verdad, pero sin pasarse...
Para saber más
FAQ de jackaudio.org
Knowing jack, por Dave Philips
Diferencias entre Jack1 y Jack2
sábado, 6 de noviembre de 2010
Qué NO hacer para que funcione jack (y otros pensamientos)
Qué no hacer para que funcione Jack
1. Pensar que el modo realtime de jack y el kernel realtime están relacionados.
2. Elegir un valor de cuadros de periodo excesivamente bajo.
3. Volverse loco con el valor de periodos por buffer.
4. Echarle las culpas de todo, especialmente cuando tratamos de tener audio a través de jack en programas no jack-friendly.
5. Elegir una configuración muy exigente para después lanzar programas a los que no haces ningún favor con estas exigencias, poniendo velas al diablo en lugar de actuar con prudencia.
A mayor latencia mejor respuesta gráfica, entre otras cosas.
Muchas cosas de la vida son similares a la termodinámica: Todo cuesta energía y todo tiene su sitio y su momento y hay que intentar ver las cosas en la escala espacio-temporal adecuada. Por eso muchas veces intentas buscar algo y no lo encuentras. La causa puede ser una de dos, o bien no aportas la suficiente "energía que cuesta" (en forma de trabajo) o bien estás violando la segunda ley, deseando imposibles.
Lo malo es que la frontera entre las dos situaciones es difícil de observar desde dentro de uno mismo y en general es más estrecha y estricta de lo que pensamos al principio, aunque esto sólo lo ves cuando empiezas a envejecer. Entonces es posible que te hagas más consciente de tus limitaciones y no le des tanta importancia si algo te sale mal.
Las cosas van a mejor pero con sus altibajos y sobretodo, con sus enemigos. Y creo que ahora es una época de un bajón en la ilusión de mejorar, lo veo en mí y lo veo a mi alrededor, por culpa de... bueno la culpa está en todas partes, sólo que a algunos nos dan rabia algunas cosas y a otros les parece mal otras y sobretodo, no miramos demasiado hacia dentro. Una vez tenía un jefe que me caía mal hasta que un día me dijo "Pablo, a todos nos gustan más o menos las mismas cosas". Entonces me hizo pensar y consiguió lo que quería, que tuviera un poco de más confianza con él, porque la confianza es la base más importante del trabajo en equipo. Yo no sabía ceder en mi forma de ver las cosas y no quería comprender algunos comportamientos que simplemente no me gustaban. No es que desde ese día me guste la prepotencia y la estupidez pero me doy cuenta de que todos somos humanos.
También, hablar con personas mayores y con niños es muy educativo y nos ayuda a conocernos a nosotros mismos. De todas maneras, si alguien te dice alguna vez que eres un viejo, respóndele: "Yo no soy viejo, lo que ocurre es que he nacido antes que tú".
La próxima entrada irá sobre la configuración de jack pero me está llevando mucho tiempo. Siento ser tan repetitivo y escribir tan poco últimamente de las cosas que importan al que empieza con la música en Linux. No es un camino de rosas pero hay información disponible para empezar al menos.
Eso sí, cada uno/a debe hacer lo que crea mejor y usar las herramientas que mejor le parezcan. Yo aquí intento ayudar en el lado linuxero.
Si encuentro alguien con un Windows me dará corte pedirle que me deje trastear con jack2 pero esta es una prueba que tengo pendiente hacer:
Lanzar un secuenciador midi en un ordenador con linux (A), transmitir el midi a través de una red cableada local a un ordenador con Windows XP (B) en el que tenemos un sampler o un instrumento virtual, de forma que el secuenciador del ordenador A lo haga sonar y, finalmente, transmitir el audio de salida del sampler de vuelta por el cable de red al ordenador A, en el cual está conectada la tarjeta de audio buena por la que suena el sampler sin latencia aparente.
Sé que se puede hacer y estoy deseando probarlo. A ver si alguien se adelanta y nos cuenta algo, porque por aquí estoy sin ventanas.
Saludos y que lo paséis bien estos días.
Ah, gracias a Luis Garrido por su post en hispasonic sobre los kernels, los cajeros y los clientes que están en la cola del supermercado. Por fin lo he entendido, creo.
1. Pensar que el modo realtime de jack y el kernel realtime están relacionados.
2. Elegir un valor de cuadros de periodo excesivamente bajo.
3. Volverse loco con el valor de periodos por buffer.
4. Echarle las culpas de todo, especialmente cuando tratamos de tener audio a través de jack en programas no jack-friendly.
5. Elegir una configuración muy exigente para después lanzar programas a los que no haces ningún favor con estas exigencias, poniendo velas al diablo en lugar de actuar con prudencia.
A mayor latencia mejor respuesta gráfica, entre otras cosas.
Muchas cosas de la vida son similares a la termodinámica: Todo cuesta energía y todo tiene su sitio y su momento y hay que intentar ver las cosas en la escala espacio-temporal adecuada. Por eso muchas veces intentas buscar algo y no lo encuentras. La causa puede ser una de dos, o bien no aportas la suficiente "energía que cuesta" (en forma de trabajo) o bien estás violando la segunda ley, deseando imposibles.
Lo malo es que la frontera entre las dos situaciones es difícil de observar desde dentro de uno mismo y en general es más estrecha y estricta de lo que pensamos al principio, aunque esto sólo lo ves cuando empiezas a envejecer. Entonces es posible que te hagas más consciente de tus limitaciones y no le des tanta importancia si algo te sale mal.
Las cosas van a mejor pero con sus altibajos y sobretodo, con sus enemigos. Y creo que ahora es una época de un bajón en la ilusión de mejorar, lo veo en mí y lo veo a mi alrededor, por culpa de... bueno la culpa está en todas partes, sólo que a algunos nos dan rabia algunas cosas y a otros les parece mal otras y sobretodo, no miramos demasiado hacia dentro. Una vez tenía un jefe que me caía mal hasta que un día me dijo "Pablo, a todos nos gustan más o menos las mismas cosas". Entonces me hizo pensar y consiguió lo que quería, que tuviera un poco de más confianza con él, porque la confianza es la base más importante del trabajo en equipo. Yo no sabía ceder en mi forma de ver las cosas y no quería comprender algunos comportamientos que simplemente no me gustaban. No es que desde ese día me guste la prepotencia y la estupidez pero me doy cuenta de que todos somos humanos.
También, hablar con personas mayores y con niños es muy educativo y nos ayuda a conocernos a nosotros mismos. De todas maneras, si alguien te dice alguna vez que eres un viejo, respóndele: "Yo no soy viejo, lo que ocurre es que he nacido antes que tú".
La próxima entrada irá sobre la configuración de jack pero me está llevando mucho tiempo. Siento ser tan repetitivo y escribir tan poco últimamente de las cosas que importan al que empieza con la música en Linux. No es un camino de rosas pero hay información disponible para empezar al menos.
Eso sí, cada uno/a debe hacer lo que crea mejor y usar las herramientas que mejor le parezcan. Yo aquí intento ayudar en el lado linuxero.
Si encuentro alguien con un Windows me dará corte pedirle que me deje trastear con jack2 pero esta es una prueba que tengo pendiente hacer:
Lanzar un secuenciador midi en un ordenador con linux (A), transmitir el midi a través de una red cableada local a un ordenador con Windows XP (B) en el que tenemos un sampler o un instrumento virtual, de forma que el secuenciador del ordenador A lo haga sonar y, finalmente, transmitir el audio de salida del sampler de vuelta por el cable de red al ordenador A, en el cual está conectada la tarjeta de audio buena por la que suena el sampler sin latencia aparente.
Sé que se puede hacer y estoy deseando probarlo. A ver si alguien se adelanta y nos cuenta algo, porque por aquí estoy sin ventanas.
Saludos y que lo paséis bien estos días.
Ah, gracias a Luis Garrido por su post en hispasonic sobre los kernels, los cajeros y los clientes que están en la cola del supermercado. Por fin lo he entendido, creo.
domingo, 24 de octubre de 2010
GNUGitarINUX. Instrucciones básicas.
He regalado un Live CD de GNUGuitarINUX v0.04 a un amigo guitarrista interesado en Linux pero usuario de Windows a la hora de hacer música. Estas son las instrucciones que he escrito para él y para todo guitarrista que quiera tener su primer contacto con Linux y algunas de sus aplicaciones, especialmente rackarrack y guitarix, a través de esta distribución. Si algo de esto te suena a chino no te preocupes, pasa por alto lo que no entiendas y sigue leyendo.
¿Qué es GNUGuitarINUX?
Es un Live CD basado en Linux 2.6.31 realtime y PAE, con un entorno gráfico de escritorio ligero (fluxbox) y unas pocas aplicaciones orientadas a guitarristas, con la idea de ser usado como una caja de efectos para guitarra aunque puede hacer más cosas.
Un Live CD se puede ejecutar desde el lector de CDROM del ordenador sin que afecte para nada al disco duro y a los sistemas operativos instalados en él.
Esta distro la ha preparado todoesverso y la anunció en este post, donde también da unas instrucciones básicas de uso y más explicaciones.
Lista de aplicaciones
(Pestaña Audio)
Jack Control. Ver abajo
Volumen. Ver abajo.
JACK EQ. Un ecualizador . http://jackeq.sourceforge.net/
JACK Capture. Captura a un archivo de audio lo que escuchas por los altavoces.
Sooperlooper. Un super-looper. http://www.essej.net/sooperlooper/
Hydrogen. Una caja de ritmos. http://www.hydrogen-music.org/
Audacity. Un editor de audio. http://audacity.sourceforge.net/
Aqualung. Un reproductor de audio. http://aqualung.factorial.hu/
(Pestaña GNUGuitarINUX)
Rackarrack. Una rack de efectos virtual para guitarra. http://rakarrack.sourceforge.net/
Guitarix. Un ampli de guitarra virtual para sonidos rock, blues, metal... http://guitarix.sourceforge.net/
Tuxguitar. Un editor de notación en tablatura para guitarra. http://tuxguitar.herac.com.ar/
Jack Rack. Un sencillo host de plugins LADSPA. http://jack-rack.sourceforge.net/
(Pestaña Extras)
PCmanFM. Un gestor de archivos ligero.
Midori. Un navegador web ligero.
Consola. Terminal de línea de comandos.
X Windows Snapshot.
Xclipboard. Para tomar notas.
Xkill, Para matar procesos gráficos (ventanas colgadas).
Xrefresh
Xvidtune
Htop. Monitorización de procesos. http://htop.sourceforge.net/index.php?page=main
Fluxbox es un entorno ligero de escritorio. http://www.fluxbox.org/
El sistema operativo y las aplicaciones que contiene este CD son software libre, lo que significa que pueden ser estudiadas, modificadas y redistribuidas libremente. Ver http://es.wikipedia.org/wiki/Software_libre
Para más información ver http://gnuguitarinux.sourceforge.net/
¿Qué es Jack Control?
Jack Control o qjackctl (http://qjackctl.sourceforge.net/) es una aplicación gráfica para configurar y controlar el servidor de audio (o demonio) jackd. JACK (http://jackaudio.org) es un acrónimo recursivo que significa "Jack Audio Connection Kit". El demonio de JACK, jackd, es un sistema de audio orientado a la producción profesional que permite latencia baja y previsible en la interacción entre las aplicaciones jackficadas y la tarjeta de audio. Además permite conectar los puertos de audio (y MIDI) de las aplicaciones y de la tarjeta de audio de una forma superflexible.
Jack utiliza el driver alsa (para las tarjetas PCI, PCmcia y USB) y el driver firewire (para las tarjetas firewire).
¿Qué es ALSA?
ALSA, Advanced Linux Sound Architecture (http://www.alsa-project.org/main/index.php/Main_Page), es un proyecto que, entre otras cosas, provee una serie de drivers que hacen funcionar las tarjetas de audio PCI, PCmcia y USB en Linux. Estos drivers están integrados en el kernel como módulos. El módulo correcto para cada tarjeta se cargará automáticamente al arrancar el ordenador si la tarjeta está soportada. No todas las tarjetas están soportadas. Ver http://www.alsa-project.org/main/index.php/Main_Page
¿Qué es FFADO?
FFADO, Free Firewire Audio Drivers (http://www.ffado.org) es el proyecto que hace posible que las tarjetas de audio Firewire puedan funcionar en Linux. No todas las tarjetas están soportadas. Para comprobar la situación del soporte de las tarjetas de audio firewire disponibles en el mercado, ver http://www.ffado.org/?q=devicesupport/list
Preparar el Live CD
Descargar desde http://sourceforge.net/projects/gnuguitarinux/files/
Quemar a CD con tu herramienta favorita.
Usar el Live CD
Apuntar estos pasos:
La BIOS debe de estar configurada para que arranque primero desde el lector de CD.
Arrancar el ordenador con el CD insertado.
En la primera pausa no hacer nada y dejar que siga con la opción por defecto.
Después de un rato, si todo va bien, se verá el fondo de escritorio, con una foto de una guitarra.
Pulsar con botón derecho sobre el escritorio para que aparezca el menú principal de fluxbox.
Lanzar con botón izquierdo: Extras -> Consolas -> Bash
Esto abrirá una terminal, donde introducimos lo siguiente:
setxkbmap es
Y pulsamos ENTER. Esto es para que el teclado responda al layout español.
Ahora, también en el menú Extras, lanzamos Internet (navegador Midori).
Para acceder a las ventanas minimizadas llevar el ratón a la parte inferior de la pantalla.
Si tienes conexión a Internet, no hace falta apuntar más. Puedes seguir estas instrucciones
desde tu buzón de correo o desde semicorchux.
**** Un rato más tarde, ya desde GNUguitarINUX y después de haber lanzado el navegador *****
Lanzar Audio -> Volumen
Es una herramienta que da acceso al mezclador interno de la tarjeta de audio, si existe. Comprobar que los canales de salida y de captura están activados y a un nivel suficiente.
Lanzar Audio -> Jack Control
Si inicia, genial. (Si no, ver más abajo) Pulsar el botón Setup. En el campo Interfaz, flecha derecha, comprobar en el menú desplegable que hemos elegido la tarjeta de audio correcta, en caso de que tengamos más de una. En este caso, asegurarnos que es la tarjeta a la que hemos conectado la guitarra y los altavoces.
Pulsar el botón Conexiones. Aquí se pueden establecer las conexiones virtuales entre clientes de jack. System representa la tarjeta de audio. Normalmente el primer puerto de captura se corresponde con la primera entrada analógica y los dos primeros de reproducción corresponden a la salida estéreo frontal, o a las dos primeras salidas analógicas en el caso de una tarjeta profesional.
A partir de aquí podemos seguir experimentado con las aplicaciones. No te pierdas rackarrack.
Las conexiones físicas y virtuales típicas pueden ser:
Físicamente, de la guitarra a la primera entrada analógica de la tarjeta y de las dos primeras salidas analógicas de la tarjeta al equipo de sonido.
Por software, del system:capture_1 a una entrada de rakarrack y de las salidas de rakarrack a los system:playbacks_1 y _2.
Si hay problemas...
Si no llegas al entorno gráfico, vuélvelo a intentar. Si vuelve a fallar... sigue las sugerencias de José GDF en su comentario. De todas formas, hay un montón de distribuciones Linux con mejor soporte para este tipo de problemas, en las cuales también podrás instalar rakarrack y guitarix.
Si jack no arranca, da la información contenida en la ventana Mensajes y además, la salida de este comando de consola, para ver qué tarjetas de audio tienes conectadas:
aplay -l (ele minúscula)
Para copiar / pegar desde terminal a terminal, usa el truco del ratón-grúa: Seleccionar de la forma normal (arrastrar con botón izquierdo) y soltar el texto con el botón central. (No usar Control + C)
Créditos y agradecimientos
Gracias a José GDF por recordarnos que GNUGuitarINUX existe.
GNUGuitarINUX es un proyecto de todoesverso. Su post original en Taringa!
http://taringa.net/posts/linux/5374468/GNUGuitarINUX---Live-CD-pedalera-de-guitarra.html
Y su actualización a la versión de referencia de este manual, v0.04:
http://www.taringa.net/posts/linux/6131905/GNUGuitarINUX-v0_04.html
AVLinux pone el kernel. Yo diría que es el hermano mayor de GNUGuitarINUX. Tiene un Live DVD instalable a disco duro con un escritorio más manejable y mucho más software orientado al estudio profesional. No todo el contenido de AVLinux es software libre y el DVD no es libremente distribuible. Más información y descargas en:
http://www.bandshed.net/AVLinux.html
Por supuesto, todos los proyectos mencionados tienen el crédito y los agradecimientos.
¿Qué es GNUGuitarINUX?
Es un Live CD basado en Linux 2.6.31 realtime y PAE, con un entorno gráfico de escritorio ligero (fluxbox) y unas pocas aplicaciones orientadas a guitarristas, con la idea de ser usado como una caja de efectos para guitarra aunque puede hacer más cosas.
Un Live CD se puede ejecutar desde el lector de CDROM del ordenador sin que afecte para nada al disco duro y a los sistemas operativos instalados en él.
Esta distro la ha preparado todoesverso y la anunció en este post, donde también da unas instrucciones básicas de uso y más explicaciones.
Lista de aplicaciones
(Pestaña Audio)
Jack Control. Ver abajo
Volumen. Ver abajo.
JACK EQ. Un ecualizador . http://jackeq.sourceforge.net/
JACK Capture. Captura a un archivo de audio lo que escuchas por los altavoces.
Sooperlooper. Un super-looper. http://www.essej.net/sooperlooper/
Hydrogen. Una caja de ritmos. http://www.hydrogen-music.org/
Audacity. Un editor de audio. http://audacity.sourceforge.net/
Aqualung. Un reproductor de audio. http://aqualung.factorial.hu/
(Pestaña GNUGuitarINUX)
Rackarrack. Una rack de efectos virtual para guitarra. http://rakarrack.sourceforge.net/
Guitarix. Un ampli de guitarra virtual para sonidos rock, blues, metal... http://guitarix.sourceforge.net/
Tuxguitar. Un editor de notación en tablatura para guitarra. http://tuxguitar.herac.com.ar/
Jack Rack. Un sencillo host de plugins LADSPA. http://jack-rack.sourceforge.net/
(Pestaña Extras)
PCmanFM. Un gestor de archivos ligero.
Midori. Un navegador web ligero.
Consola. Terminal de línea de comandos.
X Windows Snapshot.
Xclipboard. Para tomar notas.
Xkill, Para matar procesos gráficos (ventanas colgadas).
Xrefresh
Xvidtune
Htop. Monitorización de procesos. http://htop.sourceforge.net/index.php?page=main
Fluxbox es un entorno ligero de escritorio. http://www.fluxbox.org/
El sistema operativo y las aplicaciones que contiene este CD son software libre, lo que significa que pueden ser estudiadas, modificadas y redistribuidas libremente. Ver http://es.wikipedia.org/wiki/Software_libre
Para más información ver http://gnuguitarinux.sourceforge.net/
¿Qué es Jack Control?
Jack Control o qjackctl (http://qjackctl.sourceforge.net/) es una aplicación gráfica para configurar y controlar el servidor de audio (o demonio) jackd. JACK (http://jackaudio.org) es un acrónimo recursivo que significa "Jack Audio Connection Kit". El demonio de JACK, jackd, es un sistema de audio orientado a la producción profesional que permite latencia baja y previsible en la interacción entre las aplicaciones jackficadas y la tarjeta de audio. Además permite conectar los puertos de audio (y MIDI) de las aplicaciones y de la tarjeta de audio de una forma superflexible.
Jack utiliza el driver alsa (para las tarjetas PCI, PCmcia y USB) y el driver firewire (para las tarjetas firewire).
¿Qué es ALSA?
ALSA, Advanced Linux Sound Architecture (http://www.alsa-project.org/main/index.php/Main_Page), es un proyecto que, entre otras cosas, provee una serie de drivers que hacen funcionar las tarjetas de audio PCI, PCmcia y USB en Linux. Estos drivers están integrados en el kernel como módulos. El módulo correcto para cada tarjeta se cargará automáticamente al arrancar el ordenador si la tarjeta está soportada. No todas las tarjetas están soportadas. Ver http://www.alsa-project.org/main/index.php/Main_Page
¿Qué es FFADO?
FFADO, Free Firewire Audio Drivers (http://www.ffado.org) es el proyecto que hace posible que las tarjetas de audio Firewire puedan funcionar en Linux. No todas las tarjetas están soportadas. Para comprobar la situación del soporte de las tarjetas de audio firewire disponibles en el mercado, ver http://www.ffado.org/?q=devicesupport/list
Preparar el Live CD
Descargar desde http://sourceforge.net/projects/gnuguitarinux/files/
Quemar a CD con tu herramienta favorita.
Usar el Live CD
Apuntar estos pasos:
La BIOS debe de estar configurada para que arranque primero desde el lector de CD.
Arrancar el ordenador con el CD insertado.
En la primera pausa no hacer nada y dejar que siga con la opción por defecto.
Después de un rato, si todo va bien, se verá el fondo de escritorio, con una foto de una guitarra.
Pulsar con botón derecho sobre el escritorio para que aparezca el menú principal de fluxbox.
Lanzar con botón izquierdo: Extras -> Consolas -> Bash
Esto abrirá una terminal, donde introducimos lo siguiente:
setxkbmap es
Y pulsamos ENTER. Esto es para que el teclado responda al layout español.
Ahora, también en el menú Extras, lanzamos Internet (navegador Midori).
Para acceder a las ventanas minimizadas llevar el ratón a la parte inferior de la pantalla.
Si tienes conexión a Internet, no hace falta apuntar más. Puedes seguir estas instrucciones
desde tu buzón de correo o desde semicorchux.
**** Un rato más tarde, ya desde GNUguitarINUX y después de haber lanzado el navegador *****
Lanzar Audio -> Volumen
Es una herramienta que da acceso al mezclador interno de la tarjeta de audio, si existe. Comprobar que los canales de salida y de captura están activados y a un nivel suficiente.
Lanzar Audio -> Jack Control
Si inicia, genial. (Si no, ver más abajo) Pulsar el botón Setup. En el campo Interfaz, flecha derecha, comprobar en el menú desplegable que hemos elegido la tarjeta de audio correcta, en caso de que tengamos más de una. En este caso, asegurarnos que es la tarjeta a la que hemos conectado la guitarra y los altavoces.
Pulsar el botón Conexiones. Aquí se pueden establecer las conexiones virtuales entre clientes de jack. System representa la tarjeta de audio. Normalmente el primer puerto de captura se corresponde con la primera entrada analógica y los dos primeros de reproducción corresponden a la salida estéreo frontal, o a las dos primeras salidas analógicas en el caso de una tarjeta profesional.
A partir de aquí podemos seguir experimentado con las aplicaciones. No te pierdas rackarrack.
Las conexiones físicas y virtuales típicas pueden ser:
Físicamente, de la guitarra a la primera entrada analógica de la tarjeta y de las dos primeras salidas analógicas de la tarjeta al equipo de sonido.
Por software, del system:capture_1 a una entrada de rakarrack y de las salidas de rakarrack a los system:playbacks_1 y _2.
Si hay problemas...
Si no llegas al entorno gráfico, vuélvelo a intentar. Si vuelve a fallar... sigue las sugerencias de José GDF en su comentario. De todas formas, hay un montón de distribuciones Linux con mejor soporte para este tipo de problemas, en las cuales también podrás instalar rakarrack y guitarix.
Si jack no arranca, da la información contenida en la ventana Mensajes y además, la salida de este comando de consola, para ver qué tarjetas de audio tienes conectadas:
aplay -l (ele minúscula)
Para copiar / pegar desde terminal a terminal, usa el truco del ratón-grúa: Seleccionar de la forma normal (arrastrar con botón izquierdo) y soltar el texto con el botón central. (No usar Control + C)
Créditos y agradecimientos
Gracias a José GDF por recordarnos que GNUGuitarINUX existe.
GNUGuitarINUX es un proyecto de todoesverso. Su post original en Taringa!
http://taringa.net/posts/linux/5374468/GNUGuitarINUX---Live-CD-pedalera-de-guitarra.html
Y su actualización a la versión de referencia de este manual, v0.04:
http://www.taringa.net/posts/linux/6131905/GNUGuitarINUX-v0_04.html
AVLinux pone el kernel. Yo diría que es el hermano mayor de GNUGuitarINUX. Tiene un Live DVD instalable a disco duro con un escritorio más manejable y mucho más software orientado al estudio profesional. No todo el contenido de AVLinux es software libre y el DVD no es libremente distribuible. Más información y descargas en:
http://www.bandshed.net/AVLinux.html
Por supuesto, todos los proyectos mencionados tienen el crédito y los agradecimientos.
lunes, 27 de septiembre de 2010
Cómo lanzar aplicaciones sueltas en el idioma original
El cual es el inglés en la gran mayoría de los casos.
Esto es útil para buscar ayuda googleando, entender mejor los manuales de referencia o simplemente porque nos da la gana. Sin embargo, no queremos que afecte al idioma del resto de programas ni al del entorno de escritorio.
Para ello podemos usar el prefijo:
LANG=en.UTF-8
Al menos sirve en muchos casos.
Por ejemplo:
LANG=en.UTF-8 qjackctl
o
LANG=en.UTF-8 ardour2
Esto es útil para buscar ayuda googleando, entender mejor los manuales de referencia o simplemente porque nos da la gana. Sin embargo, no queremos que afecte al idioma del resto de programas ni al del entorno de escritorio.
Para ello podemos usar el prefijo:
LANG=en.UTF-8
Al menos sirve en muchos casos.
Por ejemplo:
LANG=en.UTF-8 qjackctl
o
LANG=en.UTF-8 ardour2
sábado, 25 de septiembre de 2010
Desvaríos
Mucha gente se rinde con Linux porque recibe muchos xruns. La verdad es los xruns son una mierda. Lo bueno es que al menos jack lo reconoce honestamente. Eso te da pié a investigar e intentar mejorar el "sistema". Nadie lo sabe todo en el mundo GNU/Linux por lo que a veces hay que dar varias vueltas hasta que das con el truco o equivocación que arregla el problema o que estabas cometiendo sin darte cuenta, respectivamente. Todo es así en la vida real también. Nada es perfecto, muy lejos de ello.
Mirar qué video de xiph.org, A_Digital_Media_Primer_For_Geeks. Como comenta alguien, la lección de universidad a la que te hubiera gustado asistir. He empezado a traducirlo. Se explican las bases del audio y del video digital. Necesito ayuda, no hace falta saber mucho inglés, pero que suene natural en castellano. Está muy bien explicado pero el lenguaje es a veces bastante informal. Me podéis escribir a pablo-fbus en gmmil punto com. El nombre del servidor está mal escrito y en mi nombre hay un punto en lugar de un guión. Lo pongo así para protegerme de los robots malos.
Me cuesta escribir, creo que escribo entradas demasiado largas e innecesariamente complicadas. De hecho, muchas de las cosas que he explicado se pueden hacer de forma bastante más sencilla ahora mismo. Voy a empezar a ser más breve y menos estricto. Este el segundo post que no va a ir al índice general de entradas. Voy a copiar a José, que es el maestro en esto de no complicarse. Me encanta su blog. Lees el insulto del título y te asustas un poco, pero es muy majo. Sin embargo, pienso que hay que cuidar el vocabulario.
Me da pereza volver atrás para corregir cosas o simplificarlas radicalmente pero es lo que debería hacer de una vez. En realidad es todo bastante más fácil de lo que parece, tengo que corregir todo.
Los linuxeros somos unos incomprendidos, tristemente, pero qué vas a hacer. Todo el mundo se equivoca, que por cierto es lo que más me gusta de GNU/Linux, que te das cuenta que la vida virtual es tan real como la vida de cada día, con una mayoría de gente maja y normal.
Todo el mundo se equivoca. La mayoría sigue el camino que cree más fácil. Yo prefiero quedarme con el recuerdo del éxito y olvidarme de los fracasos pero me cuesta mucho estar seguro del todo de algo y siempre tengo que volver atrás, a corregir cosas y así no acabo nunca.
A todos y sobretodo a Igny, ¡Gracias por comentar! :)
Seguiré escribiendo, pero con menos frecuencia.
Mirar qué video de xiph.org, A_Digital_Media_Primer_For_Geeks. Como comenta alguien, la lección de universidad a la que te hubiera gustado asistir. He empezado a traducirlo. Se explican las bases del audio y del video digital. Necesito ayuda, no hace falta saber mucho inglés, pero que suene natural en castellano. Está muy bien explicado pero el lenguaje es a veces bastante informal. Me podéis escribir a pablo-fbus en gmmil punto com. El nombre del servidor está mal escrito y en mi nombre hay un punto en lugar de un guión. Lo pongo así para protegerme de los robots malos.
Me cuesta escribir, creo que escribo entradas demasiado largas e innecesariamente complicadas. De hecho, muchas de las cosas que he explicado se pueden hacer de forma bastante más sencilla ahora mismo. Voy a empezar a ser más breve y menos estricto. Este el segundo post que no va a ir al índice general de entradas. Voy a copiar a José, que es el maestro en esto de no complicarse. Me encanta su blog. Lees el insulto del título y te asustas un poco, pero es muy majo. Sin embargo, pienso que hay que cuidar el vocabulario.
Me da pereza volver atrás para corregir cosas o simplificarlas radicalmente pero es lo que debería hacer de una vez. En realidad es todo bastante más fácil de lo que parece, tengo que corregir todo.
Los linuxeros somos unos incomprendidos, tristemente, pero qué vas a hacer. Todo el mundo se equivoca, que por cierto es lo que más me gusta de GNU/Linux, que te das cuenta que la vida virtual es tan real como la vida de cada día, con una mayoría de gente maja y normal.
Todo el mundo se equivoca. La mayoría sigue el camino que cree más fácil. Yo prefiero quedarme con el recuerdo del éxito y olvidarme de los fracasos pero me cuesta mucho estar seguro del todo de algo y siempre tengo que volver atrás, a corregir cosas y así no acabo nunca.
A todos y sobretodo a Igny, ¡Gracias por comentar! :)
Seguiré escribiendo, pero con menos frecuencia.
domingo, 22 de agosto de 2010
Scripts en Jack Control
Aquí tenemos el índice general de entradas de semicorchux
#########################
Notas de revisiones:
Revisión 0: 22 agosto 2010. Publicado.
Revisión 1: 16 octubre 2010. Corregido error en línea marcada con Rev. 1. Añadida advertencia respecto a /etc/sudoers
#########################
Qjackctl tiene una opción muy útil para ejecutar scripts en 4 momentos diferentes alrededor del servidor de audio jack; antes de iniciarlo, después de iniciarlo, antes de detenerlo y después de detenerlo.

Veis que he preparado 4 scripts. Vamos a verlos, pero antes recomiendo lo siguiente:
Evitar la resurrección de pulseaudio
En distribuciones más especializadas, pulseaudio no es el servidor por defecto y algunos recomiendan desinstalarlo del todo en ubuntu. Otros consiguen que aplicaciones no jackificadas que suenan a través de pulseaudio se puedan conectar con clientes de jack por medio del plugin pulse-jack. Yo actualmente prefiero que todo vaya a través de jack cuando estoy con jack y a través de pulseaudio cuando no estoy con jack.
En ubuntu, al menos en karmic, cuando se lanza qjackctl (Jack Control) pulseaudio se suspende (pasuspender). Esto funciona bien en muchos casos pero no es lo ideal y además la coexistencia de pulseaudio y jack es aún problemática en ordenadores con poca memoria RAM. Creo que es mejor matarlo y limpiar algo de basura, como vemos más adelante. El caso es que si matamos pulseaudio, éste se relanza automáticamente a los pocos segundos si no lo impedimos.
Veamos cómo evitar la resurrección de pulseaudio.
En una terminal de usuario en la localización por defecto:
Rev. 1
$ gedit .pulse/client.conf
Copiamos las líneas:
#pulseaudio, no resucites:
autospawn = no
Y guardamos el archivo.
Así podremos matar pulseaudio sin remordimientos y para toda la sesión, sin necesidad de desinstalar nada.
Comprobar que tenemos una versión reciente de patchage
Hacer las conexiones a través de Jack Control puede llegar a aburrir bastante. Mucho mejor un patchbay cómodo e intuitivo como es Patchage. Las versiones en karmic y en lucid están anticuadas. Recomiendo la versión 0.4.4 que se puede conseguir tanto en lucid como en karmic desde el repositorio ppa:philip5/extra. De paso, (re)instalamos a2jmidid, gracias al cual se pueden hacer conexiones entre puertos alsa midi y jack midi, incluido el hardware midi (opción -e).
$ sudo add-apt-repository ppa:philip5/extra
$ sudo apt-get update
$ sudo apt-get install patchage a2jmidid
En esta entrada hablamos de los PPA's y del repositorio de Philip Johnson, tres hurras por él.
Permitir la selección de la frecuencia de la cpu sin necesidad de contraseña
Resulta que si ponemos la frecuencia de la cpu a "ondemand" (comportamiento por defecto) ésta cambia repentinamente según la carga que tenga el ordenador. Esto es motivo de xruns y hay que evitarlo. Cuando trabajamos con jackd, la recomendación es ponerla a "performance" o al menos fijarla en un valor más bajo pero evitar que salte.
Se puede hacer de varias maneras, incluido añadir un applet en el panel de gnome, que nos exige contraseña.
Lo incluyo como propuesta en el script de "antes de iniciar jackd" pero para ello hay que hacer que el sistema nos permita lanzar el comando "sudo cpufreq-set" sin contraseña. (Ojo con esto. Es peligroso. Ver los comentarios de desesperado. Si no estás seguro, mejor déjalo y ya usarás el applet de gnome para cambiar el modo de frecuencia de la CPU).
Para ello, en una terminal lanzamos:
$ sudo visudo
Esto edita el archivo /etc/sudoers. El editor es vi y no se puede editar de otra forma, que yo sepa. Si no estamos familiarizados con vi, lo mejor es darle a la tecla i, y se comportará más o menos como lo que esperamos. Nos movemos con los cursores y al final del archivo escribimos la siguiente línea, cambiando "usuario" por vuestro nombre de usuario:
usuario ALL=NOPASSWD: /usr/bin/cpufreq-set
Ahora damos a escape y guardamos con:
:wq
Los scripts
Son archivos de texto sencillo que coloco en el directorio /home/usuario/bin. Por supuesto, después de crearlos y guardarlos, hay que darles permiso de ejecución. Lo podemos hacer de forma gráfica, con botón derecho, propiedades, pestaña permisos.
Estos son:
/home/pablo/bin/antes-de-iniciar-jackd
#!/bin/bash
#Obligo mis dos cpus a modo performance
#Tu caso puede ser diferente. Mira "cat /proc/cpuinfo |grep processor"
#para ver cuantas CPU's tienes o mejor, mira las posibilidades que
#te da el applet de monitor de frecuencia de CPU
#Borrar estas líneas si no modificamos el archivo /etc/sudoers
sudo cpufreq-set -c 0 -g performance
sudo cpufreq-set -c 1 -g performance
#mato pulseaudio y espero un segundo
pulseaudio -k
sleep 1
#limpio /dev/shm
rm -f /dev/shm/pulse*
Lo de limpiar /dev/shm de la porquería que haya podido dejar pulseaudio es muy importante para ordenadores de poca memoria RAM pues a veces se dan problemas por causa de este bug:
https://bugs.launchpad.net/ubuntu/+source/jack-audio-connection-kit/+bug/491329
/home/pablo/bin/despues-de-iniciar-jackd
#!/bin/bash
#Lanzo a2jmidid con la opción -e para poder conectar mi teclado midi a clientes jack midi
a2jmidid -e &
sleep 1
#Lanzo patchage para hacer las conexiones entre los puertos de clientes de jack
patchage &
/home/pablo/bin/antes-de-detener-jackd
#!/bin/bash
# mato todos los clientes de jack. Ampliar/Modificar lista en caso necesario.
killall mplayer gmplayer vlc amarok ardour-2.8.11 hydrogen qsynth stretchplayer tuneit fst.exe.so guitarix rakarrack patchage a2jmidid
De esta forma, con el botón "Detener" de Jack Control se matan todos los clientes de jack. Al menos, esta es la idea. Ampliar la lista según necesidades. Para ver los nombres de los procesos de los clientes de jack, podemos usar top o htop. No pasa nada porque sobren entradas.
/home/pablo/bin/despues-de-detener-jackd
#!/bin/bash
# mato jackd
killall jackd
sleep 1
# vuelvo a poner las dos cpus a "ondemand"
#Borrar estas líneas si no modificamos /etc/sudoers
sudo cpufreq-set -c 0 -g ondemand
sudo cpufreq-set -c 1 -g ondemand
sleep 1
# arranco pulseaudio
pulseaudio --start
A tener en cuenta:
1) Si en el setup de qjackctl, pestaña "Otras", marcamos "Iniciar el sevidor JACK al cargar qjackctl", nos ahorramos un click.
2) En este caso, hay que evitar a toda costa que si alsa ve más de un interface de audio pueda hacer que jack se equivoque de tarjeta. Para esto, la mejor forma que conozco es empleando la identificación alfanumérica de la tarjeta de audio "buena". Es decir, en lugar de seleccionar el interface hw:0, por ejemplo, mejor escribir en el campo interface "hw:TARJETA" (como se llame, entre corchetes, según la salida de "cat /proc/asound/cards") como propusimos en esta entrada.
Créditos y para saber más
http://www.rncbc.org/drupal/
ubuntustudio forum
linuxmusicians.org
#########################
Notas de revisiones:
Revisión 0: 22 agosto 2010. Publicado.
Revisión 1: 16 octubre 2010. Corregido error en línea marcada con Rev. 1. Añadida advertencia respecto a /etc/sudoers
#########################
Qjackctl tiene una opción muy útil para ejecutar scripts en 4 momentos diferentes alrededor del servidor de audio jack; antes de iniciarlo, después de iniciarlo, antes de detenerlo y después de detenerlo.

Veis que he preparado 4 scripts. Vamos a verlos, pero antes recomiendo lo siguiente:
Evitar la resurrección de pulseaudio
En distribuciones más especializadas, pulseaudio no es el servidor por defecto y algunos recomiendan desinstalarlo del todo en ubuntu. Otros consiguen que aplicaciones no jackificadas que suenan a través de pulseaudio se puedan conectar con clientes de jack por medio del plugin pulse-jack. Yo actualmente prefiero que todo vaya a través de jack cuando estoy con jack y a través de pulseaudio cuando no estoy con jack.
En ubuntu, al menos en karmic, cuando se lanza qjackctl (Jack Control) pulseaudio se suspende (pasuspender). Esto funciona bien en muchos casos pero no es lo ideal y además la coexistencia de pulseaudio y jack es aún problemática en ordenadores con poca memoria RAM. Creo que es mejor matarlo y limpiar algo de basura, como vemos más adelante. El caso es que si matamos pulseaudio, éste se relanza automáticamente a los pocos segundos si no lo impedimos.
Veamos cómo evitar la resurrección de pulseaudio.
En una terminal de usuario en la localización por defecto:
Rev. 1
$ gedit .pulse/client.conf
Copiamos las líneas:
#pulseaudio, no resucites:
autospawn = no
Y guardamos el archivo.
Así podremos matar pulseaudio sin remordimientos y para toda la sesión, sin necesidad de desinstalar nada.
Comprobar que tenemos una versión reciente de patchage
Hacer las conexiones a través de Jack Control puede llegar a aburrir bastante. Mucho mejor un patchbay cómodo e intuitivo como es Patchage. Las versiones en karmic y en lucid están anticuadas. Recomiendo la versión 0.4.4 que se puede conseguir tanto en lucid como en karmic desde el repositorio ppa:philip5/extra. De paso, (re)instalamos a2jmidid, gracias al cual se pueden hacer conexiones entre puertos alsa midi y jack midi, incluido el hardware midi (opción -e).
$ sudo add-apt-repository ppa:philip5/extra
$ sudo apt-get update
$ sudo apt-get install patchage a2jmidid
En esta entrada hablamos de los PPA's y del repositorio de Philip Johnson, tres hurras por él.
Permitir la selección de la frecuencia de la cpu sin necesidad de contraseña
Resulta que si ponemos la frecuencia de la cpu a "ondemand" (comportamiento por defecto) ésta cambia repentinamente según la carga que tenga el ordenador. Esto es motivo de xruns y hay que evitarlo. Cuando trabajamos con jackd, la recomendación es ponerla a "performance" o al menos fijarla en un valor más bajo pero evitar que salte.
Se puede hacer de varias maneras, incluido añadir un applet en el panel de gnome, que nos exige contraseña.
Lo incluyo como propuesta en el script de "antes de iniciar jackd" pero para ello hay que hacer que el sistema nos permita lanzar el comando "sudo cpufreq-set" sin contraseña. (Ojo con esto. Es peligroso. Ver los comentarios de desesperado. Si no estás seguro, mejor déjalo y ya usarás el applet de gnome para cambiar el modo de frecuencia de la CPU).
Para ello, en una terminal lanzamos:
$ sudo visudo
Esto edita el archivo /etc/sudoers. El editor es vi y no se puede editar de otra forma, que yo sepa. Si no estamos familiarizados con vi, lo mejor es darle a la tecla i, y se comportará más o menos como lo que esperamos. Nos movemos con los cursores y al final del archivo escribimos la siguiente línea, cambiando "usuario" por vuestro nombre de usuario:
usuario ALL=NOPASSWD: /usr/bin/cpufreq-set
Ahora damos a escape y guardamos con:
:wq
Los scripts
Son archivos de texto sencillo que coloco en el directorio /home/usuario/bin. Por supuesto, después de crearlos y guardarlos, hay que darles permiso de ejecución. Lo podemos hacer de forma gráfica, con botón derecho, propiedades, pestaña permisos.
Estos son:
/home/pablo/bin/antes-de-iniciar-jackd
#!/bin/bash
#Obligo mis dos cpus a modo performance
#Tu caso puede ser diferente. Mira "cat /proc/cpuinfo |grep processor"
#para ver cuantas CPU's tienes o mejor, mira las posibilidades que
#te da el applet de monitor de frecuencia de CPU
#Borrar estas líneas si no modificamos el archivo /etc/sudoers
sudo cpufreq-set -c 0 -g performance
sudo cpufreq-set -c 1 -g performance
#mato pulseaudio y espero un segundo
pulseaudio -k
sleep 1
#limpio /dev/shm
rm -f /dev/shm/pulse*
Lo de limpiar /dev/shm de la porquería que haya podido dejar pulseaudio es muy importante para ordenadores de poca memoria RAM pues a veces se dan problemas por causa de este bug:
https://bugs.launchpad.net/ubuntu/+source/jack-audio-connection-kit/+bug/491329
/home/pablo/bin/despues-de-iniciar-jackd
#!/bin/bash
#Lanzo a2jmidid con la opción -e para poder conectar mi teclado midi a clientes jack midi
a2jmidid -e &
sleep 1
#Lanzo patchage para hacer las conexiones entre los puertos de clientes de jack
patchage &
/home/pablo/bin/antes-de-detener-jackd
#!/bin/bash
# mato todos los clientes de jack. Ampliar/Modificar lista en caso necesario.
killall mplayer gmplayer vlc amarok ardour-2.8.11 hydrogen qsynth stretchplayer tuneit fst.exe.so guitarix rakarrack patchage a2jmidid
De esta forma, con el botón "Detener" de Jack Control se matan todos los clientes de jack. Al menos, esta es la idea. Ampliar la lista según necesidades. Para ver los nombres de los procesos de los clientes de jack, podemos usar top o htop. No pasa nada porque sobren entradas.
/home/pablo/bin/despues-de-detener-jackd
#!/bin/bash
# mato jackd
killall jackd
sleep 1
# vuelvo a poner las dos cpus a "ondemand"
#Borrar estas líneas si no modificamos /etc/sudoers
sudo cpufreq-set -c 0 -g ondemand
sudo cpufreq-set -c 1 -g ondemand
sleep 1
# arranco pulseaudio
pulseaudio --start
A tener en cuenta:
1) Si en el setup de qjackctl, pestaña "Otras", marcamos "Iniciar el sevidor JACK al cargar qjackctl", nos ahorramos un click.
2) En este caso, hay que evitar a toda costa que si alsa ve más de un interface de audio pueda hacer que jack se equivoque de tarjeta. Para esto, la mejor forma que conozco es empleando la identificación alfanumérica de la tarjeta de audio "buena". Es decir, en lugar de seleccionar el interface hw:0, por ejemplo, mejor escribir en el campo interface "hw:TARJETA" (como se llame, entre corchetes, según la salida de "cat /proc/asound/cards") como propusimos en esta entrada.
Créditos y para saber más
http://www.rncbc.org/drupal/
ubuntustudio forum
linuxmusicians.org
jueves, 19 de agosto de 2010
OT: Cómo personalizar los iconos de los lanzadores en gnome (Dedicado a David y a Noa)
En este sencillo tutorial explico la forma de crear tus propios iconos infantiles para los lanzadores gráficos. Es completamente off-topic, ya perdonaréis. Lo he escrito pensando en mis sobrinos. Aunque no creo que lo lean en poco tiempo, aquí queda, para cuando sean un poco más mayores y, con esperanza, estudien GNU/Linux en clases de iniciación a la informática.
Éste lo usaba hasta hace poco para lanzar a2jmidid (no interesante para no músicos):
Mi super-icono de a2jmidid
Éste para poner la frecuencia de la/s CPU/s en "performance" (interesante para otra entrada)
Tux con una mano señalando arriba
Éste para que vuelva a ajustarse automáticamente según la carga de trabajo, "ondemand":
Tux con una mano en puño
Éste para matar todos los procesos relacionados con jack (también para otra entrada). Es lo que hago cuando no estoy inspirado (la mayoría de las veces) y pienso que mejor me dedico a otra cosa:
Tux decepcionado consigo mismo
Y éste para apagar el ordenador inmediatamente con un click , cuando "ya huele" y me decido a levantarme de la silla. Lo usaré como ejemplo hasta el final.
Tux tapándose la nariz
Si no los tenemos instalados, instalamos Tuxpaint (más los sellos) y GIMP. En la terminal:
$ sudo apt-get install tuxpaint tuxpaint-stamp-defaults gimp
En Tuxpaint seleccionamos un fondo. Yo he elegido el blanco. Ahora vamos a herramientas, sellos, y entre éstos buscamos el que nos guste. O varios a la vez. O algo más sofisticado. Y después pulsamos guardar.
Ahora lanzamos el gimp y abrimos imagen con 'Ctrl+O'. Ahora, con 'Ctrl+H' mostramos los archivos ocultos y buscamos (en nuestro home) ".tuxpaint/saved".
Elegimos la imagen y la abrimos. Después recortamos la parte visible con el bisturí de la caja de herramientas.

Si estamos de acuerdo con el recorte, pulsamos con el ratón en dentro de el mismo y si no, fuera para empezar de nuevo y ajustarlo mejor. Dentro de nuestro home creamos un directorio llamado "iconos". Y desde el menú "Archivo" guardamos una copia, seleccionando el tipo de archivo por extensión (abajo a la izquierda), por ejemplo, PNG en:
/home/usuario/iconos
Ahora, con botón derecho sobre el panel de gnome, añadimos un lanzador de aplicación personalizado y en el campo "comando" pego el texto:
sudo shutdown -h now
Pulsamos el icono y navegamos a /home/usuario/iconos para elegir el nuevo.
Si no funciona, probar con otro comando que no necesite privilegios de administrador. El truco para que funcione un lanzador con sudo está en el archivo /etc/sudoers pero eso no forma parte de este tutorial.
Éste lo usaba hasta hace poco para lanzar a2jmidid (no interesante para no músicos):
Mi super-icono de a2jmididÉste para poner la frecuencia de la/s CPU/s en "performance" (interesante para otra entrada)
Tux con una mano señalando arribaÉste para que vuelva a ajustarse automáticamente según la carga de trabajo, "ondemand":
Tux con una mano en puñoÉste para matar todos los procesos relacionados con jack (también para otra entrada). Es lo que hago cuando no estoy inspirado (la mayoría de las veces) y pienso que mejor me dedico a otra cosa:
Tux decepcionado consigo mismoY éste para apagar el ordenador inmediatamente con un click , cuando "ya huele" y me decido a levantarme de la silla. Lo usaré como ejemplo hasta el final.
Tux tapándose la narizSi no los tenemos instalados, instalamos Tuxpaint (más los sellos) y GIMP. En la terminal:
$ sudo apt-get install tuxpaint tuxpaint-stamp-defaults gimp
En Tuxpaint seleccionamos un fondo. Yo he elegido el blanco. Ahora vamos a herramientas, sellos, y entre éstos buscamos el que nos guste. O varios a la vez. O algo más sofisticado. Y después pulsamos guardar.
Ahora lanzamos el gimp y abrimos imagen con 'Ctrl+O'. Ahora, con 'Ctrl+H' mostramos los archivos ocultos y buscamos (en nuestro home) ".tuxpaint/saved".
Elegimos la imagen y la abrimos. Después recortamos la parte visible con el bisturí de la caja de herramientas.

Si estamos de acuerdo con el recorte, pulsamos con el ratón en dentro de el mismo y si no, fuera para empezar de nuevo y ajustarlo mejor. Dentro de nuestro home creamos un directorio llamado "iconos". Y desde el menú "Archivo" guardamos una copia, seleccionando el tipo de archivo por extensión (abajo a la izquierda), por ejemplo, PNG en:
/home/usuario/iconos
Ahora, con botón derecho sobre el panel de gnome, añadimos un lanzador de aplicación personalizado y en el campo "comando" pego el texto:
sudo shutdown -h now
Pulsamos el icono y navegamos a /home/usuario/iconos para elegir el nuevo.
Si no funciona, probar con otro comando que no necesite privilegios de administrador. El truco para que funcione un lanzador con sudo está en el archivo /etc/sudoers pero eso no forma parte de este tutorial.
sábado, 17 de julio de 2010
Compensación de latencia de captura en Ardour
#########################
Notas de revisiones:
Revisión 0: 17 julio 2010. Publicado.
#########################
En este tutorial vamos a mostrar cómo se puede compensar la latencia de captura en Ardour2 cuando hacemos overdubbing, es decir, cuando capturamos audio al tiempo que escuchamos una pista grabada anteriormente.
Antes de nada, vamos a hacer una distinción entre dos formas de monitorizar (escuchar lo que estamos grabando al mismo tiempo); por software y por hardware.
La monitorización por hardware tiene una serie de ventajas. No consume CPU, podemos reducir drásticamente la probabilidad de xruns y la latencia es inexistente ("latencia cero"). Para monitorizar usamos la mesa de mezclas o la propia tarjeta de audio, si lo permite. En este caso, conviene elegir un valor de cuadros por periodo alto en Jack. No sólo no necesitamos baja latencia en software; además, subirla va a dar mejor rendimiento y estabilidad.
La monitorización por software es posible si tenemos un sistema ajustado para una latencia aceptablemente baja. Requiere menos hardware y permite monitorizar con procesado de señal por software (efectos y amplificadores virtuales). Creo que este es el caso más común en estudios caseros. La configuración de jack, para encontrar un buen equilibrio entre latencia y rendimiento, es esencial en este caso.
En el tutorial que sigue he trabajado con una latencia bastante baja. Normalmente lo tengo así porque suelo tocar la guitarra con rakarrack y con algún otro ampli virtual. Cuando grabo en ardour, también, siempre, hago monitorización por software. A 128 cuadros por periodo y 48.000 Hz, con 2 periodos por buffer, la latencia teórica de bucle completo es 256 cuadros ó 5,3 ms. La latencia real será un poquito mayor, como vimos en la entrada acerca de jack_delay.
En todo caso, con una latencia tan baja, no tengo claro si merece la pena compensar la latencia de captura en overdubbing. Con monitorización por hardware y latencia en Jack alta, es esencial. Al final de la entrada elaboro un poco más esta idea.
Procedimiento
En ardour, añadimos tres pistas mono y en el mezclador asignamos sus entradas al puerto de captura correspondiente a la entrada donde tenemos conectado un micrófono. En el caso del pantallazo, el segundo puerto de captura, in 2.

Ahora grabamos un par de notas en la primera pista. Yo lo hecho con la guitarra acústica. Dejo la segunda pista armada para grabar...

Colocamos el micrófono entre los auriculares de monitorización y grabamos en la segunda pista lo que teníamos grabado en la primera, que suena por los auriculares.

Se supone que cuando hagamos overdubbing con una segunda guitarra o con la voz vamos a tocar o cantar sincronizados con la música grabada, de forma natural. Queremos que lo que capturamos por el micro vaya perfectamente sincronizado con la pista grabada.
En el pantallazo de arriba no se observa desplazamiento porque el zoom está muy alejado. Pero existe y vamos a medirlo.
Con botón derecho sobre los relojes, los configuramos para que muestren los cuadros o muestras (samples)...

y en "opciones misceláneas", que el reloj secundario muestre la diferencia al punto de edición.

Ahora, nos aseguramos que el modo de edición es "Deslizar" (slide) y que la rejilla no está activa. Ponemos "marca" como punto de edición (también lo podemos hacer con "ratón") y configuramos el display de "empujar" en muestras.

Elegimos el cursor como foco del zoom...

Un truco (no está en los pantallazos):
Para hacer muy rápido los zooms sobre el cursor podemos hacer lo siguiente: Voy a Transporte -> Cursor -> Centrar cursor y pulso la tecla "," (coma). Esta es la forma rápida de asignar los atajos de teclado... Y sobre Ver -> Zoom -> Acercar, elijo la tecla "." (punto). Así tenemos tres dedos contiguos para centrar el cursor, acercar y alejar. ¡La tecla para acercar por defecto, "=", viene muy a desmano en un teclado español!
Otro truco es hacer zoom con la rueda del ratón, con la tecla Control pulsada.
En cualquier caso, acercamos (zoom in) y desplazamos el cursor hasta que lo tengamos al comienzo de una señal de audio (una de las notas que hemos grabado) en una de las pistas, más o menos. Además, creamos una marca, con botón derecho y la desplazamos al comienzo de la señal en la otra pista.
ADVERTENCIA: Hay un bug en ardour2 (hasta revisión 7387 por lo menos, #2798) que hace que el segundo paso de zoom, en el sentido de más cercano a más lejano, muestre incorrectamente la posición de las regiones. ¡Evitarlo! Propongo trabajar con el tercer paso.
Observamos la diferencia en muestras en el reloj secundario y escribimos ese número en el display de "empujar", como muestra la imagen.

Empujamos hacia atrás la segunda pista.


De esta forma hemos sincronizado la pista capturada en overdubbing. Si ahora hacemos una grabación real sabemos que la pista grabada va atrasada en el tiempo el mismo número de samples que hemos medido en la prueba. En la imagen está delante y debemos empujarla hacia atrás.
Para una determinada configuración de jack sobre una determinada tarjeta de audio, el número de muestras a "empujar hacia atrás" será siempre el mismo y será algo mayor que la cantidad de cuadros por periodo. En el caso seguido en este tutorial, tengo aproximadamente 195 cuadros o muestras de desfase y el tamaño del periodo (cuadros por periodo) y, por lo tanto, la latencia teórica de entrada, es de 128 muestras.
Como se ve en el último pantallazo, también tenemos la posibilidad de "empujar atrás por compensación de captura". Esto empuja hacia atrás, precisamente, la cantidad de cuadros por periodo que hemos configurado en jack (lo podéis comprobar). Se observa que la compensación no es perfecta pues no tiene en cuenta la latencia de captura propia de la tarjeta de audio.
Podemos hacer algo para no tener que desplazar manualmente cada pista después de grabar: Declarar en la configuración de Jack la latencia de entrada. Guardamos y cerramos ardour y vamos al setup de qjackctl.

El resultado al grabar la tercera pista es éste:

Sin embargo, como apuntamos al principio, 195 muestras de desfase es realmente muy poco y el desfase producido por la propia tarjeta, del orden de 65 muestras en mi caso, aún menos.
Dependerá de cada caso y de cada persona, pero como norma general, si tenemos una latencia lo bastante baja como para permitirnos la monitorización por software, el desfase será muy pequeño y es muy probable que no lo notemos. Si en cambio, monitorizamos por hardware y tenemos en jack un valor de cuadros por periodo elevado, la compensación es necesaria, aunque probablemente nos conformemos con empujar hacia atrás (o bien declarar en jack) la compensación teórica, igual al tamaño del periodo.
Notas de revisiones:
Revisión 0: 17 julio 2010. Publicado.
#########################
En este tutorial vamos a mostrar cómo se puede compensar la latencia de captura en Ardour2 cuando hacemos overdubbing, es decir, cuando capturamos audio al tiempo que escuchamos una pista grabada anteriormente.
Antes de nada, vamos a hacer una distinción entre dos formas de monitorizar (escuchar lo que estamos grabando al mismo tiempo); por software y por hardware.
La monitorización por hardware tiene una serie de ventajas. No consume CPU, podemos reducir drásticamente la probabilidad de xruns y la latencia es inexistente ("latencia cero"). Para monitorizar usamos la mesa de mezclas o la propia tarjeta de audio, si lo permite. En este caso, conviene elegir un valor de cuadros por periodo alto en Jack. No sólo no necesitamos baja latencia en software; además, subirla va a dar mejor rendimiento y estabilidad.
La monitorización por software es posible si tenemos un sistema ajustado para una latencia aceptablemente baja. Requiere menos hardware y permite monitorizar con procesado de señal por software (efectos y amplificadores virtuales). Creo que este es el caso más común en estudios caseros. La configuración de jack, para encontrar un buen equilibrio entre latencia y rendimiento, es esencial en este caso.
En el tutorial que sigue he trabajado con una latencia bastante baja. Normalmente lo tengo así porque suelo tocar la guitarra con rakarrack y con algún otro ampli virtual. Cuando grabo en ardour, también, siempre, hago monitorización por software. A 128 cuadros por periodo y 48.000 Hz, con 2 periodos por buffer, la latencia teórica de bucle completo es 256 cuadros ó 5,3 ms. La latencia real será un poquito mayor, como vimos en la entrada acerca de jack_delay.
En todo caso, con una latencia tan baja, no tengo claro si merece la pena compensar la latencia de captura en overdubbing. Con monitorización por hardware y latencia en Jack alta, es esencial. Al final de la entrada elaboro un poco más esta idea.
Procedimiento
En ardour, añadimos tres pistas mono y en el mezclador asignamos sus entradas al puerto de captura correspondiente a la entrada donde tenemos conectado un micrófono. En el caso del pantallazo, el segundo puerto de captura, in 2.

Ahora grabamos un par de notas en la primera pista. Yo lo hecho con la guitarra acústica. Dejo la segunda pista armada para grabar...

Colocamos el micrófono entre los auriculares de monitorización y grabamos en la segunda pista lo que teníamos grabado en la primera, que suena por los auriculares.

Se supone que cuando hagamos overdubbing con una segunda guitarra o con la voz vamos a tocar o cantar sincronizados con la música grabada, de forma natural. Queremos que lo que capturamos por el micro vaya perfectamente sincronizado con la pista grabada.
En el pantallazo de arriba no se observa desplazamiento porque el zoom está muy alejado. Pero existe y vamos a medirlo.
Con botón derecho sobre los relojes, los configuramos para que muestren los cuadros o muestras (samples)...

y en "opciones misceláneas", que el reloj secundario muestre la diferencia al punto de edición.

Ahora, nos aseguramos que el modo de edición es "Deslizar" (slide) y que la rejilla no está activa. Ponemos "marca" como punto de edición (también lo podemos hacer con "ratón") y configuramos el display de "empujar" en muestras.

Elegimos el cursor como foco del zoom...

Un truco (no está en los pantallazos):
Para hacer muy rápido los zooms sobre el cursor podemos hacer lo siguiente: Voy a Transporte -> Cursor -> Centrar cursor y pulso la tecla "," (coma). Esta es la forma rápida de asignar los atajos de teclado... Y sobre Ver -> Zoom -> Acercar, elijo la tecla "." (punto). Así tenemos tres dedos contiguos para centrar el cursor, acercar y alejar. ¡La tecla para acercar por defecto, "=", viene muy a desmano en un teclado español!
Otro truco es hacer zoom con la rueda del ratón, con la tecla Control pulsada.
En cualquier caso, acercamos (zoom in) y desplazamos el cursor hasta que lo tengamos al comienzo de una señal de audio (una de las notas que hemos grabado) en una de las pistas, más o menos. Además, creamos una marca, con botón derecho y la desplazamos al comienzo de la señal en la otra pista.
ADVERTENCIA: Hay un bug en ardour2 (hasta revisión 7387 por lo menos, #2798) que hace que el segundo paso de zoom, en el sentido de más cercano a más lejano, muestre incorrectamente la posición de las regiones. ¡Evitarlo! Propongo trabajar con el tercer paso.
Observamos la diferencia en muestras en el reloj secundario y escribimos ese número en el display de "empujar", como muestra la imagen.

Empujamos hacia atrás la segunda pista.


De esta forma hemos sincronizado la pista capturada en overdubbing. Si ahora hacemos una grabación real sabemos que la pista grabada va atrasada en el tiempo el mismo número de samples que hemos medido en la prueba. En la imagen está delante y debemos empujarla hacia atrás.
Para una determinada configuración de jack sobre una determinada tarjeta de audio, el número de muestras a "empujar hacia atrás" será siempre el mismo y será algo mayor que la cantidad de cuadros por periodo. En el caso seguido en este tutorial, tengo aproximadamente 195 cuadros o muestras de desfase y el tamaño del periodo (cuadros por periodo) y, por lo tanto, la latencia teórica de entrada, es de 128 muestras.
Como se ve en el último pantallazo, también tenemos la posibilidad de "empujar atrás por compensación de captura". Esto empuja hacia atrás, precisamente, la cantidad de cuadros por periodo que hemos configurado en jack (lo podéis comprobar). Se observa que la compensación no es perfecta pues no tiene en cuenta la latencia de captura propia de la tarjeta de audio.
Podemos hacer algo para no tener que desplazar manualmente cada pista después de grabar: Declarar en la configuración de Jack la latencia de entrada. Guardamos y cerramos ardour y vamos al setup de qjackctl.

El resultado al grabar la tercera pista es éste:

Sin embargo, como apuntamos al principio, 195 muestras de desfase es realmente muy poco y el desfase producido por la propia tarjeta, del orden de 65 muestras en mi caso, aún menos.
Dependerá de cada caso y de cada persona, pero como norma general, si tenemos una latencia lo bastante baja como para permitirnos la monitorización por software, el desfase será muy pequeño y es muy probable que no lo notemos. Si en cambio, monitorizamos por hardware y tenemos en jack un valor de cuadros por periodo elevado, la compensación es necesaria, aunque probablemente nos conformemos con empujar hacia atrás (o bien declarar en jack) la compensación teórica, igual al tamaño del periodo.
Suscribirse a:
Entradas (Atom)