public static ITimeSpan GetDuration(this MidiFile midiFile, TimeSpanType durationType) { ThrowIfArgument.IsNull(nameof(midiFile), midiFile); ThrowIfArgument.IsInvalidEnumValue(nameof(durationType), durationType); var tempoMap = midiFile.GetTempoMap(); return(midiFile.GetTimedEvents().LastOrDefault()?.TimeAs(durationType, tempoMap) ?? TimeSpanUtilities.GetZeroTimeSpan(durationType)); }
public static TTimeSpan GetDuration <TTimeSpan>(this MidiFile midiFile) where TTimeSpan : class, ITimeSpan { ThrowIfArgument.IsNull(nameof(midiFile), midiFile); var tempoMap = midiFile.GetTempoMap(); return(midiFile.GetTimedEvents().LastOrDefault()?.TimeAs <TTimeSpan>(tempoMap) ?? TimeSpanUtilities.GetZeroTimeSpan <TTimeSpan>()); }