Add a tool to test-load SMF

This commit is contained in:
Robin Gareus 2020-07-13 21:45:04 +02:00
parent 398101ad92
commit 4b1a41ff53
Signed by: rgareus
GPG Key ID: A090BCE02CF57F04
2 changed files with 67 additions and 0 deletions

21
tools/smf-load/makefile Normal file
View File

@ -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

46
tools/smf-load/smfload.cc Normal file
View File

@ -0,0 +1,46 @@
#include <cstdio>
#include <iostream>
#include <glib/gstdio.h>
#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] << " <midi file>.\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;
}