Arxiu de la categoria: GNU/Linux

Extraescolar de Robòtica al INS Jaume Balmes

Aquest curs hem estat fent una extraescolar de Robòtica al IES Jaume Balmes. En el primer trimestre es va veure programació amb Python i RUR-PLE. I aquest segon trimestre hem estat treballant amb Arduino, programació amb el robot Zowi, i impressora 3D. En acabar el curs els alumnes han imprès unes peces que han dissenyat, i també hem imprès un nou cap orellut per al Zowi.

La wiki de l’extraescolar:
Extraescolar de Robòtica al IES Jaume Balmes

Joanillo Arcade Frontend 1.0.5: ja és multi-emulador

Les màquines de marcianitos que he fet fins ara només portaven l’emulador MAME i eren d’un sol jugador (amb sis botons). Aquest any arribaran màquines de dos jugadors (amb 7 botons per jugador), i diversos emuladors. La primera serà la mini-bartop model Metal-Slug, que està bastant acabada. I després vindran les bartop de dos jugadors, cercant un compromís entre el tamany i la comoditat.

Els emuladors que s’implementen, a part del MAME (mame4all), són el Neo-Geo, Genesis/Mega Drive, GBA i SNES. Per tot això s’ha hagut de millorar el front-end que utilitzo (i que ara ja té un any de vida), per a una versió multi-emulador. Es tracta de la versió 1.0.5, que també incorpora algunes millores que s’han fet necessàries després d’observar com es relaciona la gent amb el front-end.

En definitiva, una versió que pots descarregar, i que ha estat programada de manera que corri amb fluidesa sobre la Raspberry, i que no cerca efectes espectaculars com d’altres front-ends (per ex. Retropie)

El software per a la rockola va prenent forma

He avançat bastant en la part software de la Rockola. Consta de dues parts: la primera és un menú, i la segona és el front-end pròpiament dit.
En el menú es pot escollir la col·lecció de música que es vol escoltar (Rock, Pop, Salsa, etc.), i es pot filtrar per dècada (70s, 80s, etc) i per llicència (tota la música o només la de domini públic). En cada moment pots veure el número de cançons que seran seleccionades.
A més, hi ha diferents opcions relacionades amb la màquina hardware que s’està construïnt. Per exemple: Coin Acceptor habilita o deshabilita haver de ficar les monedes per escoltar les cançons; Piped music habilita el fet de què soni un fil musical si fa estona que no hi ha música a la cua de la playlist; Efectes de llum habilita o deshabilita els leds que faran pampallugues amb motius decoratius; Enable Exit habilita o no que l’usuari pugui tornar al menú des del frontend.
Un cop seleccionada una col·lecció podem anar a la Rockola, que llença el front-end pròpiament dit. El front-end intenta ser fidel als models clàssics de Rockola. Es tracta d’anar omplint les etiquetes de paper de les cançons. Cada etiqueta consta d’un grup i de dues cançons. La distribució de les etiquetes es fa de manera que els grups quedin bastant barrejats i que hi hagi algunes etiquetes mig buides amb una sola cançó. A cada pantalla hi caben 64 cançons, i es pot navegar per les diferents pantalles.
El front-end gestiona els crèdits de què es disposa (una moneda són dos crèdits, que donen dret a dues cançons). La manera de seleccionar una cançó és bastant intuïtiva. Es disposa d’una petita pantalla amb informació de la cançó seleccionada, i evidentment es gestiona la playlist que controla les cançons que estan a l’espera de sonar. Tal com està ara d’avançat el projecte ja es poden escoltar les cançons. Funciona!
En definitiva, el software, format pel menú i el front-end, està pensat per integrar-se en una màquina amb només tres botons (esquerra, dreta i Enter), que ha de complir amb el requisit de què sigui fàcil i clar d’operar, sense manteniment.
El que de moment no és tan fàcil és ficar tots els fitxers MP3 en el sistema. És bastant laboriós. Primer de tot s’ha de disposar de fitxers mp3 que tinguin els tags ID3 omplerts i amb informació correcta. Si no és el cas, s’ha d’actualitzar aquesta informació. S’han de llegir els tags dels fitxers mp3 i actualitzar la base de dades. S’ha de decidir, per a les cançons que es vol incorporar, en quines col·leccions sortiran. Es genera un fitxer master amb totes les cançons de la base de dades i un fitxer de configuració que porta el compte del número de cançons classificat per col·lecció i per dècada. Hi ha una sèrie de scripts que ajuden i automatitzen tot el procés, però en definitiva si es vol tenir una base de dades de qualitat el procés no és fàcil, tot i que hi ha marge per millorar i automatitzar.
Un tema a destacar d’aquestes dues peces de software és que la geometria resideix en fitxers de configuració, de manera que ha de ser fàcilment adaptable a diferents formats de monitor. A més, el codi s’ha compilat tant en un portàtil com en la Raspberry Pi (doncs aquesta plataforma serà el motor de la Rockola real que s’està construïnt).
En resum, la part software ja va prenent forma i no trigaré gaire a fer un video demostratiu. Paral·lelament el moble també va prenent forma, i espero no trigar massa en veure aquest el projecte de la Rockola acomplert.
Quan tingui el software acabat publicaré un enllaç per descarregar el codi font. De totes maneres aquest projecte, programat amb C++, s’ha escrit bastant a raig i de moment no quedarà massa ben documentat.

Hackejar una ROM de Gameboy

He tingut bastants problemes per emular els jocs de Gameboy a la Raspberry Pi. Finalment l’emulador Fednafen és el que funciona, tal i com es fa a Pimame. El món dels emuladors és bastant complicat. Per entendre com funciona una ROM per dins i com es programa un emulador que treballi amb aquestes ROMs s’ha d’estudiar l’arquitectura del Z80, conèixer l’ensamblador, i tècniques avançades de depuració amb llenguatge C. Però aquí anem a fer una cosa relativament senzilla.

Es tracta de fer un petit hack d’una rom de Gameboy. Es tracta de ficar un llibre a dins de la ROM, concretament ficar diferents articles i textos del gran filòsof català Francesc Pujols, aquell que va dir que que Els catalans aniríem pel món i ho tindríem tot pagat.

Parteixo d’una rom que ja és un llibre, un llibre en polonès: Ziarno_Prawdy_-_Book_by_Andrzej_Sapkowski_polish.gbc. Encara que no tinc ni punyetera idea de polonès, arrenco la rom amb l’emulador i la idea està clara: amb els botons pots navegar pels diferents capítols, pots anar a l’inici, i tens dos modes de lectura: línia a línia, o pàgina a pàgina. La idea és localitzar les posicions de memòria on està la informació rellevant, i substituir-ho per la informació (els bytes) que interessa.

Dic que aquest projecte és bastant senzill perquè tenim 5 capítols amb un tamany concret i m’he de limitar a aquestes posicions i blocs d’informació. Allò xulo seria poder ficar més capíols, de longitud variable, i poder navegar per tots els capítols. Però per fer-ho s’hauria de desensamblar el codi i entendre com funcionen els jumps als diferents capítols, i això sí que seria interessant i més difícil.

Bé, mans a l’obra. Faig servir la utilitat xxd com a lector de fitxers binaris, que dóna una sortida hexadecimal i a la part dreta es pot localitzar la informació textual rellevant.

0004040: 0000 0000 0000 0000 0000 0000 0000 0000 …………….
0004050: 2020 2020 2020 2020 2020 2041 6e64 727a Andrz
0004060: 656a 2053 6170 6b6f 7773 6b69 2020 2020 ej Sapkowski
0004070: 2020 2020 2020 2020 2020 2020 2020 2020
0004080: 2020 2020 205a 6961 726e 6f20 5072 6177 Ziarno Praw
0004090: 6479 2020 2020 2020 2020 2020 2020 2020 dy

En aquest bloc hem localitzar el títol i l’autor. El llibre es diu Ziarno Prawdy i l’autor és Adrzej Sapkowski (un nom ben polonès). La posició de l’autor comença a 405b (hex), que és 16475 bytes en decimal. I on acaba Prawdy és la posició 4091 hex = 16529. Per tant, són 16529-16475=54 bytes, que jo substituiré per “EL PENSAMENT I LA FILOSOFIA DE FRANCESC PUJOLS“. Amb aquesta tècnica hem de substituir el títol i autor, el menú, i els diferents capítols (hi ha 5 capítols).

Mostro un exemple de codi amb llenguatge C per substituir en un fitxer binari uns bytes per uns altres en una posició determinada. Un exemple senzill seria:

#include
#include
#include

int main()
{
int posicio = 10;
int tamany;

char *str = “En un lugar de la Mancha”;
printf(“%d\”, strlen(str));
tamany = strlen(str);

int counter;
FILE *ptr_myfile;

ptr_myfile=fopen(“b.gbc”,”r+b”);
if (!ptr_myfile)
{
printf(“Unable to open file!”);
return 1;

}

fseek(ptr_myfile,sizeof(char)*posicio,SEEK_SET);
fwrite(str, 1, sizeof(char)*tamany, ptr_myfile);

fclose(ptr_myfile);
return 0;
}

Partint d’aquest exemple que funciona ja podem fer tota la substitució de les cadenes.

0004040: 0000 0000 0000 0000 0000 0000 0000 0000 …………….
0004050: 2020 2020 2020 2020 2020 2045 4c20 5045 EL PE
0004060: 4e53 414d 454e 5420 4920 4c41 2046 494c NSAMENT I LA FIL
0004070: 4f53 4f46 4941 2044 4520 4652 414e 4345 OSOFIA DE FRANCE
0004080: 5343 2050 554a 4f4c 5320 2020 2020 2020 SC PUJOLS
0004090: 2000 2020 2020 2020 2020 2020 2020 2020 .
00040a0: 492e 2042 494f 4752 4146 4941 0a0a 4c27 I. BIOGRAFIA..L’
00040b0: 6573 6372 6970 746f 722c 2070 6f65 7461 escriptor, poeta
00040c0: 2069 2066 696c c3b2 736f 6620 6361 7461 i fil..sof cata
00040d0: 6cc3 a02c 2046 7261 6e63 6573 6320 5075 l.., Francesc Pu

I el hack ha funcionat com pots veure (i llegir a la foto). En qualsevol cas, la Gameboy no és la millor consola per llegir llibres, i d’altra banda com era d’esperar els accents no funcionen. Pots descarregar el codi sencer a la wiki:

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:

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