【问题标题】:Writing to MIDI file in C#在 C# 中写入 MIDI 文件
【发布时间】:2014-07-13 16:54:36
【问题描述】:

我一直在尝试寻找一种使用 C# MIDI Toolkit 写入 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 对象中?

【问题讨论】:

  • 你是如何配置Sequence的?
  • 无配置。我只是实例化了它的类的一个对象,如下所示:Sequence seq = new Sequence() 然后添加到它。构造函数没有提供太多,属性也没有很好的记录。
  • 属性不是和SMF文件一样吗?

标签: c# .net midi


【解决方案1】:

通过蛮力尝试偶然发现了一个答案:NOTE_LENGTH 应该可以被 3 平均设计。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-23
    • 2014-01-25
    相关资源
    最近更新 更多