Arxiu mensual: gener de 2012

smf_parser v1.01: SMF (Standard Midi File) Parser


jplayfine (http://wiki.joanillo.org/index.php/Jplayfine) és un projecte musical que estic desenvolupant, que consisteix en poder fer un play-along sobre un fitxer midi (fitxer SMF), i que puguis obtenir una nota relacionada amb la similitud entre el que has tocat i el que se suposa que has de tocar. Per fer-ho, el programa ha de saber en quin canal està la melodia en el teu fitxer midi, i per quin canal toca el teu controlador midi. jplayfine és un client JACK que conviu bé dins de l’ecosistema de les aplicacions d’àudio i midi per a Linux.
Bé, parlaré del jplayfine en una altra ocasió.

Tot i que jplayfine utilitza un seqüenciador extern per fer sonar el fitxer midi (les proves les estic fent amb jack-smf-player), el tema és que desenvolupant el projecte jplayfine m’he trobat amb la necessitat de parsejar el fitxer midi que conté la melodia i l’acompanyament. Podia utilitzar la llibreria smf.h que utilitza jack-smf-player. La veritat és que, amb els objectius de buscar la simplicitat, tenir el màxim control del codi, i entendre amb profunditat el format MIDI, m’he embarcat en fer un parsejador de SMF amb C++. Aquí va la versió 1.01, per si algú se la vol mirar. D’una
banda hi ha una aplicació standalone; i d’altra banda hi ha la llibreria i una aplicació de test que mostra com utilitzar la llibreria. També hi ha una carpeta midi/ amb els midifiles que s’han utilitzat per testejar. Per utiltizar la llibreria necessites un compilador C++ per a Linux (g++).

Enllaç del projecte: http://wiki.joanillo.org/index.php/Fitxers_MIDI_(SMF)._Format#smf_parser
Informació sobre el protocol MIDI: http://www.sonicspot.com/guide/midifiles.html
Descarregar smf_parser1.01