diff --git a/gtk2_ardour/sfdb_ui.cc b/gtk2_ardour/sfdb_ui.cc index 990ec2342c..6be08ad482 100644 --- a/gtk2_ardour/sfdb_ui.cc +++ b/gtk2_ardour/sfdb_ui.cc @@ -281,7 +281,7 @@ SoundFileBox::setup_labels (const string& filename) string error_msg; - if (SMFSource::safe_midi_file_extension (path)) { + if (SMFSource::valid_midi_file (path)) { boost::shared_ptr ms = boost::dynamic_pointer_cast ( @@ -406,7 +406,7 @@ SoundFileBox::audition () boost::shared_ptr r; - if (SMFSource::safe_midi_file_extension (path)) { + if (SMFSource::valid_midi_file (path)) { boost::shared_ptr ms = boost::dynamic_pointer_cast ( @@ -1326,7 +1326,7 @@ SoundFileOmega::reset_options () /* See if we are thinking about importing any MIDI files */ vector::iterator i = paths.begin (); - while (i != paths.end() && SMFSource::safe_midi_file_extension (*i) == false) { + while (i != paths.end() && SMFSource::valid_midi_file (*i) == false) { ++i; } bool const have_a_midi_file = (i != paths.end ()); @@ -1554,7 +1554,7 @@ SoundFileOmega::check_info (const vector& paths, bool& same_size, bool& src_needed = true; } - } else if (SMFSource::safe_midi_file_extension (*i)) { + } else if (SMFSource::valid_midi_file (*i)) { Evoral::SMF reader; reader.open(*i); diff --git a/libs/ardour/ardour/smf_source.h b/libs/ardour/ardour/smf_source.h index f30649c571..93adfd71f9 100644 --- a/libs/ardour/ardour/smf_source.h +++ b/libs/ardour/ardour/smf_source.h @@ -77,6 +77,7 @@ public: void ensure_disk_file (); static bool safe_midi_file_extension (const std::string& path); + static bool valid_midi_file (const std::string& path); void prevent_deletion (); diff --git a/libs/ardour/smf_source.cc b/libs/ardour/smf_source.cc index 17171a5259..f6168f9d9b 100644 --- a/libs/ardour/smf_source.cc +++ b/libs/ardour/smf_source.cc @@ -35,6 +35,7 @@ #include #include "evoral/Control.hpp" +#include "evoral/evoral/SMF.hpp" #include "ardour/event_type_map.h" #include "ardour/midi_model.h" @@ -49,6 +50,7 @@ using namespace ARDOUR; using namespace Glib; using namespace PBD; +using namespace Evoral; /** Constructor used for new internal-to-session files. File cannot exist. */ SMFSource::SMFSource (Session& s, const string& path, Source::Flag flags) @@ -497,6 +499,15 @@ SMFSource::mark_midi_streaming_write_completed (Evoral::Sequence