【多媒体文件格式】MIDI、SMF、IMY、XMF、MMF、SMAF、RTTTL

MIDI

音乐数字接口(Musical Instrument Digital Interface,简称MIDI)是一个工业标准的电子通信协议,为电子乐器等演奏设备(如合成器)定义各种音符或弹奏码,容许电子乐器电脑手机或其它的舞台演出设备彼此连接,调整和同步,得以即时交换演奏资料。

MIDI不发送声音,只发送像是音调和音乐强度的数据,音量,颤音和相位[1]等参数的控制信号,还有设置节奏的时脉信号。在不同的电脑上,输出的声音也因音源器不同而有差异。

MIDI演出控制协议(MSC Protocol)是为MIDI而设的工业标准,由MIDI产业协会在1991年制定。它允许不同种类的媒体控制设备在相互之间的通信,借助电脑可以现场进行演出控制的功能与娱乐应用。与音乐MIDI相同,MSC并不传输实际显示的媒体- 它只是简单地传输有关多媒体性能的指令。

现在几乎所有的录音工程都将MIDI作为一项关键开放技术来纪录音乐。除此之外,MIDI也用来控制包括录音设备的硬件,如舞台灯、效果器踏板等高性能的设备。近十年,MIDI已经迈入移动电话领域。MIDI可用来播放支持MIDI移动电话的铃声。MIDI还可为某些电子游戏电脑游戏提供背景音乐。

MIDI标准是在1981年由工程师戴夫·史密斯音频工程协会提出的一篇论文,MIDI 1.0于1983年8月发布。

MIDI使得电脑、合成器声卡以及电子乐器(电子鼓、电子琴等)能互相控制、交换消息。现在电脑的声卡都是与MIDI兼容的,并能逼真地模拟乐器的声音。

许多音乐的文件格式,都建构于MIDI档之上。这些格式可说就是电子乐器在看的电子乐谱,所以通常一个文件只需几十KB,就能够让电子乐器演奏出一首很完整的音乐。

MIDI格式的标准由MIDI制造商协会(MMA)和电子音乐制造商协会(AMEI)共同制定。这两个组织在1983年联合成立,旨在推动数字音频技术的发展,并促进各种电子乐器之间的互通性。

MMA和AMEI负责管理、更新和发布MIDI规范,以确保其在不断变化的数字音频环境中仍能保持稳定和可靠。这些规范包括MIDI 1.0、General MIDI(GM)、General Standard(GS)等。此外,它们还制定了一些附加标准,如Universal System Exclusive(USX)等,以便更好地支持各种设备之间的通信。

SMF

SMF格式(Standard MIDI File)是一种标准的MIDI文件格式,用于保存MIDI音乐数据,可以在不同的MIDI设备和软件之间共享和使用。

SMF格式最初由日本电子工业发展协会(JEIDA)在1988年提出,并被国际标准化组织(ISO)认可为标准。它的设计目的是使MIDI音乐数据能够跨平台、跨设备、跨软件传输和播放,从而促进MIDI技术的普及和发展。

SMF格式采用了一种简单但有效的方式来存储MIDI音乐数据,将每个音符的信息按照时间顺序排列,并以事件流(Event Stream)的形式保存。这样就可以很容易地将不同设备或软件中产生的MIDI数据转换成SMF格式并进行传输或播放。

目前,SMF格式已经成为了世界范围内广泛使用的标准 MIDI 文件格式之一,被众多音乐制作软件、硬件以及各种移动设备所支持。

IMY

imy [1] (iMelody Ringtone Format):这是被专门设计用于EMS(增强型短信)中的铃声,于2000年由爱立信提出,并于2001年6月得到3GPP认可成为国际标准,i-Melody是一种基于文本的方式标志音调的单音节铃声(非和弦),它可以用代码调用手机的解码芯片发出一些声音,以及对振动、屏幕背光、来电灯的控制。它的标准化工作由IrDA负责。IMY实际上就是为了给用户提供的一种应用功能,让用户可以自己编音乐,用手机的“自编铃声”就能编辑制作。

XMF

XMF全称Extensible Music Format,即可扩展音乐格式。它是一种用于捆绑音乐为向导的树结构数字容器格式,由单个或多个文件组成,如标准MIDI文件、WAV文件、可下载声音(DLS)乐器文件或数字音频文件等。它生成用于表示一段音乐的所有资源的汇编。它是一种树结构的容器格式。

XMF是作为沿用多年的标准MIDI文件格式的升级版本,由MIDI制造商协会 (MMA) 开发和维护。

XMF文件可以在同一个文件里包含了SMF、GM(和GM2)、DLS(和DLS-2)等多种规定。也就是说,MIDI文件可以和软采样音色、音频录音存放在一个文件中了。XMF文件的播放虽然还要依靠一定的硬件,但是XMF和压缩音频格式.MP3不同,它可以拆分、编辑、再创造,显然更加灵活。

今后多媒体文件会更多在网络上传播,而创建XMF这样一种多媒体格式显然很有意义。

MMF/SMAF

MMF文件是SMAF格式的音频文件,SMAF格式是雅马哈公司推出的一种常见的手机铃声格式。MMF文件被广泛应用于手机铃声。

SMAF全称Synthetic music Mobile Application Format,是雅马哈为了手机及PDA等便携终端器上用的多媒体内容(节目)而设计的数据形式的规格。国内常见有MA2(16和弦)、MA3(40和弦)、MA5(64和弦)三种。

SMAF格式包容性极大,支持根据不同的手机配置,分别支持和弦、波形、语音合成等内容。

MMF其实就是.MIDI文件的一种,在本质上MMF的工作原理与MIDI大同小异。MMF与MIDI文档相比,具有尺寸小、表现力强的优点。

RTTTL

(Ring Tone Text Transfer Language):RTTTL格式是标准的手机铃声格式,已经被许多手机所支持。很多外国的类似网站会以RTTTL来提供手机响铃。使用RTTTL的好处是以纯文字格式储存,传送及修改都很方便,但坏处是不能即时试听。

参考

1、MIDI - 维基百科,自由的百科全书

2、MID文件扩展名_MID是什么格式 - 文件百科

3、smf_百度百科

4、SMF(Standard MIDI File, .mid)格式讲解 - 知乎专栏

5、imy_百度百科

6、XMF文件扩展名_XMF是什么格式 - 文件百科

7、XMF - 维基百科,自由的百科全书

8、MMF文件扩展名_MMF是什么格式 - 文件百科

9、RTTTL_百度百科

10、什么是.rtttl文件,如何打开它? - FileInfo-文件扩展名数据库

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 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、付费专栏及课程。

余额充值