Joanillo Blog. Maker, Open source and hardware » linuxaudio http://www.joanillo.org Programación y proyectos maker con herramientas libres - Programació i projectes maker amb eines lliures Wed, 20 May 2020 16:33:48 +0000 es hourly 1 http://wordpress.org/?v=3.2.1 diatonicbaixos v1.0: ayuda para los bajos del acordeón diatónico http://www.joanillo.org/?p=811 http://www.joanillo.org/?p=811#comments Fri, 31 Jan 2014 19:00:36 +0000 joanillo http://www.joanillo.org/?p=811 ...Read the Rest]]>

Maria está estudiando el acordeón diatónico (y de paso yo también me he enganchado). Una de las cosas que siempre he encontrado difíciles es la coordinación de la mano derecha (con la que tocamos la melodía) y la mano izquierda (los bajos). Igual que pasa con el piano, que siempre me ha parecido difícil tocar con las dos mans al mismo tiempo.

Aquí va un pequeño programa para ayudar a poner la mano izquierda en el acordeón diatónico. Mientras suena la melodía (se necesita el fichero midi de la melodía), por pantalla se muestran las posiciones de los bajos que se han de tocar (en el acordeón diatónico hay 8 botones para los bajos/acordes, que suenan diferente si abres o cierras el fuelle). Cuando se muestra un botón en color verde significa que hay que cerrar el fuelle; en color rojo hay que abrirlo.

Para la interficie gráfica se ha utilizado la librería ncurses, que es la primera vez que programaba en esta llibrería (y estoy muy contento del resultat obtenido). El programa es un cliente de JACK (el servidor de audio para Linux, www.jackaudio.org), y de hecho es el time master, es decir, controla el transporte. Para utilizar la aplicación lo mejor es lanzar el script bash que se proporciona, diatonicbaixos.sh, donde se pone de manifiesto toda la cadena de programas que se utilizan.

Primero de todo se cambia el tempo deseado al fichero midi mediante el script change_tempo_smf (se proporciona el código fuente). Luego se arranca el servidor JACK, y el sintetizador fluidsynth, que es el que hará sonar la melodía. Después arrancamos la utilitat jack-smf-player, que se encargará de hacer sonar la melodía. También arranco el klick, que es un metrónomo cliente de JACK. Finalmente ya puedo lanzar mi aplicación, diatonicbaixos. El resultado, com se ve en el video, es que suena la melodía mientras se van mostrando las posiciones de los bajos. Se puede cambiar el tempo, se puede habilitar o no el metrónomo, y hay otro parámetro que permite mostrar el siguiente bajo que se tendrá que pulsar.

Para hacerse una idea del funcionamiento del programa lo mejor es ver el video:

Descargar diatonicbaixos v1.0

]]>
http://www.joanillo.org/?feed=rss2&p=811 0
50 ways… #6. Editores de partituras: Lilypond http://www.joanillo.org/?p=761 http://www.joanillo.org/?p=761#comments Sat, 07 Dec 2013 08:03:44 +0000 joanillo http://www.joanillo.org/?p=761 ...Read the Rest]]> En el anterior post creamos un soundfont para acordeón diatónico, castagnari.sf2, y con sus sonidos tocamos mi canción preferida: Una Plata d’Enciam, dentro del proyecto 50 ways to play Una Plata d’Enciam. Vamos a ver ahora cómo con el editor de partituras Lilypond podemos crear una partitura muy correcta, que responda a los retos que nos plantea la notación para el acordeón. Lo que haremos en este post no es nada del otro mundo. En el blog amigo Scores of Beauty, http://lilypondblog.org/, se lleva al extremo las posibilidades de lilypond.

Básicamente lo que queremos es visualizar correctamente la melodía, los acordes, y cómo se han de tocar los bajos/acordes de la mano izquierda (es decir, el acompañamiento). La idea es crear unas partituras didácticas que ayuden a mi hija a poner los dedos de la mano izquierda.

Lo primero que haremos es crear la melodía, pondremos encima de las notas los acordes en la forma habitual, y mostraremos cuándo se ha de tocar un bajo (b) o un acorde (a) con la mano izquierda. Esto último lo haremos con \lyrics, como si fuese la letra de una canción.

\version “2.12.1″
\header {
title = “Una Plata d’Enciam”
composer = “tradicional catalana”
}

baixosnotacio = \chordmode {
c4 c f c f g g c c c f c f g g c
c4 c f c f g g c c c f c f g g c
}

partitura = \relative c’
<<
\new ChordNames {
\set chordChanges = ##t
\baixosnotacio
}

\new Staff = "veu 1"
{
\clef treble
\key c \major
\time 2/4
\tempo 4=80

e8 f g g a a g4 \times 2/3 { a8 a g } f f \times 2/3 { f f f } g e e f g g a a g4 \times 2/3 { a8 a g } f f f g e4
e8 f g g a a g4 \times 2/3 { a8 a g } f f \times 2/3 { f f f } g e e f g g a a g4 \times 2/3 { a8 a g } f e f g e4
}
\addlyrics {
b _ a _ b _ a b _ _ a _ b _ _ a _ b _ a _
b _ a _ b _ a b _ _ a _ b _ _ a _ b _ a _
b _ a _ b _ a b _ _ a _ b _ _ a _ b _ a _
b _ a _ b _ a b _ _ a _ b _ _ a _ b _ a _
}

>>

\score {
\partitura
\layout { }
\midi { }
}

Ahora vamos a poner los bajos. Si lo hacemos en la forma habitual funciona, pero queda una partitura que no és útil para su lectura. Además, no es correcta, pues como se ha explicado en el anterior post la asociación entre los acordes CM, DM,… y las notas midi 24, 26,… fue una decisión arbitria. Quedaría de la siguiente manera:

\version “2.12.1″
\header {
title = “Una Plata d’Enciam”
composer = “tradicional catalana”
}

baixosnotacio = \chordmode {
c4 c f c f g g c c c f c f g g c
c4 c f c f g g c c c f c f g g c
}

partitura =
<<
\new ChordNames {
\set chordChanges = ##t
\baixosnotacio
}

\relative c'
\new Staff = "veu 1"
{
\clef treble
\key c \major
\time 2/4
\tempo 4=80
%notes amb valors relatius
e8 f g g a a g4 \times 2/3 { a8 a g } f f \times 2/3 { f f f } g e e f g g a a g4 \times 2/3 { a8 a g } f f f g e4
e8 f g g a a g4 \times 2/3 { a8 a g } f f \times 2/3 { f f f } g e e f g g a a g4 \times 2/3 { a8 a g } f e f g e4
}
\addlyrics {
b _ a _ b _ a b _ _ a _ b _ _ a _ b _ a _
b _ a _ b _ a b _ _ a _ b _ _ a _ b _ a _
b _ a _ b _ a b _ _ a _ b _ _ a _ b _ a _
b _ a _ b _ a b _ _ a _ b _ _ a _ b _ a _
}

\new Staff = "baixosnotes"
{
\key c \major
%notes amb valors absoluts
c,8. r16 c,,8 r f,8. r16 c,,8 r f,8. r16 g,,8 r g,8. r16 c,,8 r
c,8. r16 c,,8 r f'8. r16 c,,8 r f,8. r16 g,,8 r g,8. r16 c,,8 r
c,8. r16 c,,8 r f,8. r16 c,,8 r f,8. r16 g,,8 r g,8. r16 c,,8 r
c,8. r16 c,,8 r f,8. r16 c,,8 r f,8. r16 g,,8 r g,8. r16 c,,8 r
}
>>

\score {
\partitura
\layout { }
\midi { }
}

Aquí es importante remarcar que se ha utilizado la notación relativa para la melodía, y la notación absoluta para los bajos, que simplifica mucho escribir la alternancia entre bajos y acordes. Esta partitura no es correcta para su impresión, pero el fichero midi que produce sí que es correcto. ¿Hay una manera de solucionarlo? Sí. Se puede definir un \score para ser impreso, y otro \score para generar el fichero midi. El resultado queda de la siguiente manera: la partitura para imprimir es correcta (no aparecen las notas de los bajos, sólo las posiciones donde hemos de poner los dedos de la mano izquierda); y el fichero midi resultante también es correcto:

\version “2.12.1″
\header {
title = “Una Plata d’Enciam”
composer = “tradicional catalana”
}

baixosnotacio = \chordmode {
c4 c f c f g g c c c f c f g g c
c4 c f c f g g c c c f c f g g c
}

partitura = \relative c’
<<
\new ChordNames {
\set chordChanges = ##t
\baixosnotacio
}

\new Staff = "veu 1"
{
\clef treble
\key c \major
\time 2/4
\tempo 4=80
e8 f g g a a g4 \times 2/3 { a8 a g } f f \times 2/3 { f f f } g e e f g g a a g4 \times 2/3 { a8 a g } f f f g e4
e8 f g g a a g4 \times 2/3 { a8 a g } f f \times 2/3 { f f f } g e e f g g a a g4 \times 2/3 { a8 a g } f e f g e4
}
\addlyrics {
b _ a _ b _ a b _ _ a _ b _ _ a _ b _ a _
b _ a _ b _ a b _ _ a _ b _ _ a _ b _ a _
b _ a _ b _ a b _ _ a _ b _ _ a _ b _ a _
b _ a _ b _ a b _ _ a _ b _ _ a _ b _ a _
}
>>

fitxermidi =
<<
\relative c'
\new Staff = "veu 1"
{
\clef treble
\key c \major
\time 2/4
\tempo 4=80
%notes amb valors relatius
e8 f g g a a g4 \times 2/3 { a8 a g } f f \times 2/3 { f f f } g e e f g g a a g4 \times 2/3 { a8 a g } f f f g e4
e8 f g g a a g4 \times 2/3 { a8 a g } f f \times 2/3 { f f f } g e e f g g a a g4 \times 2/3 { a8 a g } f e f g e4
}

\new Staff = "baixosnotes"
{
\key c \major
%notes amb valors absoluts
c,8. r16 c,,8 r f,8. r16 c,,8 r f,8. r16 g,,8 r g,8. r16 c,,8 r
c,8. r16 c,,8 r f'8. r16 c,,8 r f,8. r16 g,,8 r g,8. r16 c,,8 r
c,8. r16 c,,8 r f,8. r16 c,,8 r f,8. r16 g,,8 r g,8. r16 c,,8 r
c,8. r16 c,,8 r f,8. r16 c,,8 r f,8. r16 g,,8 r g,8. r16 c,,8 r
}
>>

\score {
\partitura
\layout { }
}

\score {
\fitxermidi
\midi { }
}

Finalmente podemos escuchar la canción Una Plata d’Enciam tal como quedaría con un acordeón diatónico:

Una Plata d’Enciam by joanillo

Referencias:

]]>
http://www.joanillo.org/?feed=rss2&p=761 0
50 ways… #5. Cómo hacer un soundfont para acordeón http://www.joanillo.org/?p=746 http://www.joanillo.org/?p=746#comments Wed, 04 Dec 2013 23:12:41 +0000 joanillo http://www.joanillo.org/?p=746 ...Read the Rest]]>

Mi hija está aprendiendo a tocar el acordeón diatónico. Se trata de un acordeón de botones de la marca Castagnari, modelo Studio, con dos hileras de botones en la mano derecha (afinadas en Sol y en Do), y los 8 botones de la mano izquierda son los bajos, divididos en 4 bajos y 4 acordes. Este es el tipo de acordeones que sonaban en les fiestas mayores de los pequeños pueblos del Pirineo. Cuando todavía no había carreteras para llegar a estos pueblos, en el siglo XIX y hasta entrado el siglo XX, los músicos habían de subir a los pueblos a pie o en mula. Por tanto era necesario acarrear instrumentos transportables. Muchas veces un acordeón y un violín animaban el baile en la plaza del pueblo.

En esta ocasión, ya que dispongo de un instrumento nuevo para mi, quiero hacer la práctica de crear un soundfont desde cero, y de esta manera podré utilizar el sonido de este instrument en diferents proyectos. Evidentmente, se ha de empezar mostreando todas las notas. Para hacerlo se utilizará un micrófono de una calidad óptima, intentando que no haya ruidos de fondo. Se grabará a un volumen adecuado, notas largas, y sin producir saturación, en un solo canal. Las muestras se van grabando de forma ordenada y utilizando un nombre de fichero adecuado de manera que no hi haya confusión posible. Para grabar las muestras he utilizado un Ubuntu 12.04 32 bits, interfície Edirol UA-25EX y un micrófono Beyerdynamic TG I5d2d. Se ha utilizado el siguiente comando:

arecord -r 44100 -f cd -t wav -D plughw:UA25EX accordion_C4.wav

Deberemos tener cuidado al samplear los bajos y los acordes, que son botones especiales. Una vez tengamos todas las muestras, con el Audacity editamos los ficheros de onda. Cogemos una parte significativa de la muestra sampleada, intentando que la envolvente sea periódica, y evidentmente no coger los extremos del fichero de onda. Nos aseguramos de que la muestra no tenga saturación, y amplificamos la muestra a un nivel razonable, de manera que todas las muestras tengan un volumen similar. El resultado de las muestras es el siguiente:

Samples Accordion Castagnari Studio by joanillo

Samples Accordion Castagnari Studio (Bass and chords) by joanillo

Entonces ya podemos empezar a utilizar el Polyphone, que será el entorno gráfico que utilizaremos para construir el soundfont. Lo primero que haremos es importar todas las muestras, y diremos cuál es la nota raíz de cada nota, de manera que ya le estamos asignando una frecuencia. Entonces creamos un instrument nuevo (por ejemplo Accordion), que será el único instrumento que contendrá este soundfont. Ahora es cuando tenemos que asociar cada muestra a una nota midi del instrumento que estamos editando. Por ejemplo, para la muestra accordion_C4.wav pondremos:

  • root key = 60
  • key range = 60-60
  • attack = 0,2s
  • release = 0,2 s

Las notas de los bajos que se hacen con la mano izquierda se corresponden con las siguientes notas midi:

  • Bajo C = 36 (C2)
  • Bajo D = 38 (D2)
  • Bajo E = 40 (E2)
  • Bajo F = 41 (F2)
  • Bajo G = 43 (G2)
  • Bajo A = 45 (A2)

Y un caso especial son los acordes que se hacen con la mano izquierda, que se asocian por convenio a las siguientes notas midi.

  • Acorde CM = 24 (C1)
  • Acorde DM = 26 (D1)
  • Acorde EM = 28 (E1)
  • Acorde FM = 29 (F1)
  • Acorde GM = 31 (G1)
  • Acorde Am = 33 (A1)

Y es importante recalcar que esta asociación es un convenio. Cuando toque la nota midi 24 se disparará el sonido sampleado que corresponde al acorde CM.

Para los bajos y acordes se ha fijado los valores de attack y release a 0,6s.

Para acabar de definir el soundfont hemos de crear un nuevo preset asociado a este instrumento, de manera que el sonido de acordeón lo tendremos en el banco=0 y canal=0 (000:000). Finalmente ya puedo guardar el soundfont, castagnari.sf2, y ya lo puedo testear, en este caso con fluidsynth, haciendo sonar mi canción preferida: Una Plata d’Enciam, tocada a la manera cómo se hace con el diatónico: la melodía con la mano derecha, y alternando los bajos y los acordes con la mano izquierda.

/usr/bin/fluidsynth -s -l -j -a jack -m jack ./accordion_castagnari_studio.sf2 ./una_plata_denciam.midi

Una Plata d’Enciam by joanillo

En el siguiente post explicaremos cómo se ha generado el fichero midi que acabamos de tocar a partir del editor de partituras lilypond. Tenía ganas de hacer un post sobre lilypond, y concretament ahora que mi hija esta aprendiendo el diatónico, cómo se puede utilizar lilypond para la notación de acordeón.

Referencias:

]]>
http://www.joanillo.org/?feed=rss2&p=746 0
Solución portátil para un saxo electrónico: Raspberry PI + soft o hard sinte http://www.joanillo.org/?p=732 http://www.joanillo.org/?p=732#comments Mon, 01 Jul 2013 23:59:22 +0000 joanillo http://www.joanillo.org/?p=732 ...Read the Rest]]>
EWI-USB and Raspberry Pi

EWI-USB and Raspberry Pi

Para tocar el controlador de viento EWI-USB normalmente me conecto al portátil. Ejecuto el fluidsynth o cualquier otro soft sinte. Por tanto, la solución para practicar es EWI-USB + portátil + auriculares. Existe una solución más portable y autónoma? Definitivamente sí utilizando la Raspberry Pi, buscando una solución puramente consola y totalment desatendida: enchufar y tocar. En esta ocasión no utilizo JACK, es una solución purament ALSA. Se trata de instalar fluidsynth, algún soundfont que suene bien y que no pese demasiado, configurar el usuario pi con prioridad realtime, desinstalar cualquier servicio que no tenga que utilizar.

Con un script en /etc/udev/rules.d/ewiusb.rules conseguimos que en el momento que conecto el EWI-USB por el puerto USB se ejecuten los comandos que me permitirán tocar automáticamente: ejecutar fluidsynth y conectar la salida midi del EWI-USB a la entrada midi del fluidsynth. He tenido bastantes problemas con la letencia, pero el script que se muestra más abajo a mi em funciona bien sin latencia.

Además, con un poco de electrónica simple y utilizando los pins GPIO se podría cambiar fácilmente el programa midi y poder escoger entre diferentes instrumentos: saxo, midi, flauta,…

Otra posibilidad, como se ve en la fotografía, es utilizar un sinte hardware com el Roland JV-1010. Como la entrada del JV-1010 es puramente midi se necesita un cable conversor USB2MIDI (por ej, http://www.amazon.com/dp/B0017H4EBG), que muestra sus puertos a ALSA. Con esta solución no has de temer por la latencia, es una magnífica experiencia de usuario, y podemos escoger entre centenares de sonidos.

/etc/udev/rules.d/ewiusb.rules

#/etc/udev/rules.d/ewiusb.rules
ACTION==”add”, SUBSYSTEMS==”usb”, ATTRS{product}==”EWI-USB”, RUN+=”/home/pi/ewiscript.sh”

/home/pi/ewiscript.sh

#!/bin/sh
#/home/pi/ewiscript.sh
#script que s’ha d’executar quan connectem el EWI-USB. Dos casos: a) synth hardware (roland); b) synth software (fluidsynth)

#mirem si tenim connectat el cable usb-midi
if [ -z `/usr/bin/aconnect -iol | grep USB2.0-MIDI | awk '/client/{print $1}'` ]; then

#no està connectat: b) synth software (fluidsynth)
if [ -z `pidof -s fluidsynth` ]; then
screen -d -m -S fluidsynth -t “fluidsynth” /usr/bin/fluidsynth -a alsa -m alsa_seq -g 1 -c 4 -z 256 -r 48000 /home/pi/Natural_Oboe.sf2
/bin/sleep 3
/usr/bin/amixer set Master 40%+ > /dev/null
/bin/sleep 2
FLUIDSYNTH=$(/usr/bin/aconnect -o -l | awk ‘/FLUID/{print $2.”0″}’)
/bin/sleep 2
#echo $FLUIDSYNTH
EWIUSB=$(/usr/bin/aconnect -o -l | awk ‘/client/’ | awk ‘/EWI-USB/{print $2.”0″}’)
/bin/sleep 2
/usr/bin/aconnect $EWIUSB $FLUIDSYNTH
/bin/sleep 2
fi
else
#a) synth hardware (roland)
USBMIDI=$(/usr/bin/aconnect -o -l | awk ‘/client/’ | awk ‘/USB2.0/{print $2.”0″}’)
/usr/bin/aconnect EWI-USB:0 $USBMIDI
/bin/sleep 2
fi

Más información, aunque en catalán, en la wiki

]]>
http://www.joanillo.org/?feed=rss2&p=732 1
RPIJERS: Raspberry Pi Internet Jazz European Radio Stations http://www.joanillo.org/?p=714 http://www.joanillo.org/?p=714#comments Thu, 03 Jan 2013 22:43:41 +0000 joanillo http://www.joanillo.org/?p=714 ...Read the Rest]]>
Quieres escuchar jazz todo el santo día? En Internet tienes bastante para escoger, por ejemplo, http://www.listenlive.eu/jazz.html. En este proyecto hemos indexado todas estas estaciones de radio para escucharlas de una forma simple y con una interfaz mínima. Y esto lo hemos conseguido con la Blackberry Pi. Sólo necesitamos alimentarla, enchufarla a un cable de red, conectarla a un amplificador, y un botón que nos sirve para arrancar el servicio mpd (Music Player Daemon) y para seleccionar hasta 40 canales.

Puedes descargarte de la wiki (http://wiki.joanillo.org/index.php/Raspberry_Pi:_Internet_Ràdio) el bash script i el fichero con la lista de todas las emisoras. Si quieres que el sistema funcione de forma totalmente desatendida tienes que hacer que el script arranque en el inicio del sistema. La electrónica necesaria es mínima, creo que en el video quedan claras las conexiones, y si no en la wiki hay más información (aunque en catalán).

Os deseo un feliz 2013 y mucho jazz! Aquí va el vídeo:

]]>
http://www.joanillo.org/?feed=rss2&p=714 0
Wacom Theremin http://www.joanillo.org/?p=569 http://www.joanillo.org/?p=569#comments Thu, 09 Feb 2012 12:10:25 +0000 joanillo http://www.joanillo.org/?p=569 ...Read the Rest]]> El Theremin es un instrumento inventado por Léon Theremin en 1918 que tiene la particularidad de que se toca con los gestos de las manos. Está considerado uno de los primeros instrumentos electrónicos, y su sonido sintético y característico se ha utilizado muchas veces para películas de ciencia ficción y efectos especiales.

En este proyecto se implementa la manera de tocar y el sonido de un theremin con un controlador poco convencional: una tableta gráfica Wacom de las que utilizan los diseñadores gráficos. Si sabes cómo se toca un theremin la implementación es evidente:  con el eje x cambias el tono (Pitch Bend en terminología MIDI; con el eje y cambias el volumen; y claro: apretar el lápiz produce el sonido de la nota (mensaje MIDI NoteOn) y levantar el lápiz apaga la nota (NoteOff). Además de la posición XY, la tecnología wacom proporciona otros sensores que dan información como es la presión y la inclinación. Aunque no se ha hecho en este proyecto, se podría haber asociado la presión y la inclinación a otros mensajes MIDI CC (Continuous Controller) com pueden ser la modulación (efecto de vibrato).

Se ha utilizado un sintetizador Roland JV-2080 para producir un sonido de Theremin, aunque no estoy muy contento con el resultado obtenido. Lo bueno del JV-2080 es que tiene un espacio de memoria para guardar los patch de usuari y muchos parámetros, osciladores y efectos para poder ir jugando si tienes suficiente tiempo. Y lo que es mejor del JV-2080 es que puedes configurar el pitch bend (variación del tono) con una amplitud muy grande, también configurable, cosa que normalmente no pasa en otros sintes (sobretodo los sintes software).

Una de las cosas que me ha gustado más del proyecto es la integración de la aplicación desarrollada en lenguaje C (hay un enlace para descargar el código más abajo) con Gimp (el editor de imágenes y fotos de referencia en el mundo Linux). Esto da pie a múltiples posibilidades y ideas para hacer proyectos que combinen Gimp con efectos sonoros y interactivos.

Evidentmente, la idea no es nueva, hay otra gente que ha hecho Theremins con wacom’s y otros controladores como la Wii, pero en el proyecto 50 Ways to Play Una Plata d’Enciam no podía faltar un Wacom Theremin hecho exclusivamente con herramientas de Código Libre.

]]>
http://www.joanillo.org/?feed=rss2&p=569 0