求问一个关于MIDI节拍设计的问题

xinor 2011-08-17 12:31:26
在MIDI文件里面有一组控制语句00 ff 58 // 拍号标记
04 // 长度
04 02 18 08 // nn dd cc bb 拍号表示为四个数字。nn和dd代表分子和分母。分母指的是2的dd次方,例如,2代表4,3代表8。cc代表一个四分音符应该占多少个MIDI时间单位,bb代表一个四分音符的时值等价于多少个32分音符。 因此,完整的 6 / 8拍号应该表示为 FF 58 04 06 03 24 08 。这是, 6 / 8拍号( 8等于2的三次方,因此,这里是06 03),四分音符是32个MIDI时间间隔(十六进制24即是32),四分音符等于8个三十二分音符。
1、设置这个有什么作用呢?
4d 54 68 64 // “MThd”
00 00 00 06 // 长度always 6,后面有6个字节的数据
00 01 // 0-单轨; 1-多规,同步; 2-多规,异步
00 02 // 轨道数,即为”MTrk”的个数
00 c0 // 基本时间格式,即一个四分音符的tick数,tick是MIDI中的最小时间单位
00 ff 51 // 设定速度xx xx xx,以微秒(us)为单位,是四分音符的时值
2、这里面的基本时间格式跟上面的设置之间有什么联系呢?
3、这三者之间的时间关系又是什么呢?
等待懂的人解答,谢谢
...全文
274 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
wumin940590725 2014-05-06
  • 打赏
  • 举报
回复
引用 1 楼 ndy_w 的回复:
1给编辑器看的,以正确划分小节。 2基本速度 3新速度
能不能将tick转换成s呢?新速度这个说法很诡异啊,这么理解的话1tick相当于多少s?
wumin940590725 2014-05-06
  • 打赏
  • 举报
回复
引用 2 楼 xinor 的回复:
谢谢你的回答,我还是不太明白 1 编辑器是怎么根据那个设置来划分小节? 2 基本速度和新速度又是什么意思?像10 90 43 40第一个参数10代表延时时间,那它代表的时间应该怎么计算?
楼主,有结论了吗?求
wumin940590725 2014-05-06
  • 打赏
  • 举报
回复
引用 3 楼 fslt1981 的回复:
例:FF 51 03 0A A5 4A ; 00 78 ;// 基本时间格式,一个四分音符的tick数,tick是MIDI中的最小时间单位 10 90 43 40 ; 计算: 1) tick = 0x0AA54A/0x78 = 5647us 2) time = tick * 10 = 56470us
胡说八道啊,无语
fslt1981 2013-09-29
  • 打赏
  • 举报
回复
例:FF 51 03 0A A5 4A ; 00 78 ;// 基本时间格式,一个四分音符的tick数,tick是MIDI中的最小时间单位 10 90 43 40 ; 计算: 1) tick = 0x0AA54A/0x78 = 5647us 2) time = tick * 10 = 56470us
xinor 2011-08-17
  • 打赏
  • 举报
回复
谢谢你的回答,我还是不太明白
1 编辑器是怎么根据那个设置来划分小节?
2 基本速度和新速度又是什么意思?像10 90 43 40第一个参数10代表延时时间,那它代表的时间应该怎么计算?
ndy_w 2011-08-17
  • 打赏
  • 举报
回复
1给编辑器看的,以正确划分小节。
2基本速度
3新速度

16,473

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧