{"id":158,"date":"2012-01-23T11:59:22","date_gmt":"2012-01-23T09:59:22","guid":{"rendered":"http:\/\/www.joanillo.org\/?p=158"},"modified":"2020-09-14T12:00:38","modified_gmt":"2020-09-14T10:00:38","slug":"smf_parser-v1-01-smf-standard-midi-file-parser","status":"publish","type":"post","link":"https:\/\/www.joanillo.org\/?p=158","title":{"rendered":"smf_parser v1.01: SMF (Standard Midi File) Parser"},"content":{"rendered":"<p><a href=\"http:\/\/www.joanillo.org\/wp-content\/uploads\/2012\/01\/din01b.jpg\"><img loading=\"lazy\" src=\"http:\/\/www.joanillo.org\/wp-content\/uploads\/2012\/01\/din01b-150x150.jpg\" alt=\"\" title=\"din01b\" width=\"150\" height=\"150\" class=\"alignright size-thumbnail wp-image-564\"><\/a><br \/>\n<strong>jplayfine<\/strong> (<a href=\"http:\/\/wiki.joanillo.org\/index.php\/Jplayfine\">http:\/\/wiki.joanillo.org\/index.php\/Jplayfine<\/a>) \u00e9s 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\u00e0 la melodia en el teu fitxer midi, i per quin canal toca el teu controlador midi. <strong>jplayfine<\/strong> \u00e9s un client <strong>JACK<\/strong> que conviu b\u00e9 dins de l&#8217;ecosistema de les aplicacions d&#8217;\u00e0udio i midi per a Linux.<br \/>\nB\u00e9, parlar\u00e9 del jplayfine en una altra ocasi\u00f3.<\/p>\n<p>Tot i que <strong>jplayfine<\/strong> utilitza un seq\u00fcenciador extern per fer sonar el fitxer midi (les proves les estic fent amb jack-smf-player), el tema \u00e9s que desenvolupant el projecte jplayfine m&#8217;he trobat amb la necessitat de parsejar el fitxer midi que cont\u00e9 la melodia i l&#8217;acompanyament. Podia utilitzar la llibreria <em>smf.h<\/em> que utilitza<em> jack-smf-player<\/em>. La veritat \u00e9s que, amb els objectius de buscar la simplicitat, tenir el m\u00e0xim control del codi, i entendre amb profunditat el format MIDI, m&#8217;he embarcat en fer un parsejador de SMF amb C++. Aqu\u00ed va la versi\u00f3 1.01, per si alg\u00fa se la vol mirar. D&#8217;una<br \/>\nbanda hi ha una aplicaci\u00f3 standalone; i d&#8217;altra banda hi ha la llibreria i una aplicaci\u00f3 de test que mostra com utilitzar la llibreria. Tamb\u00e9 hi ha una carpeta midi\/ amb els midifiles que s&#8217;han utilitzat per testejar. Per utiltizar la llibreria necessites un compilador C++ per a Linux (g++).<\/p>\n<p>Enlla\u00e7 del projecte: <a href=\"http:\/\/wiki.joanillo.org\/index.php\/Fitxers_MIDI_(SMF)._Format#smf_parser\">http:\/\/wiki.joanillo.org\/index.php\/Fitxers_MIDI_(SMF)._Format#smf_parser<\/a><br \/>\nInformaci\u00f3 sobre el protocol MIDI: <a href=\"http:\/\/www.sonicspot.com\/guide\/midifiles.html\">http:\/\/www.sonicspot.com\/guide\/midifiles.html<\/a><br \/>\nDescarregar <a href=\"http:\/\/wiki.joanillo.org\/index.php\/Fitxer:Smf_parser_v101.zip\">smf_parser1.01<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>jplayfine (http:\/\/wiki.joanillo.org\/index.php\/Jplayfine) \u00e9s 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 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[15,16,12,5],"tags":[],"_links":{"self":[{"href":"https:\/\/www.joanillo.org\/index.php?rest_route=\/wp\/v2\/posts\/158"}],"collection":[{"href":"https:\/\/www.joanillo.org\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.joanillo.org\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.joanillo.org\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.joanillo.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=158"}],"version-history":[{"count":1,"href":"https:\/\/www.joanillo.org\/index.php?rest_route=\/wp\/v2\/posts\/158\/revisions"}],"predecessor-version":[{"id":159,"href":"https:\/\/www.joanillo.org\/index.php?rest_route=\/wp\/v2\/posts\/158\/revisions\/159"}],"wp:attachment":[{"href":"https:\/\/www.joanillo.org\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=158"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.joanillo.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=158"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.joanillo.org\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=158"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}