用C#写入MIDI文件

时间:2014-07-13 16:54:36

标签: c# .net midi

我一直试图找到一种使用C#MIDI工具包写入MIDI文件的方法。但是,我经常遇到时间同步问题。生成的MIDI文件始终处于关闭状态。更确切地说,它具有与自身相关的正确节奏,但是当导入到音序器中时,它似乎不包含任何节奏信息(这是可以理解的,因为我从未在我的程序中指定它)。没有关于如何执行此操作的文档。

我使用以下代码将音符插入曲目。

public const int NOTE_LENGTH = 32;

private static void InsertNote(Track t, int pitch, int velocity, int position, int duration, int channel)
{
    ChannelMessageBuilder builder = new ChannelMessageBuilder();
    builder.Command = ChannelCommand.NoteOn;
    builder.Data1 = pitch;
    builder.Data2 = velocity;
    builder.MidiChannel = channel;
    builder.Build();
    t.Insert(position * NOTE_LENGTH, builder.Result);
    builder.Command = ChannelCommand.NoteOff;
    builder.Build();
    t.Insert((position + duration) * NOTE_LENGTH, builder.Result);
}

我确信这些音符本身没问题,因为结果输出是可听见的,但没有速度信息。如何在包含我的曲目的Sequence对象中输入速度信息?

1 个答案:

答案 0 :(得分:0)

通过蛮力尝试偶然发现答案:NOTE_LENGTH应该由3来均匀设计。