Consoles de la infantesa: Temco (Pong)

Aquest últim Nadal vaig treure d’un calaix el joc del Pong que encara conservem des que érem petits. Es tracta del model Temco T-800 que els meus pares van portar d’Andorra, devia ser a finals dels anys 70, no puc recordar exactament l’any. En aquella època vam disfrutar molt amb el joc, era una autèntica novetat. Connectavem la consola (en aquella època no existia la paraula consola) a la tele en blanc i negre (les teles només eren en blanc i negre), i procedíem al ritual de la sintonització (per cercar el canal en què la visió era més nítida, sense soroll).

Per als meus germans i jo aquell joc, que vam jugar bàsicament a Bagà, era el Temco. No sabíem el que era el Pong. El PONG (http://ca.wikipedia.org/wiki/PONG) és un dels primers videojocs comercials i domèstics, que va popularitzar Atari allà per l’any 72. Poc més tard van sortir altres versions i llicències, com ara el Temco, que incorporava a part del Tennis, el joc del Hockey (el que pots veure a la foto) i del Squash.

A casa ja no disposem de tele amb entrada d’antena analògica, o sigui que vam haver d’anar a casa de la veïna per tal de què ens en deixés una. Per a la Maria i el Pere això de sintonitzar la tele i cercar el canal va ser una novetat. Val a dir que van xal·lar d’allò més jugant al Temco, i que de seguida li van agafar el tranquillo. Jugar al Temco va ser una de les activitats amb què vam amenitzar la nit de Cap d’Any. Vam fer una petita competició: quarts de final, semifinals i final. La final la vam jugar el Jan Santandreu i jo, que finalment va guanyar ell. A veure si puc organitzar un torneig més seriós de Temco amb amics i nebots.

Un dels propòsits per a aquest any 2015 serà fer un moble que incorpori una tele de tubo, i programar un emulador el més fidedigne possible al Temco. Serà el meu petit homenatge a aquestes consoles primitives. En propers posts hi haurà més informació al respecte. De moment he d’aconseguir una petita tele de tubo de 14 polzades. La tauleta ja la tinc, una tauleta rodona on hauré de fer un forat quadrat al mig per incorporar la tele, i tallar un vidre rodó. Amb dos potenciòmetres i un botó hauria de ser suficient per controlar el joc. El sistema haurà de tenir un frontend per poder escollir els quatre jocs i les diferents opcions, i des del frontend llençar qualsevol dels quatre jocs.

Frozen. Gravació a casa de la Maria i les seves amigues


El dimarts passat van venir la Maria i tres de les seves amigues (la Laia, l’Adela i la Martina) a dinar al migdia, per tal de gravar un parell de temes de Frozen. Realment aquestes nenes estan posseïdes per Frozen, la Maria ja ha vist la peli 5 vegades. La qüestió és que amb dues hores i mitja havíem de fer molt feina, a més de dinar. El dinar ho vam solucionar ràpid, arròs a la cubana per 5 i rapidets que hi ha molta feina.

Mans a l’obra, una mica d’escalfament. Jo ja ho tenia tot preparat: dos micros per a les quatre que entraven en una pista de l’Ardour. En altres dues pistes havia gravat prèviament les cançons del Vol Volar (Let it Go) i Per primer cop en la Vida (For the First Time in Forever), que són les cançons que havíem planificat de gravar (bé, en principi el Vol Volar, la segona era de reserva).

Vam fer vàries tomes del Let it Go, però només dues tomes del Per Primer Cop… El resultat és prou satisfactori tenint en compte que són nenes de 9 anys. A millorar realment les entrades (que té solució si es practica), i l’afinació (més difícil de solucionar). A més, el fet de què estiguessin emocionades amb l’experiència no ajudava gens.

Al final vaig escollir una de les tomes. Per exportar el audio sense matar-m’hi massa he equilibrat la pista instrumental amb la pista de les veus, i he aplicat a les veus una mica de compressió, chorus i reverb, tot de forma moderada, i ja tinc el mp3. Tot això fet amb Ardour com a DAW multipista. (Linux, of course).

Pel tema del video vaig cometre un fallo. Em vaig acontentar amb gravar un sol video, pensant que l’ajuntaria amb la versió bona de l’àudio, i no. En els dos videos que es mostren es veu clarament una falta de sincronia entre el video i les veus. A part de la falta de sincronia en les entrades, es veu irreal. Per la propera vegada gravaré en video totes les tomes, i sempre seré a temps d’esborrar els videos descartats.

En aquestes gravacions allò ideal és utilitzar cascos per totes les participants. Necessitaria una cosa similar a això. Com que no en disposo d’amplificador d’auriculars, s’ha utilitzat un monitor de camp proper, intentant que el so no entri pels micròfons. Això s’aconsegueix controlant la distància, el volum i que el monitor quedi al darrera dels micros. La part de senyal que ha entrat als micros és mínima, tot i que no nul·la.

Així doncs, el material que s’ha utilitzat és:

  • Ordinador Linux Ubuntu 12.04 amb JACK i Ardour
  • Targeta de so externa, Edirol UA25EX
  • Mesclador de 4 entrades (de les quals només se n’han utilitzat dues)
  • 2 micròfons
  • Monitor de camp proper

El resultat: dos videos que s’han penjat al Youtube. Els ha encantat veure com el seu video es barrejava amb les animacions de les protagonistes de Frozen: l’Elsa i l’Anna.

Màquina de marcianitos. Projecte Pimame/PiPlay (Arcade bartop cabinet)

Un dels records de la meva infància eren les màquines de marcianitos que hi havia en els bars. De quan en quan aconseguíem 25 pessetes i podíem jugar a una partida. Aleshores, quan tenia 12 anys, no sabia ni què eren els jocs Arcade… per nosaltres eren les màquines de marcianitos, i prou. Amb el temps, evidentment, els jocs es van anar sofisticant en tots els nivells: gràfics, so,… Paral·lelament, a casa jugàvem al Spectrum, carregant els jocs des de les cintes de cassette. I alehores va arribar l’era del PC domèstic que ho va canviar tot.

Per als que som de la meva generació (40 i pico), les màquines Arcade dels bars representen tot un món de records i vivències associats a un món en què l’electrònica de consum ho estava canviant tot (rellotges digitals, cotxes teledirigits,…).

Han passat molts anys, el món dels videojocs ha evolucionat moltíssim, és una indústria tan potent com el cinema. Cada vegada la gent veu menys televisió i va menys al cine (cosa impensable fa temps), i la societat en què vivim es caracteritza per una gran varietat de dispositius connectats a Internet, amb una gran i diversa oferta d’oci.

Una sèrie de gent a l’entorn del projecte MAME (Multi Arcade Machine Emulator,) ha emulat les ROMs originals d’aquelles màquines Arcade a diverses plataformes, concretament al PC. Una ROM és el xip on estava el software (firmware) que feia córrer la màquina Arcade. Aquest software en codi màquina es pot traduir a línies de codi en altres plataformes i llenguatges de programació. Això és el que fan els emuladors. Per tant, ara tothom pot jugar als jocs dels anys ’70, ’80 i ’90 al seu PC. I així ho vaig fer fa uns tres anys des de la meva màquina Linux, quan vaig descobrir el projecte MAME i ja vaig pensar aleshores a construir una màquina Arcade.

En aquests tres anys també han passat moltes coses, i concretament l’eclosió del hardware lliure representats per dos projectes paradigmàtics com Arduino i la Raspberry Pi (entre d’altres). I el bo del cas és que el projecte MAME s’ha portat i optimitzat a la plataforma de la Raspberry Pi, amb totes les avantatges que això suposa de cara construir-se un moble Arcade (pressupost, espai, consum,…). Aquesta feina s’ha fet gràcies a Shea Silverman i al projecte PiMAME, que ara s’anomena PiPlay.

Així doncs aquest curs passat em vaig posar les mans a l’obra i per l’estiu ja tenia a punt el meu moble bartop amb més de 1000 jocs classificats per categories (plataforma, galeria, shooter, puzzle, fighting, …) i jugabilitat (preferits, molt bons, bons, dolents). El projecte és molt variat, que inclou entre d’altres:

  • construcció del moble (tallar, pulir, pintar,…)
  • configuració de la Raspberry Pi i de MAME
  • programació d’un front-end propi (veure enllaç per a més detalls)
  • interfície joystick-USB (veure enllaç per a més detalls). Tot i que funciona correctament aquesta solució, s’ha d’explorar la possibilitat de configurar el joystick i els 6 botons només amb els pins GPIO de la RPi. El resultat seria més senzill i ràpid d’implementar.
  • font d’alimentació 12V-5V
  • metacril·lat, adhesius
  • matriu de LEDs per a la markee
  • pantalla plana, conversor HDMI-VGA
  • amplificador de so. La sortida de so en la Raspberry Pi no és massa bona, i això es nota a l’hora d’amplificar el so. En aquest aspecte falten més proves a veure si hi ha possibilitat d’obtenir un so més net.

Després de moltes hores de feina, calculo que el pressupost és d’uns 250 euros. La bona notícia és que hi ha marge per automatitzar/millorar tot el procés, per exemple utilitzant una màquina CNC per tallar les fustes, o construir mobles bartop de 3 en 3, en vistes a una possible comercialització.

Aquí pots veure el video del moble acabat.

Per a més informació:

Script per automatitzar la creació d’anaglifs 3D

Crec que no havia fet cap post en aquest blog sobre la meva col·lecció fotogràfica d’insectes. Aquesta col·lecció està disponible online a http://arthropoda.joanillo.org. Fa més de dos anys i mig que està pública a la xarxa, i en aquests moments consta d’unes 2000 fotos d’uns 350 insectes identificats (és a dir, quasi res). Entre les diferents opcions que hi ha a la pàgina web hi ha la possibilitat de visualitzar alguns exemplars amb 3 dimensions (3D), mitjançant dos dels mètodes comuns: ulls creuats amb parells estereogràfics, i anaglifs.

Cryptocephalus aureolusEl mètode dels ulls creuats és dels més populars perquè no requreix de cap mena d’ulleres ni estris. Consisteix en ficar una al costat de l’altres dues fotos que formen un parell estereogràfic. A l’esquerra posem la foto que es correspon a l’ull dret; i a la dreta la foto que es correspon a l’ull esquerre. La tècnica consisteix en visualitzar la pantalla a mig metre aproximadament, mirar al punt mig de les dues fotos, enfocar a un punt com si estigués darrera de la pantalla, i deixar que les dues imatges s’ajuntin soles. Aleshores, de forma màgica, apareix la foto amb tota la seva profunditat. Si és la primera vegada que ho proves pot ser una mica difícil, però val la pena provar-ho. Intenta-ho amb el parell estereogràfic que es mostra, que es correspon a un escarabat de la família Chrysomelidae, concretament un Cryptocephalus aureolus.

Cryptocephalus aureolusUn altre mètode popular de visualitzar imatges 3D són els anaglifs, en els que s’han d’utilitzar les ulleres cyan-vermell (o verd-vermell). Consisteix en separar les dues imatges en les seves capes RGB, i eliminar per a la imatge esquerra la capa vermella; i per a la imatge dreta la capa cyan. Això es pot fer de forma manual amb els programes més populars d’edició de fotos com ara Gimp o Photoshop. Finalment tornar a ajuntar les imatges en una de sola, i visualitzar-la amb unes ulleres de colors. La visualització 3D en aquest cas és molt fàcil, només cal posar-se les ulleres. L’inconvenient és que el resultat final ha perdut qualitat cromàtica.

En aquest post el que fem és presentar i explicar el script que s’utilitza per automatitzar la creació dels anaglifs, tal com s’utilitza a arthropoda.joanillo.org. Has de tenir present que aquest script està pensat per a sistemes Linux i està programat en bash script. No puc donar suport a d’altres sistemes operatius, però la idea és plenament traslladable. L’eina principal que s’utilitza és la utilitat convert que es troba dins el paquet imagemagick. convert és una utilitat en línia de comanda per manipular imatges, i que et permet accedir a les capes RGB. Per instal·lar aquesta utilitat:

$ sudo apt-get install imagemagick

Si volem extreure la capa vermella d’una foto farem:

/usr/bin/convert left_pic.jpg -separate -channel r left_pic_separate_R.JPG

i si volem combinar dues fotos farem:

/usr/bin/convert pic1.jpg pic2.jpg -combine pic_combine.jpg

Amb tot això ja podem posar tot el script, que de fet és molt curtet:

#!/bin/bash
#two arguments: left pic and right pic
# ./anaglyph_creation.sh 130609_091940.JPG 130609_091944.JPG

pics_or=./;
pics_anaglyphs=./anaglyph/;
pics_temp=./temp/;

echo $1;
echo $2;

basename=`basename "$1"`;
file_without_ext=${basename:0:13}
file_anaglyph=${file_without_ext}_ana.JPG

#anaglyph creation 
#1.Separate red channel for the left pic, and cyan for the right pic:
/usr/bin/convert $pics_or$1 -separate -channel r ${pics_temp}separate_R.JPG
/usr/bin/convert $pics_or$2 -separate -delete -3 ${pics_temp}separate_GB_%d.JPG #elimina el vermell
#2. Combine modified left and right pics in a new one:
/usr/bin/convert ${pics_temp}separate_R.JPG ${pics_temp}separate_GB_0.JPG ${pics_temp}separate_GB_1.JPG -set colorspace RGB -combine $pics_anaglyphs$file_anaglyph

rm pics_temp/*

Enllaços:
-Parells estereogràfics: http://arthropoda.joanillo.org/stereo.php
-Anaglifs: http://arthropoda.joanillo.org/anagliphs.php
-wikipedia: http://en.wikipedia.org/wiki/Anaglyph_3D

Joanillo Arcade Frontend. Un simple frontend per a PiMAME/PiPLAY

Joanillo Arcade FrontendAl final he decidit fer-me el meu propi front-end per a la màquina arcade que m’estic construïnt, basada en PiMAME / PiPLAY. La història és molt llarga, i ara no és temps d’explicar-la. El cas és que AdvMENU, que és el front-end proposat en el projecte PiMAME, a mi no em funciona amb la meva configuració de tecles i la interfície de joystick que em vaig fabricar en el meu dia, basat en V-USB. El cas és que no sóc la primera persona a la qual li és impossible la configuració correcta dels botons. Resumint, una qüestió que hauria de ser fàcil de resoldre es converteix en un problema irresoluble. Després de desestimar AdvMENU (i després de compilar des de les fonts la versió 2.7 i de modificar i modificar el fitxer advmenu.rc) vaig considerar la possibilitat d’instal·lar un altre front-end per a emuladors Arcade que es pogués instal·lar bé en la Raspberry Pi. Els requisits havien de ser que funcionés sota Linux/Raspberry Pi, i que no necessités el servidor X de la RPi (la qual cosa desestima el popular front-end Wahcade). Després d’analitzar les diferents solucions, la notícia dolenta va ser que vaig arribar a la conclusió de què hauria de programar el meu propi front-end… la qual cosa esdevé al final una notícia bona, doncs per fi tindria un front-end simple i eficient, amb només les funcionalitats que necessito, que funcioni amb la meva configuració dels botons, i que s’adapti al disseny i filtres de ROMs del meu gust.

El resultat és un codi C++ de 700 línies, que utiltiza SDL de forma nadiua, igual de bé en el portàtil que en la Raspberry Pi, on no necessita arrencar les X. Es pot navegar de forma fàcil per la classificació dels jocs (All Favourites, Bad, Good, Very good, Prefered), i per les categories dels jocs (Platform, Shooter, Gallery,…). El fitxer de configuració és molt simple, resources/romlist.txt, amb una línia per cada ROM. S’ha programat a raig, bastant ràpid, segur que hi ha coses a millorar, però la llista TODO ha quedat realment molt petita. Aquest emulador només està pensat per als jocs de MAME (mame4all), per tant algú que el vulgui utiltizar trobarà a faltar canviar d’emulador. De totes maneres, seria fàcil fer l’adaptació i disposar d’un botó per al canvi d’emulador.

Tanmateix, el bartop que estic construint es basa en la simplicitat (un sol joystick i només sis botons, que estan mapejats a les tecles ‘0’,…, ‘5’). I aquesta simplicitat queda reflexada en el codi font. Això fa que llençar una ROM i tornar al front-end sigui molt ràpid (molt més ràpid que amb AdvMenu), amb una millor experiència d’usuari. També s’ha aconseguit una solució elegant per anar a la consola de Linux, o per apagar la Raspberry Pi de forma correcta abans d’apagar l’interruptor.

En resum, un front-end per a MAME molt simple però amb un disseny correcte, que no té ni de bon tros totes les opcions del projecte AdvMENU, però que tampoc es troben a faltar.

Pots descarregar-te el codi font de:
http://wiki.joanillo.org/index.php/Fitxer:Joanillo_arcade_frontend.zip

I aquí tens un video demostratiu de com funciona el front-end i de les seves opcions bàsiques:

Caseta de fusta

   

Aquesta és la caseta de fusta que he estat fent els últims 5 mesos. Vaig tenir la sort de trobar-me pels volts de Nadal bastanta fusta matxembrada, i me la vaig emportar tota a dalt el terrat. El temps em diria més tard que la quantitat de fusta que vaig arreplegar va ser quasi la que necessitava, només vaig haver de comprar uns pocs taulons més per acabar la teulada. Era una fusta de pi de bona qualitat, tot i que estava bruta i plena de claus.

El primer que vaig fer va ser portar l’electricitat a dalt el terrat: 30 metres de cable elèctric. A dalt vaig ficar 2 endolls a un extrem del terrat, i dos més a l’altre extrem.

Com es veu en les fotos, el terrat fa un queixal on s’ha ubicat la caseta, de manera que no es perd superfície útil del terrat. La primera feina va ser anivellar al terra, doncs com que és un terrat hi ha una inclinació al desaigüe. Vaig construir una estructura molt bàsica de gàbia, que definia les dimensions generals que tindria la caseta. Al final són 3,5m2 de superfície. Poca cosa, però tenint en compte el preu a que va el m2 a Barcelona, doncs ja puc estar content.

Un cop feta la gàbia, doncs ja es pot començar a ficar i clavar els taulons. Em va anar de perles la serra circular, que estrenava, i els dos tornavisos elèctrics de què disposava (sort que en tenia dos, doncs tots dos no em duraven tot un matí intens de treball). Al final van ser uns 700 visos. Primer vaig fer el terra, i després anar pujant les parets, deixant obertura per la porta i les dues finestretes.

Quan vaig acabar de pujar les parets, és el moment de cobrir la teulada. Vaig acabar les últimes fustes que em quedaven, o sigui que vaig haver de calcular la fusta que em faltaria. Per economitzar al màxim vaig trobar taulons de 3cm de gruix i 2 metres de llarg a 1 euro, tot un saldo, que es van haver de tallar transversalment, convertint-se amb dos taulos de 1,5cm. Una feinada.


A mida que anava cobrint la teulada s’havia de posar la tela asfàltica i fixar-la amb claus i amb soplete. Això dels claus va ser un error, doncs en la primera pluja vaig veure que hi havia goteres. I és que construir aquesta caseta ha sigut tot un exercici continu de prendre decisions, sovint encertades, a vegades no. Per tant, va caldre una nova capa de tela asfàltica per impermeabilitzar correctament la coberta.

Un cop acabada la teulada, es va posar la porta i les finestres. Bernissar tota la superfície exterior, i mirar que les juntes del terra quedessin el millor possible, cosa difícil donat que el matxembrat original estava en mal estat. Aleshores es va portar l’electricitat dins de la caseta, es va fer tota una anella d’estanteries, i finalment dues taules fetes a mida i amb fusta reciclada trobada al carrer.

Abans de donar per inaugurada la caseta calia fer una pintada a tot el terrat i deixar-lo endreçat, doncs estava en un estat realment deplorable. A més, netejar i fregar molt el terra. Feines dures tenint en compte que de cop i volta ha vingut la calor de l’estiu. Es troba molt a faltar, ara i en el futur, tenir aigua corrent a dalt el terrat. Potser és una cosa que es podrà parlar si es parla amb els veïns.

Ara que ja es pot donar per acabada la caseta vam fer la inauguració com cal amb la Rita, la Maria i el Pere, amb un soparet a la fresca (seient a terra del terrat, la caseta no dóna per tant!).

Resumint, la despesa de la caseta han sigut uns 250e, tenint en compte que la majoria del material que s’ha utiltizat són fustes i reciclats. I moltes hores de feina. Un xollo tenint en compte el pressupost de fer una caseta amb fusta. A més, ara que apreta la calor es nota que la fusta aïlla molt bé, al contrari d’altres solucions comercials com casetes de reïna o de planxa de ferro. I que s’hi farà a dins? Doncs bàsicament la idea és ficar a dins la caseta una màquina CNC per fer treballs amb fusta, metacril·lat i fer cirucuits impresos, però això serà una altra història. I a més poder treballar a dalt en el terrat amb les feines brutes que no es poden fer a casa o en una oficina.

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