c# - 使用 DryWetMidi 从 MIDI 文件中读取每个音符(音符、力度、长度)

标签 c# file midi

我正在制作一个 C# 程序,它应该从 MIDI 文件中读取每个音符并获取音符的长度和速度,但我不知道该怎么做...

我正在使用 DryWetMidi图书馆,但还有其他图书馆吗?

最佳答案

DryWetMidi 1.1.0 开头, 你只需要得到一个 MIDI 文件的音符就是这个代码:

IEnumerable<Note> notes = midiFile.GetNotes();

Note 类包含您需要的所有属性:NoteNumberNoteNameOctaveLength TimeVelocityOffVelocity

要将 Time 获取为 ,您可以使用 TimeAs 扩展方法:

TempoMap tempoMap = midiFile.GetTempoMap();
MetricTimeSpan metricTime = note.TimeAs<MetricTimeSpan>(tempoMap);
BarBeatTicksTimeSpan musicalTime = note.TimeAs<BarBeatTicksTimeSpan>(tempoMap);

对于Length,可以使用LengthAs扩展方法:

TempoMap tempoMap = midiFile.GetTempoMap();
MetricTimeSpan metricLength = note.LengthAs<MetricTimeSpan>(tempoMap);
BarBeatTimeSpan metricLength = note.LengthAs<BarBeatTimeSpan>(tempoMap);

您可以在 Time and length 中阅读更多内容库文档的文章。

关于c# - 使用 DryWetMidi 从 MIDI 文件中读取每个音符(音符、力度、长度),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44396347/

相关文章:

c# - 如果数据库字段包含数据,则返回 bool 值

c# - 从 DLL 文件中读取资源

python - 读取所有目录下的所有文件

design-patterns - 大脑无法理解设计实时应用程序的设计模式

c# - 将 'hd' 参数附加到 redirectUrl ASP.NET Core 1 with Identity 3

c# - Reactive Extension-新版本中旧版本的问题使用方法

java - 从 InputStream 中删除换行符

c++ - std::ofstream - setting seekp to wrong position

midi - 采用 n 个参数的纯数据抽象

iphone - 适用于 iOS 的简单嵌入式 MidiSynth?