midi | 如何辨别不同的弦乐工具(小提琴,大提琴,贝斯)之间的区别

Alo*_*lon 4 flash midi actionscript-3 midi-instrument

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

有没有办法在midi文件中区分Violin,Viola,Cello和Contrabass.我得到了仪器的这些值(忽略数字):

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 Acoustic Grand Piano 5

如您所见,所有字符串都获得相同的"String Ensemble"值...

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

  1. 它是在midi文件中写的(大提琴,小提琴......)吗?

  2. 有没有办法承担它?

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

Bra*_*rad 5

简而言之,没有.

你看到的是简单的通用MIDI补丁.但是,这些乐器的声音取决于产生声音的合成器,并且不是由MIDI定义的.完全可以选择与所示补丁完全不同的仪器.

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

至于第一/第二小提琴,这取决于人决定如何制作MIDI文件,并且没有编程方式来找到它.例如,如果乐器补丁是相同的,我希望该乐器的所有用法都在一个通道上.除非他们使用的软件由于某种原因决定将其拆分.(例如,如果源分数已将其拆分.)

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

MIDI仅用于控制合成器,并不用于表示我们人类理解的乐谱.