diff --git a/src/Project.cpp b/src/Project.cpp index be3c75463..6b5ce1ac9 100644 --- a/src/Project.cpp +++ b/src/Project.cpp @@ -460,8 +460,12 @@ public: mProject->HandleResize(); // Adjust scrollers for NEW track sizes. } ); - for (const auto &name : sortednames) - mProject->Import(name); + for (const auto &name : sortednames) { + if (Importer::IsMidi(name)) + AudacityProject::DoImportMIDI(mProject, name); + else + mProject->Import(name); + } mProject->ZoomAfterImport(nullptr); diff --git a/src/import/Import.cpp b/src/import/Import.cpp index 6dae378f3..e01229045 100644 --- a/src/import/Import.cpp +++ b/src/import/Import.cpp @@ -328,6 +328,14 @@ movable_ptr Importer::CreateDefaultImportItem() return new_item; } +bool Importer::IsMidi(const wxString &fName) +{ + const auto extension = fName.AfterLast(wxT('.')); + return + extension.IsSameAs(wxT("midi"), false) || + extension.IsSameAs(wxT("mid"), false); +} + // returns number of tracks imported bool Importer::Import(const wxString &fName, TrackFactory *trackFactory, @@ -343,7 +351,7 @@ bool Importer::Import(const wxString &fName, // Always refuse to import MIDI, even though the FFmpeg plugin pretends to know how (but makes very bad renderings) #ifdef USE_MIDI // MIDI files must be imported, not opened - if ((extension.IsSameAs(wxT("midi"), false)) || (extension.IsSameAs(wxT("mid"), false))) { + if (IsMidi(fName)) { errorMessage.Printf(_("\"%s\" \nis a MIDI file, not an audio file. \nAudacity cannot open this type of file for playing, but you can\nedit it by clicking File > Import > MIDI."), fName.c_str()); return false; } diff --git a/src/import/Import.h b/src/import/Import.h index 4e8aaa450..e102521a2 100644 --- a/src/import/Import.h +++ b/src/import/Import.h @@ -137,6 +137,8 @@ public: */ movable_ptr CreateDefaultImportItem(); + static bool IsMidi(const wxString &fName); + // if false, the import failed and errorMessage will be set. bool Import(const wxString &fName, TrackFactory *trackFactory, diff --git a/src/import/ImportLOF.cpp b/src/import/ImportLOF.cpp index 7c87d112b..d462a3f0d 100644 --- a/src/import/ImportLOF.cpp +++ b/src/import/ImportLOF.cpp @@ -388,8 +388,7 @@ void LOFImportFileHandle::lofOpenFiles(wxString* ln) #ifdef USE_MIDI // If file is a midi - if (targetfile.AfterLast(wxT('.')).IsSameAs(wxT("mid"), false) - || targetfile.AfterLast(wxT('.')).IsSameAs(wxT("midi"), false)) + if (Importer::IsMidi(targetfile)) { mProject = AudacityProject::DoImportMIDI(mProject, targetfile); }