MIDI音频格式解析

由于网上关于MIDI音频格式的实例解析较少,

而本人这段时间刚好有做相关的应用,

所以,特别分享MIDI的解析实例,

希望对大家有所帮助。

 1  0x4D , 0x54 , 0x68 , 0x64 ,  // "MThd"
 2  0x00 , 0x00 , 0x00 , 0x06 ,  // 头块长度:不包括前4字节和本4字节
 3  0x00 , 0x01 , // 格式;1-多轨,同步
 4  0x00 , 0x03 , // 轨道数 = 3
 5  0x01 , 0xE0 , // 基本时间格式 0x01E0 = 480;
 6
 7  0x4D , 0x54 , 0x72 , 0x6B ,  // "MTrk"
 8  0x00 , 0x00 , 0x00 , 0x15 ,  // 21 该规长度:不包括前4字节和本4字节
 9  0x00 , // 时间差
10  0xFF , 0x58 , 0x04 , 0x04 , 0x02 , 0x18 , 0x08 , // 其他功能、节拍、长度4、分子4、分母4、节拍器时钟24、一个四分音符包含的32分音符的个数8
11  0x00 , // 时间差
12  0xFF , 0x51 , 0x03 , 0x0C , 0x35 , 0x00 , // 其他功能、速度、长度3:1个四分音符的微秒数800,000
13  0x84 , 0xE7 , 0x00 , // 时间差:128^2*4+128*103+0 = 78720
14  0xFF , 0x2F , 0x00 ,  // 音轨结束标志。
15
16  0x4D , 0x54 , 0x72 , 0x6B , // "MTrk"
17  0x00 , 0x00 , 0x09 , 0xC9 , // 2505 该规长度:
18  0x00 , // 时间差
19  0xFF , 0x03 , 0x07 , // 歌曲标题,音轨名称,长度7
20  0x54 , 0x72 , 0x61 , 0x63 , 0x6B , 0x20 , 0x31 , // "Track 1"
21  0x00 , // 时间差
22  0xFF , 0x04 , 0x1F , // 乐器名称,长度31,--"Microsoft GS Wavetable SW Synth"
23  0x4D , 0x69 , 0x63 , 0x72 , 0x6F , 0x73 , 0x6F , 0x66 , 0x74 , 0x20 , 0x47 , 0x53 , 0x20 , 0x57
24  , 0x61 , 0x76 , 0x65 , 0x74 , 0x61 , 0x62 , 0x6C , 0x65 , 0x20 , 0x53 , 0x57 , 0x20 , 0x53 , 0x79 , 0x6E , 0x74
25  , 0x68 ,
26
27  0x00 , // 时间差
28  0xB0 , 0x0A , 0x40 , // 调换控制,控制号10(声像控制器),(CAKEWALK默认值是64)新值64
29
30  0x89 , 0x30 , // 时间差=128*9+48=1200us
31  0x90 , 0x40 , 0x50 , // 音符打开,音符号64,速度80  (E5 : MI)
32
33  0x81 , 0x58 , // 时间差=128*1+88=216us
34  0x80 , 0x40 , 0x40 , // 音符关闭,音符号64,速度64  (E5 : MI)
35
36  0x18 , // 时间差=24us
37  0x90 , 0x45 , 0x50 , // 音符打开,音符号69,速度80  (A5 : La)
38
39  0x81 , 0x58 , // 时间差=128*1+88=216us
40  0x80 , 0x45 , 0x40 , // 音符关闭,音符号69,速度64  (A5 : La)
41
42  0x18 ,
43  0x90 , 0x47 , 0x50 , // 音符打开,音符号71,速度80  (B5 : Si)
44
45  0x81 , 0x58 , // 时间差=128*1+88=216us
46  0x80 , 0x47 , 0x40 , // 音符关闭,音符号71,速度64  (B5 : Si)
47
48  0x18 ,
49  0xB0 , 0x40 , 0x7F , // 调换控制,控制号64(延音控制器),新值117
50
51  0x00 , // 时间差
52  0x90 , 0x48 , 0x64 , // 音符打开,音符号72,速度100 (C6 : Do)
53
54  0x00 , // 时间差
55  0x90 , 0x45 , 0x50 , // 音符打开,音符号69,速度80 (A5 : La)
56
57  0x83 , 0x60 , // 时间差=128*3+96=480us
58  0x80 , 0x48 , 0x40 , // 音符关闭,音符号72,速度64 (C6 : Do)
59
60  0x00 , // 时间差
61  0x80 , 0x45 , 0x40 , // 音符关闭,音符号69,速度64  (A5 : La)
62
63  0x00 , // 时间差
64  0x90 , 0x4A , 0x64 , // 音符打开,音符号74,速度100  (D6 : RE)
65
66  0x81 , 0x70 , // 时间差=128*1+102=230us
67  0x80 , 0x4A , 0x40 , // 音符关闭,音符号74,速度64  (D6 : RE)
68
69  0x00 , // 时间差
70  0x90 , 0x4C , 0x64 , // 音符打开,音符号76,速度100  (E6 : MI)
71
72  0x81 , 0x70 , // 时间差=128*1+102=230us
73  0x80 , 0x4C , 0x40 , // 音符关闭,音符号76,速度100  (E6 : MI)
74
75  0x00 ,
76  0xB0 , 0x40 , 0x7F , // 调换控制,控制号64(延音控制器),新值117
77
78  0x00 ,
79  0x90 , 0x4A , 0x64 , // 音符打开,音符号74,速度100  (D6 : RE)
时间: 2024-07-30 03:27:18

MIDI音频格式解析的相关文章

视音频数据处理入门:FLV封装格式解析

===================================================== 视音频数据处理入门系列文章: 视音频数据处理入门:RGB.YUV像素数据处理 视音频数据处理入门:PCM音频采样数据处理 视音频数据处理入门:H.264视频码流解析 视音频数据处理入门:AAC音频码流解析 视音频数据处理入门:FLV封装格式解析 视音频数据处理入门:UDP-RTP协议解析 ===================================================

TS格式解析

1.TS格式介绍 TS:全称为MPEG2-TS.TS即"Transport Stream"的缩写.它是分包发送的,每一个包长为188字节(还有192和204个字节的包).包的结构为,包头为4个字节(第一个字节为0x47),负载为184个字节.在TS流里可以填入很多类型的数据,如视频.音频.自定义信息等.MPEG2-TS主要应用于实时传送的节目,比如实时广播的电视节目.MPEG2-TS格式的特点就是要求从视频流的任一片段开始都是可以独立解码的.简单地说,将DVD上的VOB文件的前面一截c

PES,TS,PS,RTP等流的打包格式解析之PES流

PES,TS,PS,RTP等流的打包格式解析之PES流 版权声明:本文为博主原创文章,未经博主允许不得转载. 因为工作接触到了各种不同的音视频封装格式,常见的国标PS流,onvif的RTP流和TS流等,都说好记性不如烂笔头,抽空总结下,也好在以后能随时查阅,因水平问题,可能会有地方有疏漏和问题,还请指教 一.PES流 PES流是对原始ES流进行的第一层封装,PES流的基本单位是PES包,由包头和payload组成,ES流即音视频裸流,是从编码器里面出来的原始视频音频流:ES流只包含一种内容,里面

声音文件格式、常见的数字音频格式

数字声音在计算机中存储和处理时,其数据必须以文件的形式进行组织,所选用 的文件格式必须得到操作系统和应用软件的支持.不同计算机一级应用软件中使用的声音文件格式也互不相同. 常见的数字音频格式   音频格式 说明 1 Wave(.WAV) 是微软公司开 发的一种声音文件格式,也叫波形声音文件,是最早的数字音频格式,被Windows平台及其应用程序广泛支持.WAV格式支持许多压缩算法,支持多种音频 位数.采样频率和声道,采用44.1kHz的采样频率,16位量化位数,跟CD一样,对存储空间需求太大不便

iOS音频技术的研究-音频格式

**什么是音频格式** 这个问题我也是查了很久才弄明白的.音频格式其实是指容器的类型,在通俗一点就是声音文件的类型,比如说"我爱你中国.mp3",这个声音文件的音频格式就是MP3. 这里稍微引入一些音频编码的东西.很多第一次涉及这个领域的(比如说我哈),很容易弄不清音频格式和音频编码的区别和联系,比如音频格式中有MP3格式,音频编码中有MP3编码,这时候多数人就不明白了. 音频编码本质是一种算法,我们拿到声音的原始数据之后,总不能直接就放到文件中用,我们需要根据不同的用途对于这些数据进

开源项目OkHttpPlus——支持GET、POST、UI线程回调、JSON格式解析、链式调用、文件上传下载

OkHttpPlus介绍 项目地址:https://github.com/ZhaoKaiQiang/OkHttpPlus 主要功能:OkHttp封装,支持GET.POST.UI线程回调.JSON格式解析.链式调用.小文件上传下载及进度监听等功能 为什么要写这么一个库呢? 首先,是因为OkHttp在4.4之后已经作为底层的Http实现了,所以OkHttp这个库很强大,值得我们学习. 其次,在我看来,OkHttp使用起来不如Volley方便,OkHttp的回调都是在工作线程,所以如果在回调里面操作V

C#将科大讯飞语音合成文件转换为MULAW音频格式

任务描述:通过科大讯飞语音合成组件在线完成文本转语音的合成,然后再转换为电话系统IVR要求的音频格式: wave mu-law 16位 8kHZ 64kbps. 完成步骤: 首先,我们要先通过科大讯飞语音合成组件实现文本合成,由于科大讯飞提供的接口都是C语言的,如果用C#调用需要做二次封装,为了快速完成任务,我们直接在科大讯飞论坛中找到一个现成组件进行修改,感谢wangkang提供的分享. 1.下载C#代码:http://bbs.xfyun.cn/forum.php?mod=viewthread

Python pyc格式解析

简书链接:http://www.jianshu.com/p/03d81eb9ac9b 这篇文章只是纯粹分析python pyc文件格式,主要是关于pyc在文件中的存储方式进行了解析.pyc是python字节码在文件中存储的方式,而在虚拟机运行时环境中对应PyCodeObject对象.关于PyFrameObject以及PyFunctionObject等运行时结构,后续希望学习透彻了能够一并分析. 1.示例文件 源文件test.py s = "hello" def func(): a =

ELF格式解析库之抽象数据类型

抽象?抽谁的象? ELF是一种链接执行格式,它规定了对于一个ELF文件的基本数据类型是什么样的.可是,要解析一个ELF文件,而这个ELF文件或者是32Bits 或者是 64Bits,反正字长是未定的,怎么办?难道我们要定义两套解析的接口,以对应不同的字长的ELF文件吗?如果要这样做,不是不可以,只是那样做为接口的设计增加了太大的负担.这里我们采用"抽象"的方式,将已有的两套基础数据结构封装成一个兼容的数据结构.这样,我们设计解析接口时,可以做到尽量的简化,大大的减轻了工作量. 因此,这