diff --git a/tools/smf-load/makefile b/tools/smf-load/makefile new file mode 100644 index 0000000000..3738776773 --- /dev/null +++ b/tools/smf-load/makefile @@ -0,0 +1,21 @@ +AD = ../.. +CXXFLAGS = -Wall +CPPFLAGS = -I $(AD)/libs/evoral -I $(AD)/libs/pbd -I $(AD)/build/libs/pbd +CPPFLAGS += `pkg-config --cflags libxml-2.0 glibmm-2.4` + +LDFLAGS = -L $(AD)/build/libs/pbd -lpbd -Xlinker -rpath=$(AD)/build/libs/pbd +LDFLAGS += -L $(AD)/build/libs/temporal -ltemporal -Xlinker -rpath=$(AD)/build/libs/temporal +LDFLAGS += -L $(AD)/build/libs/evoral -levoral -Xlinker -rpath=$(AD)/build/libs/evoral + +LDLIBS = `pkg-config --libs libxml-2.0 glibmm-2.4` + +smfload: smfload.cc libevoral + $(CXX) $(CPPFLAGS) $(CXXFLAGS) $(LDFLAGS) -o $@ smfload.cc $(LDLIBS) + +libevoral: + cd $(AD); ./waf build --targets=libevoral + +clean: + rm -f smfload + +.PHONY: libevoral clean diff --git a/tools/smf-load/smfload.cc b/tools/smf-load/smfload.cc new file mode 100644 index 0000000000..3fc82d2f65 --- /dev/null +++ b/tools/smf-load/smfload.cc @@ -0,0 +1,46 @@ +#include +#include + +#include + +#include "evoral/SMF.h" +#include "libsmf/smf.h" + +int +main (int argc, char** argv) +{ + const char* fn = ""; + + if (argc > 1) { + fn = argv[1]; + } else { + std::cerr << "Usage: " << argv[0] << " .\n"; + ::exit (EXIT_FAILURE); + } + +#if 0 + Evoral::SMF smf; + smf.open (fn); + printf ("SMF '%s' tracks=%d, ppqn=%d\n", fn, smf.num_tracks (), smf.ppqn()); +#else + FILE* f = g_fopen(fn, "r"); + if (!f) { + printf ("SMF failed to open file '%s'\n", fn); + ::exit (EXIT_FAILURE); + } + + printf ("SMF loading file '%s'\n", fn); + smf_t* smf = smf_load (f); + fclose(f); + + if (!smf) { + printf ("SMF failed to load '%s'\n", fn); + ::exit (EXIT_FAILURE); + } + printf ("SMF '%s' tracks=%d, ppqn=%d\n", fn, smf->number_of_tracks, smf->ppqn); + + smf_delete (smf); +#endif + + return 0; +}