managed-midi by Atsushi Eno

<PackageReference Include="managed-midi" Version="1.9.14" />

 MidiPlayer

public class MidiPlayer : IDisposable
public int Bpm { get; }

public int PlayDeltaTime { get; }

public TimeSpan PositionInTime { get; }

public PlayerState State { get; }

public int Tempo { get; }

public double TempoChangeRatio { get; set; }

public byte[] TimeSignature { get; }

public event Action Finished

public MidiPlayer(MidiMusic music)

public MidiPlayer(MidiMusic music, IMidiAccess access)

public MidiPlayer(MidiMusic music, IMidiOutput output)

public MidiPlayer(MidiMusic music, IMidiPlayerTimeManager timeManager)

public MidiPlayer(MidiMusic music, IMidiAccess access, IMidiPlayerTimeManager timeManager)

public MidiPlayer(MidiMusic music, IMidiOutput output, IMidiPlayerTimeManager timeManager)

public virtual void Dispose()

public void Pause()

public void PauseAsync()

public void Play()

public void PlayAsync()

public void Seek(int ticks)

public void SeekAsync(int ticks)

public void SetChannelMask(bool[] channelMask)

public void StartLoop()

public void Stop()