@@ -787,23 +787,17 @@ void createNotes(const ReducedFraction &lastTick, QList<MTrack> &tracks, MidiTyp
787787 }
788788 }
789789
790- QList<TrackMeta> getTracksMeta (const std::multimap< int , MTrack> &tracks,
790+ QList<TrackMeta> getTracksMeta (const QList< MTrack> &tracks,
791791 const MidiFile *mf)
792792{
793793 QList<TrackMeta> tracksMeta;
794- int i = 0 ;
795- for (auto it = tracks.begin (); it != tracks.end (); ++it, ++i) {
796- if (i % 2 ) {
797- auto prev = it;
798- --prev;
799- if (isSameChannel (prev->second , it->second )) {
800- TrackMeta lastMeta = tracksMeta.back ();
801- tracksMeta.push_back (lastMeta);
802- continue ;
803- }
794+ for (int i = 0 ; i < tracks.size (); ++i) {
795+ if (i % 2 && isSameChannel (tracks[i - 1 ], tracks[i])){
796+ TrackMeta lastMeta = tracksMeta.back ();
797+ tracksMeta.push_back (lastMeta);
798+ continue ;
804799 }
805-
806- const MTrack &mt = it->second ;
800+ const MTrack &mt = tracks[i];
807801 QString trackName;
808802 for (const auto &ie: mt.mtrack ->events ()) {
809803 const MidiEvent &e = ie.second ;
@@ -817,7 +811,11 @@ QList<TrackMeta> getTracksMeta(const std::multimap<int, MTrack> &tracks,
817811 midiType = MT_GM;
818812 const QString instrName = instrumentName (midiType, mt.program ,
819813 mt.mtrack ->drumTrack ());
820- tracksMeta.push_back ({trackName, instrName, mt.mtrack ->drumTrack ()});
814+ tracksMeta.push_back ({trackName,
815+ instrName,
816+ mt.mtrack ->drumTrack (),
817+ mt.initLyricTrackIndex
818+ });
821819 }
822820 return tracksMeta;
823821 }
@@ -844,7 +842,7 @@ void convertMidi(Score *score, const MidiFile *mf)
844842 createNotes (lastTick, trackList, mf->midiType ());
845843 createTimeSignatures (score);
846844 score->connectTies ();
847- MidiLyrics::extractLyrics (trackList, mf );
845+ MidiLyrics::setLyrics (mf, trackList );
848846 }
849847
850848void loadMidiData (MidiFile &mf)
@@ -882,9 +880,12 @@ QList<TrackMeta> extractMidiTracksMeta(const QString &fileName)
882880
883881 Score mockScore;
884882 ReducedFraction lastTick;
885- const auto tracks = createMTrackList (lastTick, mockScore.sigmap (),
886- midiData.midiFile (fileName));
887- return getTracksMeta (tracks, midiData.midiFile (fileName));
883+ const MidiFile *mf = midiData.midiFile (fileName);
884+ const auto tracks = createMTrackList (lastTick, mockScore.sigmap (), mf);
885+ QList<MTrack> trackList = prepareTrackList (tracks);
886+ MidiLyrics::setInitialIndexes (trackList);
887+
888+ return getTracksMeta (trackList, mf);
888889 }
889890
890891// ---------------------------------------------------------
0 commit comments