diff --git a/include/ImportFilter.h b/include/ImportFilter.h index 304de5fa4aa..1b6fe2b596a 100644 --- a/include/ImportFilter.h +++ b/include/ImportFilter.h @@ -78,6 +78,11 @@ class EXPORT ImportFilter : public Plugin return m_file.read( _data, _len ); } + inline QByteArray readAllData() + { + return m_file.readAll(); + } + inline void ungetChar( char _ch ) { m_file.ungetChar( _ch ); diff --git a/plugins/MidiImport/MidiImport.cpp b/plugins/MidiImport/MidiImport.cpp index 85d244ca589..5fde7acc792 100644 --- a/plugins/MidiImport/MidiImport.cpp +++ b/plugins/MidiImport/MidiImport.cpp @@ -26,9 +26,12 @@ #include #include #include +#include #include #include +#include + #include "MidiImport.h" #include "TrackContainer.h" #include "InstrumentTrack.h" @@ -279,8 +282,6 @@ class smfMidiChannel bool MidiImport::readSMF( TrackContainer* tc ) { - QString filename = file().fileName(); - closeFile(); const int preTrackSteps = 2; QProgressDialog pd( TrackContainer::tr( "Importing MIDI-file..." ), @@ -291,7 +292,11 @@ bool MidiImport::readSMF( TrackContainer* tc ) pd.setValue( 0 ); - Alg_seq_ptr seq = new Alg_seq(filename.toLocal8Bit(), true); + std::stringstream stream; + QByteArray arr = readAllData(); + stream.str(std::string(arr.constData(), arr.size())); + + Alg_seq_ptr seq = new Alg_seq(stream, true); seq->convert_to_beats(); pd.setMaximum( seq->tracks() + preTrackSteps );