为什么MIDI提供127个音符

时间:2011-02-24 15:32:26

标签: midi

MIDI中的127个音符值是否具有音乐意义(一定数量的八度音程等)?或者由于二进制文件格式设置为127,IE用于计算?

6 个答案:

答案 0 :(得分:20)

在MIDI协议中有状态字节(想想命令,例如音符开或音符关),并且有数据字节(想想参数,例如音高值和音速)。确定它们之间差异的方法是第一位。如果第一位是1,则它是状态字节。如果第一位是0,那么它是一个数据字节。这使得剩余的状态或数据字节值只剩下7位。

所以简单地回答一下你的问题,这更多地与协议规范有关,但恰好可以很好地排列到可用的音高值。

现在,这些音高值对应于特定的音高。是的,通常音高值为60将为您提供C4或中间C. 大多数合成器以这种方式工作,但肯定不是所有。甚至不要求合成器使用音高值来进行音高! MIDI并不关心......它只是一个协议。您可能想知道备用调音如何工作......它们工作得很好。合成器可以为这些替代调音产生正确的音高。 MIDI只提供了128种不同值的选择。

另外,如果您想知道为什么第一位表示数据是什么如此重要......有一些系统实时消息可以在其他命令的中间插入。这些是定时时钟,通常用于同步LFO等。

您可以在此处阅读有关MIDI信息类型的更多信息:http://www.midi.org/techspecs/midimessages.php

答案 1 :(得分:7)

  

127 = 2 7 - 1

它是8位有符号整数的最大正值,因此是文件格式的一个有意义的限制 - 它是您可以存储在一个字节中的最高值(在大多数系统上)使它无符号。

答案 2 :(得分:4)

我认为你所缺少的是MIDI是在20世纪80年代早期创建的,不是在个人电脑上运行,而是在具有极其有限的处理和存储能力的乐器上运行。当时存储127个值似乎是GIANT,特别是当最大的键盘通常只有88个键时,大多数电子乐器只有48个。如果你认为MIDI以奇怪的方式做某事,很可能源于它的侏罗纪遗产。 / p>

  

是的,通常音高值为60会给你C4,   大多数合成器以这种方式工作,但肯定不是全部。

是的......关于中间C在MIDI中的位置一直存在分歧。在Yamaha键盘上它是C3,在Roland键盘上它是C4。雅马哈单向做了,罗兰做了另一回事。

  

现在,这些音高值与特定音高不对应。

不是最初的。但是,在“通用MIDI”标准中,A = 440,这是标准调音。通用MIDI还描述了哪个音色是钢琴,哪个是吉他,等等,这样MIDI文件就可以在多音色声源中移植。

答案 3 :(得分:3)

简单的效率。

作为一种串行协议,MIDI是围绕时间的简单串行芯片设计的,该芯片需要8个数据位,并以一个单独的串行数据引脚以禁止的速率传输它们。在MIDI世界中,这是31,250赫兹。它添加了停止和启动位,因此所有数据都可以通过一根线传输。 它的设计既便宜又简单,简洁性也扩展到数据格式。

8个数据位中最高有效位用于表示数据字节是命令还是数据。所以- 要在通道1上以56的速度发送中C音符ON,首先发送命令字节 注意的命令是该命令位1001的高4位。注意最高有效位中的1,其后是通道1 0000的通道ID(计算机更喜欢从0开始计数)

10010000或128 + 16 = 144

之后是实际的Note数据

72为中C或01001000

然后再次在0 -127范围内指定速度数据,其中0 MSB

在我们的案例中

56

00111000 那么什么会断线(忽略停止启动和同步位)

144,72,56

对于电子键盘中几乎脑死亡的微型计算机而言,通过简单地查看第一位来将命令与数据分开的能力是天赐之物。

如前所述,127位几乎涵盖了你需要提及的任何西方键盘。因此,在许多串行协议消失为默默无闻之后很长时间内完全具有逻辑意义和协议生存是对http://en.wikipedia.org/wiki/Dave_Smith_(engineer)顺序电路的Dave Smith的一个很好的赞美,他开始与其他制造商讨论所有这些。

没有他和他们,现代音乐和作曲会有很大的不同。

享受!

答案 4 :(得分:0)

127足以覆盖所有钢琴键

答案 5 :(得分:0)

0 ~ 127 非常适合 ADC 转换。

许多 MIDI 硬件设备依赖于执行模数转换 (ADC)。考虑到 MIDI 是一种实时通信协议,当使用 successive-approximation(一种常用算法)执行 ADC 转换时,一个好的经验法则是使用 8 位分辨率进行快速计算。这将产生 0 ~ 1023 范围内的值,可以通过除以 8 将其转换为 MIDI 范围。