MIDI文件介绍以及和raw格式的区别

一、MIDI是什么?

MIDI是英语Music Instrument Digital Interface 的缩写,翻译过来就是“数字化乐器接口”,也就是说它的真正涵义是一个供不同设备进行信号传输的接口的名称。我们如今的MIDI音乐制作全都要靠这个接口,在这个接口之间传送的信息也就叫MIDI信息。 MIDI最早是应用在电子合成器——一种用键盘演奏的电子乐器上, 由于早期的电子合成器的技术规范不统一,不同的合成器的链接很困难,在1983年8月,YAMAHA、ROLAND、KAWAI等著名的电子乐器制造厂商联合指定了统一的数字化乐器接口规范,这就是MIDI1.0技术规范。此后,各种电子合成器已经电子琴等电子乐器都采用了这个统一的规范,这样,各种电子乐器就可以互相链接起来,传达MIDI信息,形成一个真正的合成音乐演奏系统。

经常玩音乐的人应该常听到MIDI(Musical InstrumentDigitalInterface音乐设备数字接口)这个词,MIDI允许数字合成器和其他设备交换数据。MID文件格式由MIDI继承而来。MID文件并不是一段录制好的声音,而是记录声音的信息,然后在告诉声卡如何再现音乐的一组指令。这样一个MIDI文件每存1分钟的音乐只用大约5~10KB。今天,MID文件主要用于原始乐器作品,流行歌曲的业余表演,游戏音轨以及电子贺卡等。*.mid文件重放的效果完全依赖声卡的档次。*.mid格式的最大用处是在电脑作曲领域。*.mid文件可以用作曲软件写出,也可以通过声卡的MIDI口把外接音序器演奏的乐曲输入电脑里,制成*.mid文件。

一个mid文件主要包括两部分,标头数据和音轨数据。简介的第二部分介绍标头数据,第三部分介绍音轨数据。mid文件包含仅一个标头数据来描述文件格式等,和任意数量的音轨数据。一个音轨可以被理解为多声道磁带的磁轨你可以指定一个音轨为一个声音,一段填充空白,一个乐器或希望的什么东西。

由于多媒体计算机技术的迅速发展,计算机对数字信号的强大的处理能力,使得计算机处理MIDI信息成为顺理成章的事情了,所以,现在不少人把MIDI音乐称之为电脑音乐。事实上,利用多媒体计算机不但可以播放、创作和实时地演奏MIDI音乐。甚至可以把MIDI音乐转变成看的见的乐谱(五线谱或简谱)打印出来,反之,也可以把乐谱变成美妙的音乐。利用MIDI的这个性质,可以用于音乐教学(尤其是识谱),让学生利用计算机学习音乐知识和创作音乐。

二、MIDI文件的性质

所谓MIDI文件实质上是指计算机中记录的MIDI信息的数据,MID文件的扩展名是*.mid。它和另外一种计算机中常用的声音波形文件(*.wav文件)有什么不同呢?表面上,两种文件都可以产生声响效果或音乐,但它们的本质是完全不同的。普通的声音文件(*.wav文件)是计算机直接把声音信号的模拟信号经过取样——量化处理,变成与声音波形对应的数字信号,记录在计算机的储存介质(硬盘或光盘)中。通常,声音文件都比较大,如记录一分钟的声音(立体声、CD音质),大概需要10.5M的储存空间。一首几分钟的歌曲需要几十兆的硬盘,一张CD光盘只能容纳十来首歌曲。为了减少声音文件储存的空间,近年来在计算机技术上采用了压缩技术,把声音文件经过处理,在不太影像播放质量的前提下,把文件的大小压缩到原来的10~12分之一,这就是近年流行的MP3文件格式。而MIDI文件则不是直接记录乐器的发音,而是记录了演奏乐器的各种信息或指令,如用哪一种乐器,什么时候按某个键,力度怎么样等等,至于播放时发出的声音,那是通过播放软件或者音源的转换而成的。因此MIDI文件通常比声音文件小得多,一首乐曲,只有十几K或几十K,只有声音文件的千分之一左右,便于储存和携带。

三、关于MIDI软件

MIDI软件有多种类型,有MIDI播放软件、演奏软件和创作软件几类。通常,大多数的媒体播放器都可以播放MIDI音乐,如WINDOWS95\98的媒体播放器(Windows Media Player)就可以播放MIDI,而且通常是系统的默认播放器,这类播放器在使用中不能对MIDI音乐的参数进行调节。除了媒体播放器以外,MIDI演奏软件和创作软件都可以作为MIDI的播放器使用,这些软件在播放MIDI音乐时,还可以选择不同的音源(波表)播放方式,以获得最佳的播放效果,而且还可以改变MIDI的参数产生出新的播放效果,如改变播放速度、改变乐器音色(如把钢琴演奏曲变成小提琴演奏)、升降调等,大部分软件还可以显示MIDI音乐所对应的乐谱(五线谱或简谱)甚至歌词内容等信息,还可以把乐谱打印出来。


转载地址

转载地址

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要实现对MIDI文件格式的支持和操作,可以使用Java MIDI API中的相关类和方法。在Java MIDI API中,MIDI文件以标准的MIDI文件格式(SMF)存储。SMF文件由一个或多个MIDI轨道组成,每个轨道包含一系列MIDI事件。 下面是一些操作MIDI文件的示例代码: ### 读取MIDI文件 ```kotlin import javax.sound.midi.* fun readMidiFile(filename: String): Sequence = MidiSystem.getSequence(FileInputStream(File(filename))) ``` 使用`MidiSystem.getSequence()`方法读取MIDI文件,该方法将返回一个`Sequence`对象,代表MIDI序列。 ### 写入MIDI文件 ```kotlin import javax.sound.midi.* fun writeMidiFile(sequence: Sequence, filename: String) { val file = File(filename) MidiSystem.write(sequence, 1, file) } ``` 使用`MidiSystem.write()`方法将`Sequence`对象写入MIDI文件中。 ### 操作MIDI轨道 ```kotlin import javax.sound.midi.* fun manipulateTrack(sequence: Sequence, trackNumber: Int) { val track = sequence.tracks[trackNumber] // 在轨道中添加一个MIDI事件 val noteOn = ShortMessage(ShortMessage.NOTE_ON, 0, 60, 93) val noteOff = ShortMessage(ShortMessage.NOTE_OFF, 0, 60, 0) val noteOnEvent = MidiEvent(noteOn, 0) val noteOffEvent = MidiEvent(noteOff, 100) track.add(noteOnEvent) track.add(noteOffEvent) // 修改轨道中的MIDI事件 val event = track.get(0) if (event.message is ShortMessage) { val message = event.message as ShortMessage message.data1 = 62 } // 删除轨道中的MIDI事件 track.remove(noteOffEvent) } ``` 使用`Sequence.tracks`属性获取`Sequence`对象中的所有轨道,然后可以使用`Track`对象的方法来添加、修改和删除MIDI事件。 这些代码只是Java MIDI API的一小部分,更多的类和方法可以在Java官方文档中找到。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值