void CheckForUnprocessedAttributes(const std::vector<AST::Attribute>& attributes);
void EnsureTrackInitialized(int number);
- int GetLastEventTime() const;
+ int GetLastGlobalEventTime() const;
void UpdateLastEventTime();
MIDI::MIDITrack& GetTrack(int trackNumber);
EnsureTrackInitialized(i.Number);
}
+ int globalLastTimeNext = GetLastGlobalEventTime();
+
for (auto&& i : ir.Tracks)
{
- GetTrackContext(i.Number).SetLastEventTime(GetLastEventTime());
+ GetTrackContext(i.Number).SetLastEventTime(GetLastGlobalEventTime());
for (auto&& j : i.Items)
{
CheckForUnprocessedAttributes(j.Attributes);
CompileBlock(i.Number, j.Block);
}
+
+ globalLastTimeNext = std::max(globalLastTimeNext, GetTrackContext(i.Number).GetLastEventTime());
}
+ m_LastEventTime = globalLastTimeNext;
UpdateLastEventTime();
}
if (static_cast<std::size_t>(number) >= m_MIDI.Tracks.size())
{
m_MIDI.Tracks.resize(number + 1);
- m_Contexts.resize(number + 1, TrackCompilerContext(GetLastEventTime()));
+ m_Contexts.resize(number + 1, TrackCompilerContext(GetLastGlobalEventTime()));
}
}
-int IR2MIDICompiler::GetLastEventTime() const
+int IR2MIDICompiler::GetLastGlobalEventTime() const
{
return m_LastEventTime;
}