www.wapease.com ·新闻动态 ·技术专题 ·WAP开发 ·用户专区 ·企业专区 ·相关资源 ·网络知识
首页>技术专题>SMS技术>正文    

MIDI文件结构分析及生成方法


WAP技术站:www.wapease.com  将本文推荐给你的QQ或MSN好友 加入收藏

从网上找的,已经将用BC写的改成了VC的,由于对音乐的理解比乐盲还差,对于程序中转换是否有问题我也不得而知,反正用VC生成的MIDI文件听起来惨不忍睹。

 对于制作MIDI音乐来说,比播放MIDI文件本身更复杂得多。我们得了解一些乐理常识和MIDI文件结构。

一、MIDI文件结构分析   MIDI文件包含首部块(Header Chunk)和音轨块(Track Chunk)两部分。其格式一般如下:

  MThd <数据长度> <Header数据>    //首部块
  .......
  Mtrk <数据长度> <Track数据>     //音轨块
  Header Chunk 结构为:
  char MidiId[4];
  long length;
  int  foarmt;
  int  TrackNum;
  int  division;

其中:

  MidiId称为MIDI文件头标志,一般将其设置为MThd;

  length为文件首部数据长度(除它本身和文件头标志占用的字节以外),通常它设置为6,即format,TrackNum和division共占用的字节数据长度;

  format表示MIDI文件存放的格式,当前只有3种格式:

  0 表示MIDI文件只有一个Track Chunk;
  1 表示MIDI文件只有一个或多个Track Chunk;
  2 表示MIDI文件只有一个或多个各处独立的Track Chunk。
  division指定计数的方法,一种随时间计数(最高位设置为0时),另一种使用制式的时间码(最高位设置为1时)。这里,主要介绍随时间计数的一种格式。其各位意义如下:

  ┌─┬─────────┐
  │0 │ 每一拍的计数值   │
  └─┴─────────┘
  b15     b14  ̄ b0

  其最高位一定要设置为0,其它的15位表示每一拍的计数值。如该数据为96(以八分音符为一拍),则表示一个四分音符延时数应该为192。

  另外,在MIDI文件中,long和int型数据均将高字节值存放入低地址上,如一个long型数据为0x45678,则在文件中,存放的结果为:0x00,0x04,0x56,0x78。而在内存中,int,long的变量值通常将崐高字节值存放高地址上。因此,存放数据时,应该作一下调整。

本新闻共5页,当前在第1页  1  2  3  4  5  

上一篇:EMS图片格式转换(Java)程序
下一篇:利用手机模块实现短消息(一)
Google
 
关于“MIDI文件结构分析及生成方法”的相关内容连接
·汉字不同编码转换的问题 UCS2转码的心得
·短信系统的所应有的功能
·短消息网关通信模块的设计与实现
·如何构建固定网(PSTN)短消息系统
·SMS方式远程监控软件的设计与实现
·短消息业务系统的架构与协议
·短信平台所需要的硬件配置
·编写SMS程序入门
·CMPP2.0协议升级
·用C#完成的QuerySMStatusA(华为API)

万易网(wapease.com)版权所有  服务声明

Copyright © 2003-2008 Wapease Network, All Rights Reserved