4

我正在尝试在 flash midi 文件中可视化(使用外部 midi-to-flash 库)

有没有办法在 MIDI 文件中区分小提琴、中提琴、大提琴和低音提琴。我得到了仪器的这些值(忽略数字):

1 长笛 13

2 双簧管 15

3 单簧管 14

4 巴松管 16

5 圆号 18

6 小号 17

7 定音鼓 26

8 弦乐合奏 1 3

9 弦乐合奏 1 3

10 弦乐合奏 1 3

11 弦乐合奏 1 3

12 弦乐合奏 1 3

13 原声三角钢琴 5

14 原声三角钢琴 5

15 原声三角钢琴 5

16 原声三角钢琴 5

如您所见,所有字符串都获得相同的“字符串合奏”值......

一种方法是询问每个音符是高(65>)还是低(50<)等,然后大致确定乐器类型(针对特定音符)。但由于这些值是随机的且不准确 - 这并不能正确地将它们分开(特别是因为不同的工具仍然具有共享的音符高度值)。

  1. 它是在 MIDI 文件的某处写的(大提琴、小提琴……)吗?

  2. 有没有办法假设它?

  3. 我有 5 个音轨。是否可以假设(例如)前两个是小提琴,第三个是大提琴等?或者他们都是混合的?

4

1 回答 1

5

简而言之,没有。

您看到的是简单的通用 MIDI 补丁。然而,这些乐器的声音如何取决于产生声音的合成器,而不是由 MIDI 定义的。完全可以选择与显示的补丁完全不同的乐器。

话虽如此,41被定义为小提琴,42被定义为中提琴,43被定义为大提琴,44被定义为低音提琴。但是,不要期望它们总是以这种方式使用。

至于 1st/2nd 小提琴,这取决于人们决定如何制作 MIDI 文件,并且没有编程方法可以找到它。例如,如果乐器音色相同,我希望该乐器的所有使用都在一个通道上。除非他们使用的软件出于某种原因决定将其拆分。(例如,如果源乐谱已拆分。)

我相信 MIDI 文件有一些空间用于轨道名称等,但您不会在每个 MIDI 文件中看到它们,而且它们是自由格式的名称,因此它们不会以您可以通过编程方式使用的任何方式进行标记。

MIDI 仅用于控制合成器,而不是像我们人类理解的那样代表乐谱。

于 2011-05-27T17:03:31.503 回答