Curso de Audio-MIDI Linux con ALSA y sin GUI

joanillo
#1 por joanillo el 20/01/2012
A raíz de un anterior post, en que quería hacer notar que no todo empieza y acaba con JACK, comenté que si tuviera que hacer un curso de Audio-LInux no hablaría de JACK hasta la práctica 10. Básicamente la idea la mantengo, aunque seguramente tendría que reducir el número de 10 a 5... Dependiendo de la duración, de los objetivos, del nivel previo de los alumnos, de sus expectativas, de si le das un enfoque más teórico o pràctico, más de programación o de hacer música.

Bueno, aquí van las 10 prácticas, a ver qué os parecen, qué añadiríais y que quitaríais:

--------------------------------------------

*PR 1. Tarjeta de sonido y configuración

$ cat /proc/asound/version
$ cat /proc/asound/cards
$ cat /proc/asound/devices
$ ls /dev/snd
$ lsusb
$ alsamixer
$ speaker-test
$ sudo /sbin/alsa force-reload


Ejercicio básico: hacer sonar una nota midi por línea de comandos I
$ echo -ne '\x90\x46\x64' > /dev/snd/midiC1D0
$ sleep 2
$ echo -ne '\x80\x46\x64' > /dev/snd/midiC1D0

--------------------------------------------

*PR 2. ALSA Utilites. Audio

$ aplay -l
$ aplay -L
$ aplay -vv somefile.wav
$ arecord -vv -fdat foo.wav
jugando con los parámetros:
$ aplay -D plughw:UA25EX /usr/share/sounds/alsa/Front_Center.wav
$ arecord -r 44100 -f cd -t wav -D plughw:UA25EX foobar.wav

--------------------------------------------

*PR 3. ALSA Utilites. MIDI

$ amidi -l
$ aplaymidi
$ arecordmidi
$ aseqdump

Ejercicio básico: hacer sonar una nota midi por línea de comandos II
# play middle C for 2 seconds on channel 1 then turn it off
amidi -p hw:1,0 -S "90 3C 7F"
sleep 2
amidi -p hw:1,0 -S "90 3C 00"

--------------------------------------------

*PR 4. Conexiones básicas

$ aconnect -i -o
$ fluidsynth -m alsa_seq -a alsa -l /home/joan/soundfonts/AI-APiano02trans.sf2
$ vkeybd
$ aconnect 130:0 129:0
$ aconnectgui

--------------------------------------------

*PR 5. Programación ALSA. Audio

http://www.suse.de/~mana/alsa090_howto.html

Basic PCM audio (http://www.suse.de/~mana/alsa090_howto.html#sect02)
Es un ejemplo de síntesis de audio. Se trata de generar una diente de sierra y enviarla directamente a la tarjeta de sonido

Otros enlaces:
http://home.roadrunner.com/~jgglatt/tech/linuxapi.htm
http://www.alsa-project.org/alsa-doc/alsa-lib/pcm.html

--------------------------------------------

*PR 6. Programación ALSA. MIDI

http://www.suse.de/~mana/alsa090_howto.html

Enviar una nota MIDI directamente a la tarjeta de sonido utilizando ALSA rawmidi (el propio programa genera la nota):
http://home.roadrunner.com/~jgglatt/tech/arawmidplay.htm

http://www.midi-howto.com/midi-howto-9.html
Ejercicio 1 (secuenciador, tiene un puerto de entrada, recibe mensajes MIDI). seq_demo.c.
http://www.suse.de/~mana/seqdemo.c
Para compilar:
$ gcc seqdemo.c -o seqdemo -lasound
Ejercicio 2 (enrutador, tiene un puerto de entrada y un puerto de salida)

--------------------------------------------

*PR 6b. Programación ALSA. Audio + MIDI

Ejemplo miniFMsynth: recibe mensajes MIDI y el mismo programa sintetiza la nota.
http://www.suse.de/~mana/alsa090_howto.html#sect06

--------------------------------------------

PR 7. Gestión de las sesiones con Bash Scripts

Por ejemplo,
#!/bin/bash
/usr/local/bin/fluidsynth -a alsa -m alsa_seq -o audio.alsa.device='plughw:1' -c 2 -z 64 -r 44100 -l Casio_VL_1.SF2 &
sleep 5
/usr/bin/vkeybd &
sleep 5
/usr/bin/aconnect 'Virtual Keyboard':0 'FLUID Synth':0

--------------------------------------------

*PR 8. Sintetizadores

8.0. Timidity (lo pongo porque siempre está a mano)
8.1. Fluidsynth
8.2. LinuxSampler


--------------------------------------------

*PR 9. Hacer música. Herramientas

-playback ficheros SMF: aplaymidi (ALSA utility), pmidi (http://sourceforge.net/projects/pmidi/files/)
-metrónomos: gtick (http://www.antcom.de/gtick/), KMetronome (http://kmetronome.sourceforge.net)
-sintetizadores: timidity (siempre está a mano), fluidsynth (con ficheros soundfont), o LinuxSampler (se pueden conseguir mejores sonidos)
-DAW CLI: ecasound (http://eca.cx/ecasound/). Sofware multipistas para grabar y reproducir (sería como Ardour pero en línea de comandos)
--------------------------------------------

*PR 10. Hacer música

Como corolario de este tutorial hecho exclusivamente con ALSA y sin interficie gráfica, grabaríamos con ecasound una canción con tres pistas. En la primera pista la voz (con metrónomo-claqueta). En las otras dos una línea melódica y otra de acompañamiento, entrándolas con un teclado MIDI y utilizando uno de los sintes que se comentan. Al final se tiene que conseguir una mezcla de las tres pistas en formato ogg.


NOTAS
*Evidentemente al curso le doy bastante contenido de programación (es deformación profesional)
*ALSA y CLI (línea de comandos) no van juntos. También son válidas las combinaciones ALSA-GUI, JACK-CLI, JACK-GUI (evidentemente, es lo que utiliza todo el mundo), y combinar ALSA con JACK
*Algunas de las ideas expuestas no las he probado, son sólo ideas que tendría que trabajar. Por ejemplo, no he utilizado nunca ecasound (aunque ahora me ha entrado el gusanillo)
*Se nota que soy más programador que músico... (que no quiere decir que sea bueno en ninguna de las dos cosas), y que la máxima de "menos trastear, más música", no la sigo para nada.
*he escogido fluidsynth (QSynth) y linuxsampler (QSampler) porque son mis soft-sintes habituales y trabajan en línea de comandos.
*El curso no se acabaría aquí, continuaría hablando del servidor de JACK (eso sí, siguiendo la tónica, primero jackd en línea de comandos y más adelante QJackCtl). El curso acabaría con Ardour, 2 años más tarde...
*Estoy programando una aplicación que un día me gustaría enseñar, y para nada utiliza la API de ALSA, sino la de JACK
*El curso no se va a hacer ni desarrollar, es tan sólo para ordenar las ideas.

Saludos
Subir
OFERTAS Ver todas
  • -50%
    NI Komplete 15 Collector's Edition
    885 €
    Ver oferta
  • -6%
    Elektron Digitakt II (B-Stock)
    939 €
    Ver oferta
  • -7%
    Modal Argon8 (B-Stock)
    559 €
    Ver oferta
pdro74
#2 por pdro74 el 21/01/2012
yo que soy musico pero no informatico, hago lo contrario: todo por GUI, y la terminal, cuanto menos, mejor. En las clases con los alumnos, me refiero. Si les explico linux, jack y la terminal, les da un cortocircuito, que los pobres vienen de Windows. Yo he hecho 3 bloques, por trimestres, y de momento va muy bien:
1º Musescore, edicion de partituras
2º Ardour, edicion de audio y midi.
3º Yoshimi-Specimen, sintesis y sampleado
El bloque de Musesc. ya lo hemos terminado, estamos empezando con Ardour y les encanta.
Subir
Irwin J. Cespedes
#3 por Irwin J. Cespedes el 21/01/2012
Ejem, ejem, voy a sacar mi modo Teacher O:)

Joanillo, esto cabe dentro de un curso de Intermedios/Avanzados para la producción musical en GNU/Linux sin importar donde esta parado.

Cayendo hacia por que es avanzado, ustedes saben que la pedagogía se rige por la forma en que el conocimiento es usado. Benjamin Bloom y su Taxonomía (1) separo un poco los niveles de uso del conocimiento y como la mente manejaba a los mismo. Todo ese programa de estudio que haz escrito caería en la etapa de Aplicación y Análisis.

¿Por qué no principiantes? R:/ Hmmm, si yo fuese un alumno de primer año en música, me meten un curso que se llame: "Sistemas Alternativos para la Creación Musical" Creo que lo que me esperaría ver son programas con luces y botones para hacer ruido. No lineas de comando. Claro, si el curso se llamara "Utilización de Sistemas Un*x para desarrollo musical", creo que si caería en razón la explicación-relación Audio-Linea de Comando

Ahora, saliendo del Modo Teacher, hace tiempo uso GNU/Linux, y creo que la primera aplicación de audio que conocí, fue ZynAddSubFX. Cuatro meses después, al instalar Debian 5, fue que comencé mi faena con los terminales, y hasta el sol de hoy, sigo copiando comandos de la red que encuentro en foros como Hispasonic :lol:

Creo que seguiré siendo un cabrón que necesite GUI siempre, aunque meter comandos al Terminal es altamente sexy :juas:
Sorry por sacar el tema pedagógico en un foro de música, pero pensaba que era necesario decirlo.

1. Wikipedia, Taxonomía de objetivos de la educación
Subir
Nuli
#4 por Nuli el 21/01/2012
#1 Soy de la opinión de Pedro e Irwin, si le das un curso basado en comandos a esta generación de "nativos tecnológicos" que están acostumbrados a manejarse con herramientas hard/soft extremadamente intuitivas (móviles, iPads, pantallas táctiles, etc) y a la carencia más absoluta de lectura de manuales, pues como que los vas a aburrir soberanamente.

OTOH, si el curso va dirigido a "otra generación" en la que me incluyo [1] , que crecimos con sistemas operativos de 8 bits que arrancaban desde discos de 5" 1/4, líneas de comando y monitores monocromo (fosforito ;) ) entonces, quizás, quizás, tenga algo de éxito.

Saludos.

[1] He de confesar que ya me estoy rindiendo a esta otra generación más moderna y todo hay que decirlo "práctica" y yo mismo me debería aplicar las RTFM & STFW de cuando en cuando :lol:
Subir
anecochea
#5 por anecochea el 21/01/2012
El otro día viendo el archwiki encontré un pequeño truco que creo que cabe en tu tutorial (quizás es un truco antiguo, pero lo encontré hace pocos días).

Es para que las aplicaciones que usan directamente alsa no entren en conflicto con jack.

Sé que el objetivo de tu curso es excluir a jack, pero me parece interesante que lo menciones.

https://wiki.archlinux.org/index.php/JACK_Audio_Connection_Kit#Playing_nice_with_ALSA
Subir
vagar
#6 por vagar el 21/01/2012
Por completitud habría que meter alguna mención a ~/.asoundrc. Antes de meterse en programación sería una buena introducción a las posibilidades de la API. Es un área bastante arcana y no muy bien documentada, pero gracias a ~/.asoundrc se pueden hacer cosas que no se pueden hacer de ninguna otra manera, como mezclar aplicaciones no jackificadas como Skype con otras que sólo tienen salida por jack. Yo lo uso cuando doy clases de teoría musical por Skype.

Pero, efectivamente, es un plan orientado a gente de perfil muy técnico, sobre todo la parte de programación.
Subir
joanillo
#7 por joanillo el 22/01/2012
Tomo nota de los comentarios, han sido instructivos... hacer la lista a mi me ha servido para ordenar unas cuantas ideas. La diferencia entre utilizar línea de comandos o aplicaciones gráficas no creo que tenga que ver con la generación, sino con el uso que se le va a dar. En una asignatura que doy de seguridad informática (nada de música), está claro que los administradore de sistemas tienen que utilizar scripts y líneas de comando para automatizar tareas, etc. Son jóvenes y lo tienen más o menos claro... pero no quiere decir que sea tarea fácil.

El curso evidentemente está orientado a programación. Pero voy a poner un ejemplo práctico que yo utilizaría exclusivamente con línea de comandos (con JACK o ALSA, tanto da). Supongamos que mi hija quiere estudiar piano, y en vez de comprar un piano de pared de segunda mano como sugeriría mi compañera, la convenzo de que es mejor utilizar un teclado controlador (con buenas teclas contrapesadas), con ordenador portátil, altavoces y/o cascos para no molestar a los vecinos, y además la convenzo de que el sonido puede ser igual o mejor (esto sería lo más difícil). Todo el material ya lo tengo (bueno, el teclado no daría la talla), o sea que inversión 0 euros. Evidentemente, la configuración ha de ser fácil: encender y ya está. La manera sería:

-encender el ordenador. Que no pida password. Un script que se ejecute en el arranque
-el script arranca el servidor de JACK, el sinte, y hace las conexiones.
-y ya está, a tocar, nada de ratón.

Saludos
Subir
Nuli
#8 por Nuli el 22/01/2012
joanillo escribió:
hacer la lista a mi me ha servido para ordenar unas cuantas ideas

Está bien, un ejercicio de reflexión en voz alta como ves te ayuda a recoger ideas aunque como la mía, que viene de un no-programador aporten poco :)


No creo que dijeras que tal curso se fuera a celebrar:

joanillo escribió:
*El curso no se va a hacer ni desarrollar, es tan sólo para ordenar las ideas.


Y tampoco que de celebrarse fuera dirigido a administradores de sistemas

joanillo escribió:
La diferencia entre utilizar línea de comandos o aplicaciones gráficas no creo que tenga que ver con la generación, sino con el uso que se le va a dar. En una asignatura que doy de seguridad informática (nada de música), está claro que los administradore de sistemas


De haberlo sabido el comentario de "la generación" habría estado de más ... quizás toda mi respuesta estaba de más, no siendo programador.

joanillo escribió:
Supongamos que mi hija quiere estudiar piano, y en vez de comprar un piano de pared de segunda mano como sugeriría mi compañera, la convenzo de que es mejor utilizar un teclado controlador (con buenas teclas contrapesadas), con ordenador portátil, altavoces y/o cascos para no molestar a los vecinos, y además la convenzo de que el sonido puede ser igual o mejor ...


Para nada se te ocurra tal cosa ¡Haz caso a tu compañera, sin-du-dar-lo!. Te lo digo yo pero ya lo han dicho antes otros. Que recuerde recientemente un pianista:

danyrq escribió:

Ante todo gracias por tu respuesta, decirte que para mi lo de que tenga pianos buenos es muy importante,
desde luego que hay soft con pianos buenos como ivory etc.., pero que en momento claves haciendo arpeggios rápidos, o tocando muchas notas a la vez, "PETARDEA",en mac y win,y te digo con ordenadores e interfaces buenas, eso a mi me jode mucho por que soy pianista, es bueno tener un equipo que no tengas que encender el ordenador para tocar si tienes poco tiempo, pero que además puedas utilizarlo como controlador si te apetece componer en DAW y utilizar sus sonidos , su sampler, si te cuadra.


Dicho en página 12 post #171 del hilo de usuarios del MOX:
https://www.hispasonic.com/foros/usuarios-yamaha-mox-nos-reunimos-aqui/384166/pagina12

Igualmente te lo podrán confirmar pianistas profesionales (y otros instrumentistas) si preguntas en el sitio adecuado. El computador NO es un instrumento, ni lo sustituye, ni lo sustituirá, ni ahora ni nunca, al menos NO para mí, y como yo piensan muchos otros. El hecho de que puedas producir música con él sin ningún instrumento real no le resta valor a ese pensamiento que yo y otros tenemos. En cuanto le aprietas un poco en cuestión de polifonía (número simultáneo de notas), velocidad de interpretación, unidades multiefectos simultáneas, etc, el computador se viene abajo. Pero no sólo esto, más aún.

Yo hasta la fecha tengo varios instrumentos: guitarras (eléctrica y acústica), bajo eléctrico, teclado 88 teclas con motor interno de sonido, harmónica y algún otro que me deje en el tintero y te puedo asegurar que la forma en que un instrumento real se puede articular (bending, slide, hammer-on, pull-off, muting, etc), las resonancias que se producen en el interior de la caja acústica de una guitarra, de un piano o de una simple harmónica, etc dificilmente se van a conseguir por un computador. Muchas de ellas tienen que ver con el tipo de material con que el instrumento se construyó e incluso varian dentro de una misma marca y modelo de instrumento otras resonancias dependen de qué cuerdas (piano/guitarra) o láminas (harmónica) vibren simultáneamente en cada momento.

Saludos, y de llevarse a cabo ¡suerte con ese curso!
Subir
pdro74
#9 por pdro74 el 22/01/2012
No estoy de acuerdo: el ordenador ES un instrumento, casi diría EL instrumento del siglo XXI. Evidentemente, no es un piano de cola. Pero un piano de cola tampoco es capaz de hacer lo que hace un ordenador, a cada cosa lo suyo :)
Subir
joanillo
#10 por joanillo el 22/01/2012
Bueno, como comenté el curso no va a llevarse a cabo.

No tengo nada contra los pianos, y si son de cola mejor :-> Yo mismo toco diversos instrumentos, básicamente de viento (aunque quien mucho abarca poco aprieta). Si el alumno de piano sigue una metodología clásica, pues con un piano le basta. Pero si el alumno tiene la suerte de conocer las posibilidades de la informática musical aplicada a la educación, aquí no hay límite: grabarse, escucharse, secuenciar, componer, practicar con métodos play-along, practicar con sonidos y así adquirir cultura musical y oído,... todo ello puede ser complementario y retroalimentador de una formación más clásica. Soy firme partidario de la informática musical aplicada a la educación, aunque como no soy profesor de música no lo he puesto en práctica; y para mi mismo como eterno estudiante sí que lo pongo en práctica, pero aquí la falta de tiempo es el factor limitante. Esto es otro hilo...
Subir
Nuli
#11 por Nuli el 22/01/2012
#10 No necesariamente un piano de cola ni de pared. Un piano de escenario (stage piano) viene a satisfacer las necesidades de muchos pianistas profesionales (incluso como teclado controlador). Lo que te he venido ha decir es que ya he visto gente mal aconsejada en foros de informática musical precisamente, que han invertido un dinero en interfaz de audio + controlador + PC/Mac + plugins y no ha satisfecho sus espectativas de pianista para nada.

Respecto de lo que quien mucho abarca poco aprieta, sí es cierto, no pretendo ser un virtuoso tampoco, pero si entiendes de lenguajes informáticos al igual que en ellos sabrás que una vez que se adquieren unos conocimientos musicales en un instrumento trasladarlos a otro es "casi" inmediato. Así que "creo" que si volviera a nacer, musicalmente haría lo mismo "saber un poco de todo y no destacar en nada".

Y por supuesto que no estoy en contra de la informática musical, claro que no, de otro modo no estaría aquí. Pero como alguien dijo, cada cosa a lo suyo, y sí efectívamente, esto ya se mete en otro hilo :)
Subir
Irwin J. Cespedes
#12 por Irwin J. Cespedes el 22/01/2012
Sería bueno recordar que, el uso de un Piano, no comienza ni termina en los Pianos tradicionales. Recuérdese que el ordenador es un instrumento altamente capacitado para satisfacer las necesidades de un músico. Por algo existe la música electrónica.

En todo caso, mucha gente mataría por un lindo piano Steinway o un Baldwin, pero hay casos donde es necesario hacer uso de medidas pragmáticas. El caso de la combinación PC+Software+Controlador+Cascos puede ser la mejor opción, si tu vecino es medio energúmeno musicalmente hablando.

Sin embargo, el tema Instrumentación Real Vs. Instrumentación Simulada por PC, es un Off-Topic que no cae en el tema original.
Subir
igny
#13 por igny el 22/01/2012
Cuidado Joanillo, se han dado conciertos de piano con un famoso vst de steinberg. Y ya hace bastantes años. :)
Subir
Hilos similares
Nuevo post

Regístrate o para poder postear en este hilo