/// <summary> /// Converts length from <see cref="long"/> to the specified length type. /// </summary> /// <param name="length">Length to convert.</param> /// <param name="lengthType">Type that will represent the length of an object.</param> /// <param name="time">Start time of an object to convert length of.</param> /// <param name="tempoMap">Tempo map used to convert <paramref name="length"/>.</param> /// <returns>Length as an instance of time span defined by <paramref name="lengthType"/>.</returns> /// <exception cref="ArgumentOutOfRangeException"><paramref name="length"/> is negative.</exception> /// <exception cref="ArgumentNullException"><paramref name="time"/> is null. -or- /// <paramref name="tempoMap"/> is null.</exception> /// <exception cref="InvalidEnumArgumentException"><paramref name="lengthType"/> specified an invalid value.</exception> public static ITimeSpan ConvertTo(long length, TimeSpanType lengthType, ITimeSpan time, TempoMap tempoMap) { ThrowIfLengthArgument.IsNegative(nameof(length), length); ThrowIfArgument.IsInvalidEnumValue(nameof(lengthType), lengthType); ThrowIfArgument.IsNull(nameof(time), time); ThrowIfArgument.IsNull(nameof(tempoMap), tempoMap); return(TimeSpanConverter.ConvertTo(length, lengthType, TimeConverter.ConvertFrom(time, tempoMap), tempoMap)); }
/// <summary> /// Converts length from <see cref="long"/> to the specified length type. /// </summary> /// <typeparam name="TTimeSpan">Type that will represent the length of an object.</typeparam> /// <param name="length">Length to convert.</param> /// <param name="time">Start time of an object to convert length of.</param> /// <param name="tempoMap">Tempo map used to convert <paramref name="length"/>.</param> /// <returns>Length as an instance of <typeparamref name="TTimeSpan"/>.</returns> /// <exception cref="ArgumentOutOfRangeException"><paramref name="length"/> is negative.</exception> /// <exception cref="ArgumentNullException"><paramref name="time"/> is null. -or- /// <paramref name="tempoMap"/> is null.</exception> /// <exception cref="NotSupportedException"><typeparamref name="TTimeSpan"/> is not supported.</exception> public static TTimeSpan ConvertTo <TTimeSpan>(long length, ITimeSpan time, TempoMap tempoMap) where TTimeSpan : ITimeSpan { ThrowIfLengthArgument.IsNegative(nameof(length), length); ThrowIfArgument.IsNull(nameof(time), time); ThrowIfArgument.IsNull(nameof(tempoMap), tempoMap); return(TimeSpanConverter.ConvertTo <TTimeSpan>(length, TimeConverter.ConvertFrom(time, tempoMap), tempoMap)); }
/// <summary> /// Initializes a new instance of the <see cref="MidiTimeSpan"/> with the specified /// time span. /// </summary> /// <exception cref="ArgumentOutOfRangeException"><paramref name="timeSpan"/> is negative.</exception> public MidiTimeSpan(long timeSpan) { ThrowIfLengthArgument.IsNegative(nameof(timeSpan), timeSpan); TimeSpan = timeSpan; }