MIDI文件结构分析及生成方法(转)-程序员宅基地

技术标签: 数据结构与算法  

从网上找的,已经将用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时&#

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/cuankuangzhong6373/article/details/100504820

智能推荐

[常用办公软件] wps怎么自动生成目录?wps自动生成目录的设置教程_wps目录自动生成-程序员宅基地

文章浏览阅读1.1w次,点赞3次,收藏5次。转载请说明来源于"厦门SEO"本文地址:http://www.96096.cc/Article/160880.html常用办公软件  WPS Office是由金山软件股份有限公司开发的一款针对个人永久免费的办公软件,在我们的日常生活和工作中,WPS Office比起微软Microsoft Office来说在文字上的处理会更深入国人用户的人心,熟悉操作WPS的办公小技巧,能够更高效的提高我们的工作效率,今天小编要为大家分享的是WPS怎么自动生成目录?快来一起看看WPS自动生成目录的设置教程吧。_wps目录自动生成

web项目-程序员宅基地

文章浏览阅读7.4k次,点赞2次,收藏19次。web项目是指服务端部署在服务器上,客户端使用浏览器通过网络传输进行访问获取数据的项目。通常我们看见的应用页面网站等等都可以称之为web项目。 在web项目的开发中可分为web前端开发和web后端开发 web前端:即是客户端能看得见碰得着得东西。包括Web页面结构、页面样式外观以及Web层面得交互展现。 前端特点:页面视觉效果良好(客户第一)、Web页面交互流畅(..._web项目

关于java操作excel导入导出三种方式_java导出excel的三种方法-程序员宅基地

文章浏览阅读5.6k次,点赞8次,收藏67次。java操作关于导入导出Excel的多种方式_java导出excel的三种方法

Windows系统环境变量path详解_windows path-程序员宅基地

文章浏览阅读1.1w次,点赞10次,收藏21次。Windows path系统变量编辑_windows path

Hadoop基础教程-第13章 源码编译(13.2 Hadoop2.7.3源码编译)_hadoop2.7.3-src源码下载-程序员宅基地

文章浏览阅读512次。第13章 源码编译13.2 Hadoop2.7.3源码编译13.2.1下载Hadoop源码包(1)到官网http://hadoop.apache.org/releases.html下载2.7.3的source源码包(2)解压缩tar -zxvf hadoop-2.7.3-src.tar.gz -C /opt1(3)打开解压目录下的BUILDING.txt,编译过程和需要的软件其实就是根据这个文档里..._hadoop2.7.3-src源码下载

Latex 语法_\latex-程序员宅基地

文章浏览阅读1k次。Latex 语法_\latex

随便推点

elementui表格添加fixed之后样式异常_element table fixed 样式异常-程序员宅基地

文章浏览阅读1k次。最近写项目碰到一个bug 大概就是一个表格组件两个页面都会使用 组件中表格的某些列就用v-if控制了 表格的首尾列都用了fixed 然后就发生了bug 如下图 具体原因不明看过很多网上的办法 有在fixed的列绑定key的 也有使用doLayout()的 测了都没用 最后在一个前端交流群里一位大佬给出的办法 实测有效.el-table__header, .el-table__body, .el-table__footer { width: 100%; tab_element table fixed 样式异常

C语言中的 #include <stdio.h>是什么?_include <stdio.h>含义-程序员宅基地

文章浏览阅读1.8w次,点赞39次,收藏98次。最近在学习C语言基础的时候,我注意到了在写代码时经常使用的 #include <stdio.h>。众所周知,这是引用头文件的操作,但对于它的深层次含义,我并没有更多的了解。所以今天就来让我们深入研究一下它的更多信息。include的意思是包含,它前面的 # 是预处理指令。#通常有三种功能:1. 宏定义 2 .文件包含 3.条件编译。例如#define定义的标识符常量,这就属于一种宏定义的用法。其他的用法,随着深入学习相信也都会接触到。<stdio.h>就是我们引用的头文件,相_include 含义

(转载)linux命令之五十三telnet命令_telnet linux reboot-程序员宅基地

文章浏览阅读722次。telnet命令通常用来远程登录。telnet程序是基于TELNET协议的远程登录客户端程序。Telnet协议是TCP/IP协议族中的一员,是Internet远程登陆服务的标准协议和主要方式。它为用户提供了在本地计算机上完成远程主机工作的 能力。在终端使用者的电脑上使用telnet程序,用它连接到服务器。终端使用者可以在telnet程序中输入命令,这些命令会在服务器上运行,就像直接在服务器的控制台_telnet linux reboot

局部色调映射(Local Tone Mapping)-程序员宅基地

文章浏览阅读5k次。重建视觉外观是色调映射的终极目标。色调映射算法在降低高动态图像(HDR)范围的同时着力保护捕捉到的原始图像的外观。色调映射算子分两种策略,一种是全局的,另一种是局部的。1. 全局映射算子每一个像素点将会根据它的全图特征和亮度信息进行映射,不管其空间位置几何。全局算子一个比较典型的例子就是色调曲线。全局色调映射在处理12位(12-bit)深度的图像的时候是完全OK的,当图像的动态范围特别高的时候,那就不行了。这是因为所有的像素点都采取同一种方式进行处理,根本就没有管它是在较亮区域还是较暗区域。这样的话,._local tone mapping

RadioButton、CheckBox与ToggleButton-程序员宅基地

文章浏览阅读86次。1.RadioButtonRadioButton被称作为单选框,通常都是以组的形式出现,可以在一组控件中选择一个。RadioButton的使用首先需要加入<RadioGroup/>,在这个组中,我们进行单选按钮的声明。 1 <RadioGroup 2 android:id="@+id/radioGroup" 3 an..._radiobutton和toggombutton

作为硬件开发,你一定要知道开发板是个什么东西?陈老师带你了解_硬件工程师的芯片demo板 开发板-程序员宅基地

文章浏览阅读2.5k次,点赞3次,收藏12次。作为智能硬件开发,你一定要知道开发板是个什么东西?如果您有和智能硬件开发人员打交道,或者贵公司正好有智能硬件的开发需求,又或者你正在学习关于智能硬件方面的知识,那么你一定听过『开发板』这个词语。///插播一条:我自己在今年年初录制了一套还比较系统的入门单片机教程和毕业设计指导,想要的同学找我拿就行了免費的,私信我就可以哦~点我头像白色字体加我也能领取哦,记得口令陈老师///开发板(demoboard)是用来进行嵌入式系统开发的电路板,包括中央处理器、存储器、输入设备、输出设备、数据通路/总线和外部资源接口等_硬件工程师的芯片demo板 开发板

推荐文章

热门文章

相关标签