如何从 DryWetMidi 库中的特定 MIDI 文件块中获取程序/乐器标题?
Posted
技术标签:
【中文标题】如何从 DryWetMidi 库中的特定 MIDI 文件块中获取程序/乐器标题?【英文标题】:How to get a program/instrument title from a specific chunk of a MIDI file in DryWetMidi library? 【发布时间】:2021-01-09 13:20:56 【问题描述】:我在 C# 中使用 DryWetMidi 库并尝试从加载的块中获取程序/仪器标题,但我找不到给我标题的字段。 到目前为止,我只有:
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 或任何外部库中执行此操作,请告诉我。
【问题讨论】:
【参考方案1】:TrackChunk 具有Events 属性,可以访问轨道块中的所有 MIDI 事件。只需找到ProgramChangeEvent 并收集程序编号:
var programNumbers = trackList[0]
.Events
.OfType<ProgramChangeEvent>()
.Select(e => e.ProgramNumber)
.ToArray();
DryWetMIDI 有完整的文档。请查看它以了解更多信息:https://melanchall.github.io/drywetmidi。
【讨论】:
以上是关于如何从 DryWetMidi 库中的特定 MIDI 文件块中获取程序/乐器标题?的主要内容,如果未能解决你的问题,请参考以下文章
如何强制 IntelliJ 中的 Maven 从本地 .m2 存储库中提取特定依赖项