音频应用

 找回密码
 快速注册

QQ登录

只需一步,快速开始

阅读: 29266|回复: 6
收起左侧

[资讯] MIDI百科知识

[复制链接]

161

积分

4

听众

36

音贝

音频应用

Rank: 1

积分
161
发表于 2016-7-16 | |阅读模式
音频应用公众号资讯免费发布推广
  MIDI(MusicalInstrumentDigitalInterface)乐器数字接口,是20世纪80年代初为解决电声乐器之间的通信问题而提出的。MIDI是编曲界最广泛的音乐标准格式,可称为“计算机能理解的乐谱”。它用音符的数字控制信号来记录音乐。一首完整的MIDI音乐只有几十KB大,而能包含数十条音乐轨道。几乎所有的现代音乐都是用MIDI加上音色库来制作合成的。MIDI传输的不是声音信号,而是音符、控制参数等指令,它指示MIDI设备要做什么,怎么做,如演奏哪个音符、多大音量等。它们被统一表示成MIDI消息(MIDIMessage)。传输时采用异步串行通信,标准通信波特率为31.25×(1±0.01)KBaud。

  产生背景编辑

  MIDI发明者,是美国的加州音乐人,DaveSmith。

  三十年前,音乐人没法同时操纵多个乐器,因为当时各种乐器是不可连接的。需要左右手同时弹奏两个键盘。此后,合成器制造商DaveSmith,说服了唱片商采用了一种叫做“乐器数字接口”(MusicalInstrumentDigitalInterface,MIDI)的通用格式,这种格式能够让合成器受到外部键盘信号控制,可以由唱片商的竞争对手制作,甚至直接从电脑输出。使运算速度足够快的电脑处理音符采样,并能同时控制多个键盘和鼓机。

  MIDI标准能让人们在自己家里进行音乐创作,使人们终于能够把合成器和鼓机连接到电脑上。于是,MIDI很快变成了连接各种型号的合成器、鼓机、采样数据和计算机的产业标准。

  MIDI无论放置在哪里,都能在一个合成器上演奏些东西,并能在另外一个合成器上播放完全一样的声响。复杂而精心控制的的合成器声效、鼓机和采样样本见证了编曲技术从不可能到可能的转变。随着这种全新定义的制作方式,舞曲这种新的音乐类型诞生了。

  第一台能够兼容MIDI格式的是一个由DaveSmith制作、叫做Prophet-900的合成器。它在1982年12月退役。在当时的青少年游戏玩家中流行的Atari以及Commodore64型计算机也能通过一个5针的线缆控制另一端的MIDI乐器。

  MIDI音乐格式,带有强烈的电子感,以及广泛适用性和便利性,催生了那个年代众多的音乐类型。重塑了1980年代的流行乐。

  MIDI格式早期的的“开源精神”概念,让每个人都能创作”复杂的音乐片段”,MIDI标准的支持者推动它成为连接着着全世界的自由纽带。三十年以后,MIDI仍然强劲不衰,作为专业音乐录制和制作的关键组件而存续着。[1]

  发展历程编辑

  八十年代初,各生产厂家都按照自己的规格生产电子乐器,当

  MIDI使电子鼓机可模拟音响效果MIDI使电子鼓机可模拟音响效果

  同时使用几家公司的设备构成一个电脑音乐系统的时候,出现了不兼容问题。

   20160228005605_89865.jpg
欢迎厂家入驻,推文!免费!微信:yinpinyingyong

161

积分

4

听众

36

音贝

音频应用

Rank: 1

积分
161
 楼主| 发表于 2016-7-16 |
  发展历程编辑

  八十年代初,各生产厂家都按照自己的规格生产电子乐器,当

  MIDI使电子鼓机可模拟音响效果MIDI使电子鼓机可模拟音响效果

  同时使用几家公司的设备构成一个电脑音乐系统的时候,出现了不兼容问题。

  1982年,国际乐器制造者协会的十几家厂商(其中主要是美国和日本的厂商)会聚一堂,会议通过了美国SequentialCircuits公司的大卫.史密斯提出的“通用合成器接口”的方案,并改名为“音乐设备数字接口”,即“MusicalInstrumentDigitalInterface”缩写为“MIDI”,公布于世。

  1983年,MIDI协议1.0版正式制定出来。此后,所有的商业用电子乐器的背后都出现了几个五孔的MIDI插座,乐器之间不再存在“语言障碍”,它们同装上MIDI接口的电脑一起。作用就是使电子乐器与电子乐器,电子乐器与电脑之间通过一种通用的通讯协议即MIDI协议进行通讯。MIDI的出现解决了各个不同厂商之间的数字音乐乐器的兼容问题。

  1984,日本罗兰公司于提出了GS标准,大大增强了音乐的表现力。

  1985年11月,国际乐器制造者协会公布了《MIDI1.0版的细节规定》(2.0版至今仍在制定中),重新定义了一些控制器号码。此外,为保证MIDI的健康发展,还专门成立了“MIDI厂商协会”和“日本MIDI标准委员会”等组织,MIDI标准从成长阶段步入了成熟阶段。

  MIDI标准的成熟使各电子乐器生产厂商生产出各种电子乐器,有键盘式的(合成器、主控键盘)、弦控式的(MIDI吉他)、敲击式的(鼓机)甚至还有吹奏式的(呼吸控制器),除此之外,还有五花八门的各种音源模块(就是把没有键盘的电子合成器)供人选购。

  1991年,为了更有利于音乐家广泛地使用不同的合成器设备和促进MIDI文件的交流,国际MIDI生产者协会(MMA)制定了通用MIDI标准——GM,该标准是以日本Roland公司的通用合成器GS标准为基础而制订的。GM标准的提出得到了Windows操作系统的支持,使得数字音乐设备之间的信息交流得到了简化,受到全世界数字音乐爱好者的一致好评。

  1994年,YAMAHA公司在GM标准上于推出了自己的XG的MIDI格式,增加了更多数量的乐器组,扩大了MIDI标准定义范围,在专业音乐范围内得到广泛的应用。

  技术原理编辑

  MIDI是MusicalInstrumentDigitalInterface的缩写,

  MIDIMIDI

  直接翻译过来的意思就是乐器数字化接口,可以把MIDI理解成是一种协议、一种标准、或是一种技术,但它并不是单指某个硬件设备。

  MIDI仅仅是一个通信标准,它是由电子乐器制造商们建立起来的,用以确定电脑音乐程序、合成器和其他电子音响的设备互相交换信息与控制信号的方法,用于连接各种MIDI设备所用的电缆为5芯电缆,通常人们也把它称为MIDI电缆。

  MIDI系统实际就是一个作曲、配器、电子模拟的演奏系统。从一个MIDI设备转送到另一个MIDI设备上去的数据就是MIDI信息。MIDI数据不是数字的音频波形,而是音乐代码或称电子乐谱。

  MIDI是一种电子乐器之间以及电子乐器与电脑之间的统一交流协议。很多流行的游戏、娱乐软件中都有不少以MID、RMI为扩展名的MIDI格式音乐文件。

  MIDI文件是一种描述性的“音乐语言”,它将所要演奏的乐曲信息用字节进行描述。譬如在某一时刻,使用什么乐器,以什么音符开始,以什么音调结束,加以什么伴奏等等,MIDI文件本身并不包含波形数据,所以MIDI文件非常小巧。

  MIDI要形成电脑音乐必须通过合成。早期的ISA声卡普遍使用的是FM合成,即“频率调变”。它运用声音振荡的原理对MIDI进行合成处理,由于技术本身的局限,效果很难令人满意。声卡大都采用的是波表合成了,它首先将各种真实乐器所能发出的所有声音(包括各个音域、声调)进行取样,存储为一个波表文件。

  在播放时,根据MIDI文件记录的乐曲信息向波表发出指令,从“表格”中逐一找出对应的声音信息,经过合成、加工后回放出来。由于它采用的是真实乐器的采样,所以效果自然要好于FM。一般波表的乐器声音信息都以44.1KHz、16Bit的精度录制,以达到最真实的回放效果。理论上,波表容量越大合成效果越好。根据取样文件放置位置和由专用微处理器或CPU来处理的不同,波表合成又常被分为软波表和硬波表。
欢迎厂家入驻,推文!免费!微信:yinpinyingyong

161

积分

4

听众

36

音贝

音频应用

Rank: 1

积分
161
 楼主| 发表于 2016-7-16 |
  组成结构编辑
20160228005616_96287.jpg
  序列器

  MIDI作曲和核配器系统核心部分是一个被称为序列器的软件。

  MIDI代码MIDI代码

  这个软件即可以装到个人电脑里,也可做在一个专门的硬件里。序列器实际上是一个音乐词处理器(wordprocessor),应用它可以记录、播放和编辑各种不同MIDI乐器演奏出的乐曲。序列器并不真正的记录声音,它只记录和播放MIDI信息,这些信息从MIDI乐器来的电脑信息,就像印在纸上的乐谱一样,它本身不能直接产生音乐,MIDI本身也不能产生音乐,但是它包含有如何产生音乐所需的所有指令,例如用什么乐器、奏什么音符、奏得多快,奏得力度多强等。

  序列器可以是硬件,也可以是软件,它们作用过程完全与专业录音棚里多轨录音机一样,可以把许多独立的声音记录在序列器里,其区别仅仅是序列器只记录演奏时的MIDI数据,而不记录声音;它可以一轨一轨地进行录制,也可以一轨轨地进行修改,当你弹键盘音乐时,序列器记录下从键盘来的MIDI数据。一旦把所需要的数据存储下来以后,可以播放你刚作好的曲子。如果你觉得这一声部的曲子不错,可以把别的声部加上去,新加上去的声部播放时完全与第一道同步。

  作为单独设备的序列器,音轨数相对少一些,大概8~16轨,而作为电脑软件的序列器几乎多达50000个音符,64~200轨以上。序列器与磁带不同,它只受到硬件有效的RAM(RandomAccessMemory随机存储器)和存储容量的限制,所以作曲、配器根本用不着担心“磁带”不够用。

  接口

  MIDI是由电子乐器生产厂家为了不同型号的电子乐器的“交流”而产生的。[2]由于MIDI采用的是数字化技术,自然而然就很容易进入到计算机领域了。MIDI作为多媒体的一个重要组成部分,几乎达到了妇孺皆知的地步。而大家也已经把这种接口技术当作了电脑音乐的代名词。

  MIDI乐器的接口,有三种,MIDIOUT、MIDIIN、MIDITHRU。这些可以在MIDI乐器或带有MIDI的电子琴(很多电子琴上都有MIDI接口)上找到的。

  MIDIOUT是将乐器中的数据(MIDI消息)向外发送。

  MIDIIN是用于接收数据。

  MIDITHRU是将收到的数据再传给另一个MIDI乐器或设备,可以说是若干个乐器连接的接口。

  可以这样说,MIDI所描述的是将MIDI乐器弹奏出的音变成01010一样的数据输出,也可以将计算机中的软件将要表示的音变成01010的二进制数据通过声卡输出,或者接收一些01010的数据进行处理。

  通常一个标准的MIDI有16个通道,GM标准里的第10通道是专为打击乐设定的。

  早期的MIDI设备除了都能接受MIDI信号之外没有统一的标准,尤其是在音色排列的方式上更是“随心所欲”的。也就是说您在这台琴上制作完成的音乐拿到另一台不同型号的琴上播放时会变得面目全非,小提琴可能会变成小号,长笛可能会变成吉他,钢琴可能会变成大鼓……这对于专业音乐人士的工作并不会产生太大的影响,毕竟他们制作一次灌成唱片也就完事儿了,但是对于音乐爱好者之间的交流,尤其是多媒体的发展却极为不利。

  标准

  常见的MIDI标准由GM、GS、XG,各标准之间存在着竞争。

  GS标准是在ROLAND的早期产品MT-32和CM-32/64的基础之上,规定了MIDI设备的最大同时发音数不得少于24个、鼓镲等打击乐器作为一组单独排列、128种乐器音色有统一的排列方式等。有了这种排列方式,只要是在支持GS标准的设备上制作的音乐,拿到任何一台支持同样标准的设备上都能正常播放。

  GM标准的全称应该是“通用MIDI标准系统第一级”(GeneralMIDIsystemLevel1),在GS标准基础上,主要规定了音色排列、同时发音数和鼓组的键位,而把GS标准中重要的音色编辑和音色选择部分去掉了。GM的音色排列方式基本上沿袭了GS标准,只是在名称上进行修改,如把GS的Piano1改名为AcousticGrandPiano等。

  XG同样在兼容GM的基础上做了大幅度的扩展,如加入了“音色编辑”的功能,使得作曲家可以在MIDI乐曲中实时地改变乐器的音色;还加入了“音色选择”功能,在每一个XG音色上可以叠加若干种音色。
欢迎厂家入驻,推文!免费!微信:yinpinyingyong

250

积分

3

听众

89

音贝

音频应用

Rank: 1

积分
250
发表于 2016-7-16 |
主要功能编辑
_1.jpg
MIDI技术的一大优点就是它送到和存储在电脑里的数据量相当小,一个包含有一分钟立体声的数字音频文件需要约10兆字节(相当于7张软盘的容量)的存储空间。然而,一分钟的MIDI音乐文件只有2KB。这也意味着,在乐器与电脑之间的传输数据是很低的,也就是说即是最低档的电脑也能运行和记录MIDI文件。
通过使用MIDI序列器可以大大地降低作曲和配器成本,根本用不着庞大的乐队来演奏。音乐编导在家里就可把曲子创作好,配上器,再也用不着大乐队在录音棚里一个声部一个声部的录制了。只需要用录音棚里的电脑或键盘,把存储在键盘里的MIDI序列器的各个声部的全部信息输入到录音机上即可。
MIDI程序的设计目标就是要将所要演奏的音乐或音乐曲目,按其进行的节奏、速度、技术措施等要求,转换成MIDI控制语言,以便在这些MIDI指令的控制之下,各种音源在适当的时间点上,以指定的音色、时值、强度等、演奏出需要的音响。在录音系统中,还要控制记录下这些音响。MIDI所适应的范围只是电声乐曲或模拟其他乐器的乐曲。
MIDI技术的产生与应用,大大降低了乐曲的创作成本,节省了大量乐队演奏员的各项开支,缩短了在录音棚的工作时间,提高了工作效率。一整台电视文艺晚会的作曲、配器、录音,只需要一位音乐编导、一位录音师即可将器乐作(编)曲、配器、演奏,录音工作全部完成。
应用领域编辑
电视晚会的音乐编导可以用MIDI功能辅助音乐创作,
MIDIMIDI
或按MI-DI标准生成音乐数据传播媒介,或直接进行乐曲演奏。
如果在计算机上装备了高级的MIDI软件库,可将音乐的创作、乐谱的打印、节目编排、音乐的调整、音响的幅度、节奏的速度、各声部之间的协调、混响由MIDI来控制完成。
利用MIDI技术将电子合成器、电子节奏机(电子鼓机)和其他电子音源与序列器连接在一起即可演奏模拟出气势雄伟、音色变化万千的音响效果,又可将演奏中的多种按键数据存储起来,极大的改善了音乐演奏的能力和条件。
操作案例编辑
VB播放Midi声音
MS提供Midi*开头的函数在程序中操作Midi音乐。为此计算机可以依次调用MIDIOutOpen函数,midiOutShortMsg函数,最后调用midiOutClose函数来发出一个声音。
以下的代码都是midiOutShortMsg函数的代码,因为MIDIOutOpen和midiOutClose函数的代码都一样的,要使用下面的midiOutShortMsg的代码,需要在Load事件和QueryUnload实践中书写如下代码:
Dim midiHand As Long'窗口级别的全局常数
Private Sub Form_Load()
MIDIOutOpen midiHand, MIDI_MAPPER, 0, 0, 0'打开Midi媒体
End Sub
Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
midiOutClose midiHand'关闭Midi媒体
End Sub
并且注意要结束程序必须按窗口的关闭按钮(右上角的叉),不要按IDE上的方形按钮结束程序,否则QueryUnload事件是不会执行的。下次启动程序就会出错。
发声
midiOutShortMsg midiHand, &H463090
后面的参数是&H 00 7F 30 90(本来是&H007F3090,拆开来看),由于00开头,所以VB省略掉了。这是一个16进制数,需要从后往前看。90的9代表的就是格式信息中的9:开始发声,后面的0保留。然后是30,这是第一位的数据,根据上面表格的描述,这是需要发出的音符。16进制的30是十进制的48,而中央C的编号是60。最后的是46,同样如上面表格所写的,这是音量。
16进制数需要从后往前看,是由于Windows采用低字节序,一个16进制数低位在前,高位在后,所以表格中描述的第一个数据,即音符的数据反而在第二个数据音量的后面。
停止发声
midiOutShortMsg midiHand, &H7F3080
后面的参数是&H 00 7F 30 80(本来是&H007F3080,拆开来看),80的8代表的就是格式信息中的8:停止发声,后面的0保留。30依然是音符。7F的含义变了,如表格所说的是停止的速度,不过实际演示发现这个速度似乎对停止发声没影响,可能我作为一个程序员不是做音乐的听不出来。
改变音色
midiOutShortMsg midiHand, &H7FC0
后面的参数是&H 00 00 7F C0(本来是&H00007FC0,拆开来看),C0的C代表的就是格式信息中的C:改变音色,后面的0保留。7F是代表十进制127,可以查看下面通用标准获悉这是枪的音色。
欢迎厂家入驻,推文!免费!微信:yinpinyingyong

250

积分

3

听众

89

音贝

音频应用

Rank: 1

积分
250
发表于 2016-7-16 |
文件系统编辑

文件指令
MIDI文件有很多信息构成的指令。一些信息,只由1字节构成,有些有2个字节,还有一些有3个字节。有一类的MIDI信息,甚至可以包含无限的字节数。所有的信息有一点是共同的,那就是第一个字节的信息是状态。
状态字节的0x80到0xef是
20160228005642_14375.jpg
复杂MIDI系统
可以在16个MIDI通道的任何一个出现的信息。正因为如此,这些是所谓的声音信息。这些状态字节有8位二进制数,可以把8个二进制位分成两个 4位,即一个高位和一个低位 。例如,一个状态字节的0x92可细分成9 (高位 )和2 (低位 ) 。高位表示类型的MIDI信息,低位说明信息操作的MIDI通道序号。以下是所有可能的高位值,每个代表的声音信息类型:
8 =停止发声
9 =开始发声
a =轮指
b =改变控制器
c =改变音色
d =通道演奏压力(可近似认为是音量)
e =音高
譬如,0x92的消息类型是开始发声(即高位是9)。低位2意味着该消息是对MIDI通道2进行的。有16个可能的(逻辑的)MIDI通道, 0作为第一。
虽然MIDI状态字节计数的16个MIDI通道,作为号码为0到F (即15),所有的MIDI设备(包括计算机软件)显示的通道编号,是1至16。因此,状态字节发出的MIDI通道0被认为是通道1。这之间的差异是因为大部分人计数,是从一开始,而不是从零。
五线谱
第一线 = 低音鼓(Bass Drum 1)
第一间 = 低音鼓(Bass Drum 2)
第二线、第二间、第三线 = 不同音高的中音鼓(Floor Tom)
第三间 = 军鼓(Snare Drum,注意有两种不同的军鼓,音色比较相近,真正写谱时请尽量选择同一种军鼓)
第四线带×号 = 轻音铜钹(Ride Cymbal 1)
第四线、第四间、第五线 = 不同音高的中音鼓(Tom)
第五线带×号 = 轻音铜钹(Ride Cymbal 2)
上加一间带×号 = 脚踏钹(Hi-Hat,其中带圈圈的是长音,不带圈圈的是短音)
上加一线、上加一间 = 脆音铜钹(Crash Cymbal)
通道音量
类别:声音
状态字节
0xd0到0xdf而低位是MIDI通道。
数据
一个数据字节,值从0到127 (其中127是最响) 。
音高
类别:声音
状态字节
0xe0到0xef而低位是MIDI通道。
数据
后续两个数据字节。这两个字节应结合在一起,形成一个14位值。
系统专用信息
类别:系统公用
目的
用来传送一些数据,这是具体到一个MIDI设备。此外, sysex可能被用来传递信息,就是特定的装置。
状态字节
开始于0xf0 。结束于0xf7。
数据
可以有任何数量的数据字节。
状态字节的0xf0和0xff是不属于任何特定通道的。这些状态字节是用于给特定设备发送信息,如同步重放设备,以同步时间。 这些状态字节是进一步分为两大类。状态字节的0xf0到0xf7是所谓的系统公用的信息。状态字节的0xf8到0xff被称为系统的实时信息。
某些状态字节是没有界定的,并保留供以后使用。举例来说,状态字节的0xf4 , 0xf5 , 0xf9到0xfd尚未使用。如果MIDI设备任何时候收到这样的信息,它应忽略这一消息。
以下描述每个信息类型。
信息类型
类别
目的
说明
数据
停止发声
声音
指出要应该停止的音
0x80到0x8f而低位是MIDI通道。
后续两个数据字节。
第一个数据是音符号码。有128个音符,对MIDI设备,编号为0至127(其中,中央C是60号)。
第二个数据字节是速度,一个从0到127的值。这表明,应该多么迅速地停止发声(其中127是最快的)。
开始发声
声音
指出要发出的声音
0x90到0x9f而低位是MIDI通道。在理论上,每个音符最终应由各自的停止发声信息终了
第一个数据字节是音符号码,有128个音符,对MIDI设备,编号为0至127(其中,中央C是60号)。
第二个数据字节是音量,一个从0到127的值。
轮指
声音
对已经发出的声音连续再弹。
0xa0到0xaf而低位是MIDI通道
后续两个数据字节。
第一个数据是音符代号。有128可能的音符,对MIDI设备,编号为0至127个(其中中央C音符代号是60)。
第二个数据字节是音量的值,从0到127(其中127是强音) 。
控制器改变
声音
设定了一个特定控制器的值
状态字节0xb0 ,到0xbf而低位是MIDI通道
后续两个数据字节。
第一个数据是控制器的号码( 0到127)。
第二个数据字节的值是控制器应设置的值,从0到127 0xc0,到0xcf而低位是MIDI通道
改变音色
声音
改变音色
0xc0,到0xcf而低位是MIDI通道。对MIDI音色 ,定义了一套标准,以便更加兼容。这个规范是所谓的通用MIDI标准。
一个数据字节。这是乐器编号,从0到127 。


欢迎厂家入驻,推文!免费!微信:yinpinyingyong

161

积分

4

听众

36

音贝

音频应用

Rank: 1

积分
161
 楼主| 发表于 2016-7-16 |
通道编号
就像与MIDI通道0到15之间被显示成1至16,许多MIDI设备从1开始显示代号。在另一方面,这种做法是从来没有规范,一些设备使用截然不同的标准。通用MIDI标准如下:
钢琴
1 Acoustic Grand Piano 大钢琴
2 Bright Acoustic Piano 亮音大钢琴
3 Electric Grand Piano 电钢琴
4 Honky-Tonk Piano 酒吧钢琴
5 Rhodes Piano 练习音钢琴
6 Chorused Piano 合唱加钢琴
7 Harpsichord 拨弦古钢琴
8 Clavinet 击弦古钢琴
打击乐器
9 Celesta 钢片琴
10 Glockenspiel 钟琴
11 Music Box 八音盒
12 Vibraphone 电颤琴
13 Marimba 马林巴
14 Xylophone 木琴
15 Tubular Bells 管钟
16 Dulcimer 扬琴
风琴
17 Hammond Organ 击杆风琴
18 Percussive Organ 打击型风琴
19 Rock Organ 摇滚风琴
20 Church Organ 管风琴
21 Reed Organ 簧风琴
22 Accordion 手风琴
23 Harmonica 口琴
24 Tango Accordian 探戈手风琴
吉他
25 Acoustic Guitar (nylon) 尼龙弦吉他
26 Acoustic Guitar(steel) 钢弦吉他
27 Electric Guitar (jazz) 爵士乐电吉他
28 Electric Guitar (clean) 清音电吉他
29 Electric Guitar (muted) 弱音电吉他
30 Overdriven Guitar 驱动音效吉他
31 Distortion Guitar 失真音效吉他
32 Guitar Harmonics 吉他泛音
贝司
33 Acoustic Bass 原声贝司
34 Electric Bass(finger) 指拨电贝司
35 Electric Bass(pick) 拨片拨电贝司
36 Fretless Bass 无品贝司
37 Slap Bass 1 击弦贝司1
38 Slap Bass 2 击弦贝司2
39 Synth Bass 1 合成贝司1
40 Synth Bass 2 合成贝司2
弦乐独奏
41 Violin 小提琴
42 Viola 中提琴
43 Cello 大提琴
44 Contrabass 低音提琴
45 Tremolo Strings 弦乐震音
46 Pizzicato Strings 弦乐拨奏
47 Orchestral Harp 竖琴
48 Timpani 定音鼓
合唱合奏
49 String Ensemble 1 弦乐合奏1
50 String Ensemble 2 弦乐合奏2
51 SynthStrings 1 合成弦乐1
52 SynthStrings 2 合成弦乐2
53 Choir Aahs 合唱“啊”音
54 Voice Oohs 人声“嘟”音
55 Synth Voice 合成人声
56 Orchestra Hit 乐队打击乐
铜管乐器
57 Trumpet 小号
58 Trombone 长号
59 Tuba 大号
60 Muted Trumpet 弱音小号
61 French Horn 圆号
62 Brass Section 铜管组
63 Synth Brass 1 合成铜管1
64 Synth Brass 2 合成铜管2
哨片乐器
65 Soprano Sax 高音萨克斯
66 Alto Sax 中音萨克斯
67 Tenor Sax 次中音萨克斯
68 Baritone Sax 上低音萨克斯
69 Oboe 双簧管
70 English Horn 英国管
71 Bassoon 大管
72 Clarinet 单簧管
吹管乐器
73 Piccolo 短笛
74 Flute 长笛
75 Recorder 竖笛
76 Pan Flute 排笛
77 Bottle Blow 吹瓶口
78 Skakuhachi 尺八
79 Whistle 哨
80 Ocarina 洋埙
合成主音
81 Lead 1 (square) 合成主音1(方波)
82 Lead 2 (sawtooth) 合成主音2(锯齿波)
83 Lead 3 (calliope lead) 合成主音3(汽笛风琴)
84 Lead 4 (chiff lead) 合成主音4 (吹管)
85 Lead 5 (charang) 合成主音5(吉他)
86 Lead 6 (voice) 合成主音6(人声)
87 Lead 7 (fifths) 合成主音7(五度)
88 Lead 8 (bass+lead) 合成主音8(低音加主音)
合成柔音
89 Pad 1 (new age) 合成柔音1(新时代)
90 Pad 2 (warm) 合成柔音(暖音)
91 Pad 3 (polysynth) 合成柔音3(复合成)
92 Pad 4 (choir) 合成柔音4(合唱)
93 Pad 5 (bowed) 合成柔音5(弓弦)
94 Pad 6 (metallic) 合成柔音6(金属)
95 Pad 7 (halo) 合成柔音7(光环)
96 Pad 8 (sweep) 合成柔音8(扫弦)
合成特效
97 FX 1 (rain) 合成特效1(雨)
98 FX 2 (soundtrack) 合成特效2(音轨)
99 FX 3 (crystal) 合成特效3(水晶)
100 FX 4 (atmosphere) 合成特效4(大气)
101 FX 5 (brightness) 合成特效5(亮音)
102 FX 6 (goblins) 合成特效6(小妖)
103 FX 7 (echoes) 合成特效7(回声)
104 FX 8 (sci-fi) 合成特效8(科幻)
民族乐器
105 Sitar 锡塔尔
106 Banjo 班卓
107 Shamisen 三味线
108 Koto 筝
109 Kalimba 卡林巴
110 Bagpipe 风笛
111 Fiddle 古提琴
112 Shanai 唢呐
打击乐
113 Tinkle Bell 铃铛
114 Agogo 拉丁打铃
115 Steel Drums 钢鼓
116 Woodblock 木块
117 Taiko Drum 太鼓
118 Melodic Tom 嗵鼓
119 Synth Drum 合成鼓
120 Reverse Cymbal 镲波形反转
声音特效
121 Guitar Fret Noise 磨弦声
122 Breath Noise 呼吸声
123 Seashore 海浪声
124 Bird Tweet 鸟鸣声
125 Telephone Ring 电话铃声
126 Helicopter 直升机声
127 Applause 鼓掌声
128 Gunshot 枪声
实际代号应为列表中的代号减1。
乐器音色
17 Voice One 人声“One”
18 Voice Two 人声“Two
19 Voice Three 人声“Three”
22 MC-505 Beep 1 MC-505信号音1
23 MC-505 Beep 2 MC-505信号音2
24 Concert SD 大乐队小军鼓
25 Snare Roll 小军鼓滚奏
26 Finger Snap 2 响指2
(以上Roland SC-88 Pro)
27 Hi Q 激光枪声
28 Synth Slap 合成拍音
29 Scratch 2 高音刷音
30 Scratch 1 低音刷音
31 Sticks 鼓槌
32 Square Click 敲方板
33 Metronome Click 节拍器
34 Metronome Bell 节拍器重音
35 Acoustic Bass Drum 低音大鼓
36 Bass Drum 1 高音大鼓
37 Side Stick 鼓边
38 Acoustic Snare 小鼓
39 Hand Clap 拍手声
40 Electric Snare 电子小鼓
41 Low Floor Tom 低音落地嗵鼓
42 Closed Hi-Hat 合音踩镲
43 High Floor Tom 高音落地嗵鼓
44 Pedal Hi-Hat 踏音踩镲
45 Low Tom 低音嗵鼓
46 Open Hi-Hat 开音踩镲
47 Low-Mid Tom 中低音嗵鼓
48 Hi-Mid Tom 中高音嗵鼓
49 Crash Cymbal 1 低砸音镲
50 High Tom 高音嗵鼓
51 Ride Cymbal 1 低浮音镲
52 Chinese Cymbal 中国镲
53 Ride Bell 浮音镲碗
54 Tambourine 铃鼓
55 Splash Cymbal 溅音镲
56 Cowbell 牛铃
57 Crash Cymbal 2 高砸音镲
58 Vibraslap 颤音叉
59 Ride Cymbal 2 高浮音镲
60 Hi Bongo 高音邦戈
61 Low Bongo 低音邦戈
62 Mute Hi Conga 弱音康加
63 Open Hi Conga 高音康加
64 Low Conga 低音康加
65 High Timbale 高音铜鼓
66 Low Timbale 低音铜鼓
67 High Agogo 高音拉丁打铃
68 Low Agogo 低音拉丁打铃
69 Cabasa 沙锤
70 Maracas 响葫芦
71 Short Whistle 短哨
72 Long Whistle 长哨
73 Short Guiro 短锯琴
74 Long Guiro 长锯琴
75 Claves 击杆
76 Hi Wood Block 高音木块
77 Low Wood Block 低音木块
78 Mute Cuica 弱音吉加
79 Open Cuica 开音吉加
80 Mute Triangle 弱音三角铁
81 Open Triangle 开音三角铁
82 Shaker 沙锤(比69沙锤高)
83 Jingle Bell 铃铛
84 Bell Tree 铃树
85 Castanets 响板
86 Mute Surdo 弱音瑟多
87 Open Surdo 开音瑟多
88 Applause2 欢呼2(Roland SC-88Pro)
其中 60 代表标准音高(C5),其他数字以半音为单位依次相加或相减
欢迎厂家入驻,推文!免费!微信:yinpinyingyong

250

积分

3

听众

89

音贝

音频应用

Rank: 1

积分
250
发表于 2016-7-16 |
标准文件
MIDI文件包含一个或更多MIDI块与每个事件的时间信息。它支持歌曲、序列和音轨结构,拍子和拍号信息。 音轨名字和其他描述信息也可以与MIDI信息一同存储。 这个格式支持多条音轨、多个序列。这种格式可以允许用户从一个音轨移向另一个音轨。
用于MIDI文件的8位二进制的数据块可以在一个高效率的传输的MIDI二进制文件中,分解可以存储为7位数据,或被转换成其他的ASCII或者被翻译为一个文本文件。
1. MIDI序列文件由块组成。 每个块4个字节,有32位长度。 在苹果机上,数据通过在文件的数据叉,或者在剪贴板上进行传输。 (在Macintosh这个格式的文件类型是" Midi") 块结构允许被忽略跳过。
这里定义了块的二种类型: 文件头块和音轨块。 文件头块提供关于整个MIDI文件的最小数量信息。 音轨块包含的MIDI数据序列也许包含16条MIDI通道的信息。 使用多个音轨块,就可以用多条音轨、多个MIDI序列、谱式和歌曲。 MIDI文件总是以文件头块开始,紧随其后的是一个或多个音轨块。
MTrk块类型是存放实际歌曲数据的地方。它是MIDI事件(和非MIDI事件)的序列。在MTrk块的有些数字是以叫可变长的数量的形式进行存储的。 这些数字首先每个字节用7位,最高位不是有效位。 除最后一位之外的所有字节,最高位设为1;最后一个字节最高位设为0。 如果数字在0和127之间,它能正确地表示为一个字节。 这作为可变长的数量代表的数字的有些例子:
数字(十六进制) 变长表示法(十六进制)
00000000 00
00000040 40
0000007F 7F
00002000 C0 00
00003FFF FF 7F
00004000 81 80 00 00
100000C0 80 00
001FFFFF FF FF 7F
00200000 81 80 80 00
08000000 C0 80 80 00
0FFFFFFF FF FF FF 7F
允许的大数是0FFFFFFF,这是以可变长表示法表示的32位的最大数字。 理论上,大数是有可能的,但是实际中不必要。
MTrk块的句法: = + = < 经过的时间> 被作为一个可变长的量存储。 它代表以下事件之前所要经过的时间。 如果在音轨的第一个事件发生在音轨的开始,或者,如果二个事件同时发生,使用Δt的零。 Δt总是存在。 Δt的具体时间单位,在文件头块上指定。
=|<元event> | < MIDI event> 是所有MIDI通道消息。 使用连续状态时: 状态位也许在第一个事件以后被省去。 在文件的第一个事件必须指定状态。 Δt没有被认为是事件: 它是格式的整体部分。
<元event> 指定非MIDI信息。有用对这个格式,有这样的句法:
FF 所有阶事件从FF开始,然后有事件类型(总是少于128),然后有作为一个可变长的数量被存放的数据的长度,然后是数据。 如果没有数据,长度是0。
< sysex event> 使用指定MIDI系统专属消息,或者作为" escape" 指定将被传送的任何任意字节。 不幸地是,一些合成器制造者指定他们的系统专属消息将被作为小包传送。 每个小包作为一则整个语法系统专属消息的部分,但是他们被传送的时间是很重要的。这样的例子是在CZ补丁传送的字节或者FB-01' s " 系统独家新闻" 中,可以传送部分数据。 为了能处理像这样的情况, 两个形式的被提供了:
F0 <长度> <数据>
F7 <长度> <数据>
在两种情况下, 长度被作为一个可变长的数量存放,等于跟随它的字节数,不包括本身或消息类型(F0或F7),但是包括跟着的所有字节,包括所有在意欲被传送的信息末端的F7。 绝大多数的系统专属消息将使用F0格式。 例如,被传送的消息F0 43 12 00 07 F7在MIDI文件将被存储为F0 05 43 12 00 07 F7。 如上所述,所有信息要求在末端包含F7,以便MIDI文件的处理程序知道它读了全部的信息。 对于特别的情况,当一则唯一的系统专属信息被分开成多段,分到不同的时间传送时, 小包除了最后一个都以F7结束。 不能在多个小包之间传递任何其他的系统专属信息。 例如:
假设字节43 12 00将首先被传送到F0,紧随着200个时间单位的延迟,再紧随着由字节43 12 00 43 12 00组成的数据,再紧随着100各时间单位的延迟,再紧随着由字节43 12 00 F7组成的数据,这在MIDI文件是这样的: F0 03 43 12 00 81 48
200个单位的Δt
81 48 F706 43 12 00 43 1200 64
100个单位的Δt
64 F7 04 43 12 00 F7
F7事件也许也使用作为" escape" 传送任何字节,包括实时字节、歌曲名或者MIDI时间代码,在这个规格通常没有被规定。
文件头块
在文件初的文件头块指定在文件中关于数据的一些基本信息。数据部分包含三个16位的字段,首先被存放高位字节(当然)。 这里有完整的块的句法:
<块类型><块长度><格式><音轨数><分区>
如上所述,块类型是四个ASCII字符' MThd' ; 随后的长度是一个6 (高位优先的32位数字表示法)。 格式,是指定文件的整体组织。
格式的只有三种值,指定三种格式:
0 文件包含一条唯一的多通道音轨
1 文件包含一个或更多同时的音轨
2 文件包含一个或更多独立的音轨,相继进行播放
音轨数,是文件中音轨块的数量。
分区,是在文件的Δt之中1代表的是一秒的多少分之一。
格式0 ,多通道的音轨,是最容易转换的数据。应用格式1 的MIDI文件可以很容易转换成这种格式。声音是最重要的东西,格式并不重要。这种转换是非常应该的,这可以化繁为简。
MIDI文件有可以表达的节奏和拍号的信息。对于0的文件格式,节奏,将分散的存储;对于格式1,节奏必须(在0.04版起)一起储存,作为第一条音轨。这个规定是合理的。
所有的MIDI文件,应指定节奏和拍号。如果他们不这样做,拍号假设为4 / 4 ,节奏和节拍120每分钟。在格式0中 ,这些元事件应该在开头。在格式1 中,这些元事件应包含在第一个音轨中。在格式2 中,每一独立的音轨,应至少包含一条拍号和节奏的信息。
元事件
不是每个程序,都必须支持每一个元事件。元事件最初的定义包括:
序列数
FF 00 02 ssss
这一类事件,必须发生在音轨的开头,在任何非零时间后发生的事件或可传送的MIDI信息之前,用于指定序列的数目。序列数对应在这条音轨的序列数。在一个格式0或1 MIDI文件,其中只包含一个序列,这个数字应包含在第一个音轨。
文字事件
FF 01 长度 文字
任何数量描述任何事情的文字。在音轨开头放上这条音轨的相关的所有信息是很好的,这有助于日后查看。文本事件也可能发生在其他时间,被用来作为歌词。在此事件中文本应用可打印的ASCII字符进行书写。
元事件类型01到0F的是预留给各种类型的文本使用的,但使用的目的各不相同:
版权公告
FF 02 长度 文本
载有版权声明,作为打印ASCII文本。文本中应包含字符( c ),版权所有的时间,版权所有者。如果几段音乐是在同一个MIDI文件中,所有的版权声明应放在一起,把它放在文件的开头。这个事件应该是第一个事件,在时间0放在第一条音轨块。
序列/音轨的名称
FF 03长度 文本
乐器名称
FF 04长度 文本
说明该类型的乐器将用于在这一条音轨中使用。
歌词
FF 05长度 文本
写明歌词。一般来说,每个音节将是一行单独的歌词,应该写清时间
标记
FF 06长度 文本
通常在一个格式0的音轨,或在格式1的第一个音轨。
注释点
FF 07长度 文本
描述一些在这一点上发生在电影或视频屏幕或舞台的动作或事件
音轨终止
FF 2F 00
此事件必须的,以便确定的结束点。
设定速度,以毫秒(ms)为单位,是四分音符的时值
FF 51 03 tttttt
这个事件可以精确的写清楚这条音轨的速度。 用每拍所占的时间而不是单位时间内的拍数表示速度,使得依据一个基于时间的同步协议(例如SMPTE时间代码或MIDI时间代码)实现时间的绝对同步成为可能。 这种准确性使四分钟左右的曲子在每分钟的120拍下结束时,时间误差在500 微秒之内。
SMPTE 时间同步
FF 54 05 hr mn se fr ff
这一事件,如果存在的话,将指定某一个特定事件开始的SMPTE时间。它应出现在音轨的开头,在任何非零时间后发生的事件或可传送的MIDI信息之前。
拍号标记
FF 58 04 nn dd cc bb
因此,完整的 6 / 8拍号应该表示为
FF 58 04 06 03 24 08
三十二分音符。
谱号信息
FF 59 02 sf mf
sf指明乐曲曲调中升号、降号的数目。例如,A大调在五线谱上注了三个升号,那么sf=03。又如,F大调,五线谱上写有一个降号,那么sf=81。 也就是说,升号数目写成0x,降号数目写成8x
mf指出曲调是大调还是小调。大调mf=00,小调mf=01
对于序列器的元数据
FF 7F长度 数据
特殊要求,尤其是时序可能会使用此事件类型:第一个字节或字节的数据是一个制造商的ID 。
作为一个例子, 把一个MIDI文件摘录如下所示。
内容的MIDI流所代表的这个例子,细分在这里:
Δt(十进制) 事件号(十六进制) 其他数据(十进制) 说明
0 FF 58 04 04 02 24 08
0 FF 51 03 500000
0 C0 5 通道1, 音色5
0 C1 46 通道2, 音色46
0 C2 70 通道3, 音色70
0 92 48 96 通道3 开始弹奏C2, 用力
0 92 60 96 通道3 开始弹奏C3, 用力
96 91 67 64 通道2 开始弹奏G3, 用力
96 90 76 32 通道1 开始弹奏E4, 钢琴
192 82 48 64 通道3 停止弹奏C2, 标准
0 82 60 64 通道3 停止弹奏C3, 标准
0 81 67 64 通道2 停止弹奏G3, 标准
0 80 76 64 通道1 停止弹奏E4, 标准
0 FF 2F 00 结束
整个格式0 的MIDI文件的内容,首先,文件头块:
4D 54 68 64 MThd
00 00 00 06 块长度
00 00  格式 0
00 01  一个音轨
00 60  一个MIDI时间间隔等于96分之一秒
接着,音轨块,
4D 54 72 6B MTrk
00 00 00 3B 音轨长度(59字节)
时间 事件
00 FF 58 04 04 02 18 08  拍号4/4
00 FF 51 03 07 A1 20  速度
00 C0 05
00 C1 2E
00 C2 46
00 92 30 60
00 3C 60
60 91 43 40
60 90 4C 20
81 40 82 30 40
00 3C 40
00 81 43 40
00 80 4C 40
00 FF 2F 00 终止
类似的,可以把这个文件写成1格式。
MIDI格式在网络传送中,通常采用7位数据传送方式,这样可以大大提高传输速度。
MIDI格式由于体积很小,非常便于传送;而且,由于它很有利于创作音乐,是很多作曲家在创作初期的首选。
MIDI格式由于其特殊的记录方式,受硬件影响较大。
MID格式文件很容易被人误解,很多人在电脑上直接播放MID后总会说“MID音质特别差”。这里再次要强调一遍,MID文件不是音频文件,它的作用只相当于一个文本文档,记录了音乐该如何进行。MIDI回放音色完全取决于声卡,之所以在windows系统上播放MID不能取得良好效果是因为系统自带的音色库比较简单。如果需要得到很不错的音色,则另需加装专业软音源插件,一块专业声卡也是必不可少的。
具体实例
4d 54 68 64 // “MThd”
00 00 00 06 // 长度always 6,后面有6个字节的数据
00 01 // 0-单轨; 1-多规,同步; 2-多规,异步
00 02 // 轨道数,即为”MTrk”的个数
00 c0 // 基本时间格式,即一个四分音符的tick数,tick是MIDI中的最小时间单位
4d 54 72 6b // “MTrk”,全局轨为附加信息(如标题版权速度和系统码(Sysx)等)
00 00 00 3d // 长度
00 ff 03 // 音轨名称
05 // 长度
54 69 74 6c 65 // “Title”
00 ff 02 // 版权公告
0a // 长度
43 6f 6d 70 6f 73 65 72 20 3a // “Composer :”
00 ff 01 // 文字事件
09 // 长度
52 65 6d 61 72 6b 73 20 3a // “Remarks :”
00 ff 51 // 设定速度xx xx xx,以微秒(us)为单位,是四分音符的时值
03 // 长度
07 a1 20 // 四分音符为 500,000 us,即 0.5s
00 ff 58 // 拍号标记
04 // 长度
04 02 18 08 // nn dd cc bb 拍号表示为四个数字。nn和dd代表分子和分母。分母指的是2的dd次方,例如,2代表4,3代表8。cc代表一个四分音符应该占多少个MIDI时间单位,bb代表一个四分音符的时值等价于多少个32分音符。 因此,完整的 6 / 8拍号应该表示为 FF 58 04 06 03 24 08 。这是, 6 / 8拍号( 8等于2的三次方,因此,这里是06 03),四分音符是32个MIDI时间间隔(十六进制24即是32),四分音符等于8个三十二分音符。
00 ff 59 // 谱号信息
02 // 长度
00 00 // sf mf 。sf指明乐曲曲调中升号、降号的数目。例如,A大调在五线谱上注了三个升号,那么sf=03。又如,F大调,五线谱上写有一个降号,那么sf=81。也就是说,升号数目写成0x,降号数目写成8x 。mf指出曲调是大调还是小调。大调mf=00,小调mf=01。
00 ff 2f 00 // 音轨终止
4d 54 72 6b // “MTrk”,普通音轨
00 00 01 17 // 长度
00 ff 03 // 00: delta_time; ff 03:元事件,音轨名称
06 // 长度
43 20 48 61 72 70 // “C Harp”
00 b0 00 00 // 00:delta_time; bn:设置n通道控制器; xx:控制器编号; xx:控制器值。此处为设置0通道0号控制器值为0。
00 b0 20 00 // 此处为设置0通道32号控制器值为0。
00 c0 16 // 00:delta_time; cn:设置n通道音色; xx:音色值。此处为设置0通道音色值为22 Accordion 手风琴。
84 40 b0 65 00 // 此处为设置0通道101号控制器值为0。
00 b0 64 00 // 此处为设置0通道100号控制器值为0。
00 b0 06 18 // 此处为设置0通道6号控制器值为0。
00 b0 07 7e // 此处为设置0通道7号控制器(主音音量)值为126。
00 e0 00 40 // 00:delta_time; en:设置n通道音高; xx yy:各取低7bit组成14bit值。此处为设置0通道音高值为64。
00 b0 0a 40 // 此处为设置0通道7号控制器(主音音量)值为126。
00 90 43 40 // 00:delta_time; 9n:打开n通道发音; xx yy: 第一个数据是音符代号。有128个音,对MIDI设备,编号为0至127个(其中中央C音符代号是60)。 第二个数据字节是速度,从0到127的一个值。这表明,用多少力量弹奏。 一个速度为零的开始发声信息被认为,事实上的一个停止发声的信息。此处为以64力度发出67音符。
81 10 80 43 40 // 81 10:delta_time; 8n:关闭n通道发音; xx yy: 第一个数据是音符代号。有128个音,对MIDI设备,编号为0至127个(其中中央C音符代号是60)。 第二个数据字节是速度,从0到127的一个值。这表明,用多少力量弹奏。 一个速度为零的开始发声信息被认为,事实上的一个停止发声的信息。此处为以64力度关闭67音符。
00 90 43 40
30 80 43 40
00 90 45 40
81 40 80 45 40
00 90 43 40
81 40 80 43 40
00 90 48 40
81 40 80 48 40
00 90 47 40
83 00 80 47 40
00 90 43 40
81 10 80 43 40
00 90 43 40
30 80 43 40
00 90 45 40
81 40 80 45 40
00 90 43 40
81 40 80 43 40
00 90 4a 40
81 40 80 4a 40
00 90 48 40
83 00 80 48 40
00 90 43 40
81 10 80 43 40
00 90 43 40
30 80 43 40
00 90 4f 40
81 40 80 4f 40
00 90 4c 40
81 40 80 4c 40
00 90 48 40
81 40 80 48 40
00 90 47 40
81 40 80 47 40
00 90 45 40
83 00 80 45 40
00 90 4d 40
81 10 80 4d 40
00 90 4d 40
30 80 4d 40
00 90 4c 40
81 40 80 4c 40
00 90 48 40
81 40 80 48 40
00 90 4a 40
81 40 80 4a 40
00 90 48 40
83 00 80 48 40
01 b0 7b 00 // 00:delta_time; bn:设置n通道控制器; xx:控制器编号; xx:控制器值。此处为设置0通道123号控制器(关闭所有音符)值为0。
00 b0 78 00 // 00:delta_time; bn:设置n通道控制器; xx:控制器编号; xx:控制器值。此处为设置0通道120号控制器(关闭所有声音)值为0。
00 ff 2f 00 // 音轨终止
欢迎厂家入驻,推文!免费!微信:yinpinyingyong
您需要登录后才可以回帖 登录 | 快速注册

本版积分规则

音频应用搜索

小黑屋|手机版|音频应用官网微博|音频应用 (鄂ICP备16002437号)

Powered by Audio app

快速回复 返回顶部 返回列表