public void RecordClose() { Events.Close e = new Events.Close(); SetDeltaAndAddEvent(e); }
public void ConductTracks(IList<Track> tracks) { int ni = m_events.Count; int nj = tracks.Count; uint globalSample = 0, globalTick = 0; double spt = CalculateSPT(DEFAULT_BPM); for (int i = 0; i < ni; i++) { Events.Event e = m_events[i]; uint delta = (uint)e.Delta; globalTick += delta; globalSample += (uint)(delta * spt); Events.Tempo tempo = e as Events.Tempo; if (tempo != null) { int tempoValue = tempo.Value; for (int j = FIRST_TRACK; j < nj; j++) { Track track = tracks[j]; track.RecordTempo(tempoValue, globalTick); spt = CalculateSPT(tempoValue); } } } uint maxGlobalTick = 0; for (int j = FIRST_TRACK; j < nj; j++) { Track track = tracks[j]; uint trackGlobalTick = track.GlobalTick; if (maxGlobalTick < trackGlobalTick) maxGlobalTick = trackGlobalTick; } Events.Close close = new Events.Close(); RecordGlobalTick(maxGlobalTick, close); globalSample += (uint)((maxGlobalTick - globalTick) * spt); RecordRest((uint)3000); RecordEOT(); globalSample += (uint)(3 * Sample.RATE); #if true Duration = TimeSpan.FromMilliseconds(globalSample * (1000.0 / Sample.RATE)); #else Duration = new Duration(TimeSpan.FromMilliseconds(globalSample * (1000.0 / Sample.RATE))); #endif }