C# 用C编写MIDI文件

C# 用C编写MIDI文件,c#,.net,midi,C#,.net,Midi,我一直在试图找到一种使用C MIDI工具包写入MIDI文件的方法。然而,我经常遇到时间同步的问题。生成的MIDI文件始终是非节拍的。更准确地说,它本身有正确的节奏,但当导入音序器时,它似乎不包含任何可以理解的节奏信息,因为我从未在程序中指定它。没有关于如何执行此操作的文档 我正在使用以下代码将注释插入到曲目中 public const int NOTE_LENGTH = 32; private static void InsertNote(Track t, int pitch, int vel

我一直在试图找到一种使用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对象中?

通过蛮力尝试,偶然发现了一个答案:音符长度应为3。您是如何配置序列的?没有配置。我只是实例化了它类的一个对象,如下所示:Sequence seq=new Sequence,然后添加到其中。构造函数提供的内容不多,属性也没有很好的文档记录。属性与SMF文件中的属性不一样吗?