如何从 DryWetMidi 库中的特定 MIDI 文件块中获取 program/instrument 标题?

How to get a program/instrument title from a specific chunk of a MIDI file in DryWetMidi library?

我在 C# 中使用 DryWetMidi 库并尝试从加载的块中获取 program/instrument 标题,但我找不到给我标题的字段。 到目前为止我只有:

var midiFile = MidiFile.Read("test.mid");
var tempoMap = midiFile.GetTempoMap();
var trackList = midiFile.GetTrackChunks().ToList();
var notes = trackList[0].GetNotes().ToList();

我希望找到类似的东西:

var programNumber = trackList[0].ProgramNumber;

var programNumber = midiFile.GetProgramNumbers();

但是我找不到这样的操作。 如果有任何方法可以在 DryWetMidi 或任何外部库中执行此操作,请告诉我。

TrackChunk has Events property which gives access to all MIDI events within a track chunk. Just find ProgramChangeEvent个并收集节目编号:

var programNumbers = trackList[0]
    .Events
    .OfType<ProgramChangeEvent>()
    .Select(e => e.ProgramNumber)
    .ToArray();

DryWetMIDI 文档齐全。请查看它以了解更多信息:https://melanchall.github.io/drywetmidi.