从网上找的,已经将用bc写的改成了vc的,由于对音乐的理解比乐盲还差,对于程序中转换是否有问题我也不得而知,反正用vc生成的midi文件听起来惨不忍睹。
对于制作midi音乐来说,比播放midi文件本身更复杂得多。我们得了解一些乐理常识和midi文件结构。
一、midi文件结构分析 midi文件包含首部块(header chunk)和音轨块(track chunk)两部分。其格式一般如下:
mthd //首部块
.......
mtrk //音轨块
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时&#