Arxiu de la categoria: linuxaudio

diatonicbaixos v1.0: ajuda per als baixos de l’acordió diatònic

La Maria està estudiant l’acordió diatònic (i de passada jo també m’hi he enganxat). Una de les coses que sempre he trobat difícils és la coordinació de la mà dreta (amb la que toquem la melodia) i la mà esquerra (els baixos). Igual que passa amb el piano, que sempre m’ha semblat difícil tocar amb les dues mans alhora.

Aquí va un petit programa per ajudar a posar la mà esquerra en l’acordió diatònic. Mentre sona la melodia (es necessita el fitxer midi de la melodia), per pantalla es mostren les posicions dels baixos que s’han de tocar (en l’acordió diatònic hi ha 8 botons per als baixos/acords, que sonen diferent si obres o tanques la manxa). Quan es mostra un botó en color verd vol dir que s’ha de tancar la manxa; en color vermell s’ha d’obrir.

Per a la interfície gràfica s’ha utilitzat la llibreria ncurses, que és la primera vegada que programava en aquesta llibreria (i estic molt content del resultat obtingut). El programa és un client de JACK (el servidor d’audio per a Linux, www.jackaudio.org), i de fet és el time master, és a dir, controla el transport. Per utilitzar l’aplicatiu el millor és llençar el script bash que es proporciona, diatonicbaixos.sh, on es posa de manifest tota la cadena de programes que s’utilitzen.

Primer de tot canvio el tempo desitjat al fitxer midi mitjançant el script change_tempo_smf (es proporciona el codi font). Tot seguit s’arrenca el servidor JACK, i el sintetitzador fluidsynth, que és el que farà sonar la melodia. Després arrenquem la utilitat jack-smf-player, que s’encarregarà de fer sonar la melodia. També arrenco el klick, que és un metrònom client de JACK. Finalment ja puc llençar la meva aplicació, diatonicbaixos. El resultat, com es veu en el video, és que sona la melodia mentre es van mostrant les posicions dels baixos. Es pot canviar el tempo, es pot habilitar o no el metrònom, i hi ha un altre paràmetre amb el qual es mostra el següent baix que s’haurà de pitjar.

Per fer-se una idea del funcionament del programa el millor és veure el video:

Descarrega diatonicbaixos v1.0

50 ways… #6. Editors de partitures: Lilypond

En l’anterior post vam crear un soundfont per a acordió diatònic, castagnari.sf2, i amb els seus sons vam tocar la meva canço preferida: Una Plata d’Enciam, dins del projecte 50 ways to play Una Plata d’Enciam. Anem a veure ara com amb l’editor de partitures Lilypond podem crear una partitura molt correcta, que respongui als reptes que ens planteja la notació per a acordió. El que aquí farem en aquest post no és res de l’altre món. En el blog amic Scores of Beauty, http://lilypondblog.org/, porten a l’extrem les possibilitats de lilypond.

Bàsicament el que volem és visualitzar correctament la melodia, els acords, i com s’han de tocar els baixos/acords de la mà esquerra (és a dir, l’acompanyament). La idea és crear unes partitures didàctiques que ajudin a la meva filla a posar els dits de la mà esquerra.

El primer que farem és crear la melodia, posarem a sobre de les notes els acords de la forma habitual, i mostrarem quan s’ha de tocar un baix (b) i un acord (a) amb la mà esquerra. Això últim ho farem amb \\lyrics, com si fos la lletra d’una cançó.

\\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’
<<
\ew ChordNames {
\t\\set chordChanges = ##t
\t\\baixosnotacio
}

\ew Staff = “veu 1”
{
\\clef treble
\\key c \\major
\\time 2/4
\\tempo 4=80

\te8 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
\te8 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 {
\tb _ a _ b _ a b _ _ a _ b _ _ a _ b _ a _
\tb _ a _ b _ a b _ _ a _ b _ _ a _ b _ a _
\tb _ a _ b _ a b _ _ a _ b _ _ a _ b _ a _
\tb _ a _ b _ a b _ _ a _ b _ _ a _ b _ a _
}

>>

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

Ara anem a posar els baixos. Si ho fem de la forma habitual funciona, però queda una partitura que no és útil per a llegir. A més a més no és correcta, doncs com s’ha explicat en l’anterior post l’associació entre els acords CM, DM,… i les notes midi 24, 26,… va ser una decisió arbitrària. Quedaria de la següent 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 =
<<
\ew ChordNames {
\t\\set chordChanges = ##t
\t\\baixosnotacio
}

\\relative c’
\ew Staff = “veu 1”
{
\\clef treble
\\key c \\major
\\time 2/4
\\tempo 4=80
\t%notes amb valors relatius
\te8 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
\te8 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 {
\tb _ a _ b _ a b _ _ a _ b _ _ a _ b _ a _
\tb _ a _ b _ a b _ _ a _ b _ _ a _ b _ a _
\tb _ a _ b _ a b _ _ a _ b _ _ a _ b _ a _
\tb _ a _ b _ a b _ _ a _ b _ _ a _ b _ a _
}

\ew Staff = “baixosnotes”
{
\\key c \\major
\t%notes amb valors absoluts
\tc,8. r16 c,,8 r f,8. r16 c,,8 r f,8. r16 g,,8 r g,8. r16 c,,8 r
\tc,8. r16 c,,8 r f’8. r16 c,,8 r f,8. r16 g,,8 r g,8. r16 c,,8 r
\tc,8. r16 c,,8 r f,8. r16 c,,8 r f,8. r16 g,,8 r g,8. r16 c,,8 r
\tc,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í és important remarcar que s’ha utilitzat la notació relativa, i la notació absoluta per als baixos, que simplifica molt escriure l’alternança entre baixos i acords. Aquesta partitura no és correcta per a imprimir, però el fitxer midi que produeix sí que és correcte. Hi ha una manera de solucionar-ho? Sí. Es pot definir un \\score per a ser imprès, i un altre \\score per a generar el fitxer midi. El resultat queda de la següent manera: la partitura per a imprimir és correcta (no apareixen les notes dels baixos, només les posicions on hem de posar els dits de la mà esquerra); i el fitxer midi resultant també és correcte:

\\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’
<<
\ew ChordNames {
\t\\set chordChanges = ##t
\t\\baixosnotacio
}

\ew Staff = “veu 1”
{
\\clef treble
\\key c \\major
\\time 2/4
\\tempo 4=80
\te8 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
\te8 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 {
\tb _ a _ b _ a b _ _ a _ b _ _ a _ b _ a _
\tb _ a _ b _ a b _ _ a _ b _ _ a _ b _ a _
\tb _ a _ b _ a b _ _ a _ b _ _ a _ b _ a _
\tb _ a _ b _ a b _ _ a _ b _ _ a _ b _ a _
}
>>

fitxermidi =
<<
\\relative c’
\ew Staff = “veu 1”
{
\\clef treble
\\key c \\major
\\time 2/4
\\tempo 4=80
\t%notes amb valors relatius
\te8 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
\te8 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
}

\ew Staff = “baixosnotes”
{
\\key c \\major
\t%notes amb valors absoluts
\tc,8. r16 c,,8 r f,8. r16 c,,8 r f,8. r16 g,,8 r g,8. r16 c,,8 r
\tc,8. r16 c,,8 r f’8. r16 c,,8 r f,8. r16 g,,8 r g,8. r16 c,,8 r
\tc,8. r16 c,,8 r f,8. r16 c,,8 r f,8. r16 g,,8 r g,8. r16 c,,8 r
\tc,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 { }
}

Finalment podem escoltar la cançó Una Plata d’Enciam com quedaria amb acordió diatònic:

Una Plata d’Enciam by joanillo

Referències:

50 ways… #5. Com fer un soundfont per a acordió

La meva filla està aprenent a tocar l’acordió diatònic. Es tracta d’un acordió de botons de la marca Castagnari model Studio, amb dues files de botons a la mà dreta (afinades en Sol i Do), i els 8 botons de la mà esquerra són els baixos, dividits en 4 baixos i 4 acords. Aquest és el tipus d’acordions que sonaven en les festes majors dels petits pobles del Pirineu. Quan encara no hi havia carreteres per arribar a aquests pobles, en el segle XIX i fins entrat el segle XX, els músics havien de pujar als pobles a peu o a mula. Per tant era necessari instruments transportables. Moltes vegades un acordió i un violí animaven el ball de la plaça del poble.

En aquesta ocasió, ja que disposo d’un instrument nou per mi, vull fer la pràctica de crear un soundfont des del principi, i d’aquesta manera podré utilitzar el so d’aquest instrument en diferents projectes. Evidentment, s’ha de començar mostrejant totes les notes. Per fer-ho s’utiltizarà un micròfon d’una qualitat òptima, intentant que no hi hagi sorolls de fons. Es gravarà a un volum adequat, notes llargues, i sense produir saturació, en un sol canal. Les mostres es van gravant de forma ordenada i utiltizant el nom del fitxer adequat de manera que no hi hagi confusió. Per gravar les mostres he utilitzat un Ubuntu 12.04 32 bits, interfície Edirol UA-25EX i un microfon Beyerdynamic TG I52d. S’ha utiltizat la següent comanda:

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

A l’hora de fer la gravació tindrem molt de compte amb els baixos i els acords, que són botons especials. Un cop tenim totes les mostres, amb el Audacity editem els fitxers d’ona. Agafem una part significativa de la mostra samplejada, intentant que l’envolvent sigui periòdica, i evidentment que no agafi els extrems del fitxer d’ona. Ens assegurem de què la mostra no té saturació, i amplifiquem la mostra a un nivell raonable, de manera que totes les mostres tinguin un volum similar. El resultat de les mostres és el següent:

Samples Accordion Castagnari Studio by joanillo

Samples Accordion Castagnari Studio (Bass and chords) by joanillo

Aleshores ja podem començar a utiltizar el Polyphone, que serà l’entorn gràfic que s’utilitzarà per construir el soundfont. El primer que farem és importar totes les mostres, i diem quina és la nota arrel de cada nota, de manera que ja li estem assignant una freqüència. Aleshores creem un instrument nou (per ex Accordion), que serà l’únic instrument que contindrà aquest soundfont. Ara és quan hem d’associar cada mostra a una nota midi de l’instrument que estem editant. Per exemple, per a la mostra accordion_C4.wav ficarem:

    \t

  • root key = 60
  • \t

  • key range = 60-60
  • \t

  • attack = 0,2s
  • \t

  • release = 0,2 s

Les notes dels baixos que es fan amb la mà esquerra es corresponen a les següents notes midi:

    \t

  • Baix C = 36 (C2)
  • \t

  • Baix D = 38 (D2)
  • \t

  • Baix E = 40 (E2)
  • \t

  • Baix F = 41 (F2)
  • \t

  • Baix G = 43 (G2)
  • \t

  • Baix A = 45 (A2)

I un cas especial són els acords que es fan amb la mà esquerra, que s’associen per conveni a les següents notes midi.

    \t

  • Acord CM = 24 (C1)
  • \t

  • Acord DM = 26 (D1)
  • \t

  • Acord EM = 28 (E1)
  • \t

  • Acord FM = 29 (F1)
  • \t

  • Acord GM = 31 (G1)
  • \t

  • Acord Am = 33 (A1)

I és important recalcar que aquesta associació és un conveni. Quan toqui la nota midi 24 es dispararà el so samplejat corresponent a l’acord CM.

Per als baixos i acords s’ha fixat els valors d’attack i release a 0,6s.

Per acabar de definir el soundfont hem de crear un nou preset associat a aquest instrument, de manera que el so d’acordió el tindrem en el banc=0 i canal=0 (000:000). Finalment ja puc guardar el soundfont, castagnari.sf2, i ja el puc testejar, en aquest cas amb fluidsynth, fent sonar la meva cançó preferida: Una Plata d’Enciam, tocada a la manera com es faria amb l’acompanyament de diatònic: la melodia amb la mà dreta, i alternant els baixos i acords amb la mà esquerra.

/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 següent post explicarem com s’ha generat el fitxer midi que acabem de tocar a partir de l’editor de partitures lilypond. Tenia ganes de fer un post sobre lilypond, i concretament ara que la meva filla està aprenent el diatònic, com es pot fer servir el lilypond per a la notació d’acordió.

Referències:

Solució portàtil per a un saxo electrònic: Raspberry PI + soft o hard sinte

EWI-USB and Raspberry Pi

EWI-USB and Raspberry Pi

Per tocar el controlador de vent EWI-USB normalment em connecto al portàtil. Faig córrer el fluidsynth o qualsevol altre soft synth. Per tant, la solució per practicar és EWI-USB + portàtil + auriculars. Existeix una solució més portable i autònoma? Definitivament sí utilitzant la Raspberry Pi, buscant una solució purament consola i totalment desatesa: enxufar i tocar. En aquesta ocasió no utilitzo JACK, és una solució purament ALSA. Es tracta d’instal·lar el fluidsynth, algun soundfont que soni bé i que no pesi massa, configurar l’usuari pi amb prioritat realtime, i desinstal·lar qualsevol servei que no hagi de fer servir.

Amb un script a /etc/udev/rules.d/ewiusb.rules aconseguim que en el moment que connecto el EWI-USB pel port USB s’executin les comandes que em permetran tocar automàticament: executar fluidsynth i connectar la sortida midi del EWI-USB a l’entrada midi del fluidsynth. He tingut bastants problemes per tal de no tenir latència, però el script que es dóna més avall a mi em funciona bé sense latència.

A més, amb una mica d’electrònica senzilla i utilitzant els pins GPIO es podria canviar fàcilment el programa midi i poder triar entre diferents instruments: saxo, midi, flauta,…

Una altra possibilitat, com es veu a la fotografia, és utilitzar un sinte hardware com ara el Roland JV-1010. Com que l’entrada del JV-1010 és purament midi es necessita un cable conversor USB2MIDI (per ex, http://www.amazon.com/dp/B0017H4EBG), que mostra els seus ports a ALSA. Amb aquesta solució no has de témer per la latència, és una magnífica experiència d’usuari, i podem triar entre centenars de sons.

/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ó a la wiki

RPIJERS: Raspberry Pi Internet Jazz European Radio Stations


Vols escoltar jazz tot el sant dia? A Internet tens bastant per escollir, per exemple, http://www.listenlive.eu/jazz.html. En aquest projecte hem indexat totes aquestes estacions de radio per escoltar-les d’una forma simple i amb una interfície mínima. I això ho hem aconseguit amb la Blackberry Pi. Només necessitem alimentar-la, endollar-la a un cable de xarxa, connectar-la a un amplificador, i un botó que ens serveix per arrencar el servei mpd (Music Player Daemon) i per seleccionar fins a 40 canals.

Pots descarregar-te de la wiki (http://wiki.joanillo.org/index.php/Raspberry_Pi:_Internet_Ràdio) el bash script i el fitxer amb la llista de totes les emissores. Si vols que el sistema funcioni de forma totalment desatesa has de fer que el script arrenqui en l’inici del sistema. L’electrònica necessària és mínima, crec que en el video queden clares les connexions, i si no a la wiki hi ha més informació (encara que en català).

Us desitjo un feliç 2013 i molt de jazz! Aquí va el vídeo:

Wacom Theremin

El Theremin és un instrument inventat per Léon Theremin el 1918 que té la particularitat de què es toca amb els gestos de les mans. Està considerat un dels primers instruments electrònics, i el seu so sintètic i característic s’ha utilitzat moltes vegades per a pel·lícules de ciència ficció i efectes especials.

En aquest projecte s’implementa la manera de tocar i el so d’un theremin amb un controlador poc convencional: una tauleta gràfica Wacom de les que fan servir els dissenyadors gràfics. Si saps com es toca un theremin la implementació és evident: amb l’eix x canvies el to (Pitch Bend amb terminologia MIDI; amb l’eix y canvies el volum; i clar: apretar el llapis produeix el so de la nota (missatge MIDI NoteOn) i aixecar el llapis apaga la nota (NoteOff). A més de la posició XY, la tecnologia wacom proporciona altres sensors que donen informació com és la pressió i la inclinació. Encara que no s’ha fet en aquest projecte, es podria haver associat la pressió i la inclinació a altres missatges MIDI CC (Continuous Controller) com ara la modulació (efecte de vibrato).

S’ha utilitzat un sintetitzador Roland JV-2080 per tal de produir un so de Theremin, tot i que no estic molt content amb el resultat obtingut. Allò bo del JV-2080 és que té un espai de memòria per guardar els patch d’usuari i motls paràmetres, oscil·ladors i efectes per poder anar jugant si tens suficient temps. I el que és millor del JV-2080 és que pots configurar el pitch bend (variació del to) amb una amplitud molt gran, també configurable, cosa que normalment no passa en altres sintes (sobretot els sintes software).

Una de les coses que m’ha agradat més del projecte és la integració de l’aplicació desenvolupada amb llenguatge C (hi ha l’enllaç per descarregar el codi més avall) amb Gimp (l’editor d’imatges i fotos de referència en el món Linux). Això dóna peu a múltiples possibilitats i idees per fer projectes que combinin Gimp amb efectes sonors i interactius.

Evidentment, la idea no és nova, hi ha altra gent que ha fet Theremins amb wacom’s i altres controladors com la Wii, però en el projecte 50 Ways to Play Una Plata d’Enciam no podia faltar un Wacom Theremin fet exclusivament amb eines de Codi Lliure.