/// <summary> /// Plays MIDI events contained in the specified <see cref="TrackChunk"/>. /// </summary> /// <param name="trackChunk"><see cref="TrackChunk"/> containing events to play.</param> /// <param name="tempoMap">Tempo map used to calculate events times.</param> /// <param name="outputDevice">Output MIDI device to play events through.</param> /// <param name="clockSettings">Settings of the internal playback's clock.</param> /// <exception cref="ArgumentNullException"> /// <para>One of the following errors occured:</para> /// <list type="bullet"> /// <item> /// <description><paramref name="trackChunk"/> is <c>null</c>.</description> /// </item> /// <item> /// <description><paramref name="tempoMap"/> is <c>null</c>.</description> /// </item> /// <item> /// <description><paramref name="outputDevice"/> is <c>null</c>.</description> /// </item> /// </list> /// </exception> public static void Play(this TrackChunk trackChunk, TempoMap tempoMap, IOutputDevice outputDevice, MidiClockSettings clockSettings = null) { ThrowIfArgument.IsNull(nameof(trackChunk), trackChunk); ThrowIfArgument.IsNull(nameof(tempoMap), tempoMap); ThrowIfArgument.IsNull(nameof(outputDevice), outputDevice); using (var playback = trackChunk.GetPlayback(tempoMap, outputDevice, clockSettings)) { playback.Play(); } }
public static void Play(this TrackChunk trackChunk, TempoMap tempoMap, OutputDevice outputDevice) { ThrowIfArgument.IsNull(nameof(trackChunk), trackChunk); ThrowIfArgument.IsNull(nameof(tempoMap), tempoMap); ThrowIfArgument.IsNull(nameof(outputDevice), outputDevice); using (var playback = trackChunk.GetPlayback(tempoMap, outputDevice)) { playback.Start(); } }