易码技术论坛

 找回密码
 加入易码
搜索
查看: 204533|回复: 7

TC800 System.SndPlayFile参数分析

[复制链接]
发表于 2006-4-9 23:09:00 | 显示全部楼层
是啊,先感谢yan的奉献精神啊!

ps:lee能出来表个态吗?大家都期待中............
[em02]
 楼主| 发表于 2006-4-10 07:05:00 | 显示全部楼层
总觉得TC800还可以播放其他类型的声音文件
发表于 2006-4-10 08:58:00 | 显示全部楼层
yan的精神太~~~~~~~~~~~
发表于 2006-4-10 10:23:00 | 显示全部楼层
估计那个“其他类型的声音文件”应该就是机器内置的MIDI了。
 楼主| 发表于 2006-4-10 12:37:00 | 显示全部楼层
wqx能使用的midi在网上找不到,不知道midi怎么制作的?
发表于 2006-4-10 13:26:00 | 显示全部楼层
System.SndPlayFile属于非标准函数,未来版本中将取消。

对于非标准函数,官方将不公布其资料。当然,用户可自由钻研。
发表于 2006-4-11 19:06:00 | 显示全部楼层
好吸引人哦。要是我也会就好了,是不是学会C语言和lava就可以了
 楼主| 发表于 2006-4-9 22:31:46 | 显示全部楼层 |阅读模式
自从LeeSoft发布midi和vnt播放器的源程序以来,也过了不短的时间了.但是那个源程序写的看不懂.大家都是摸索过来的,我来总结一下:
原型:long System.SndPlayFile(char fp,long filelen,long Playtype)
功能:播放声音文件

其中filelen是声音文件的长度,这里最难确定的是Playtype这个参数:

System.SndPlayFile这个函数可以播放vnt,mid.其中vnt有两种格式:高品质,长时间.
播放高品质vnt时,vnt文件的头2个字节决定了播放类型,所以播放此声音文件时Playtype=0x10000+head[0]+(head[1]<<8)
播放长时间vnt时,vnt文件的第4,5字节决定了播放类型,所以播放此声音文件时Playtype=0x20000+head[4]+(head[5]<<8)
播放NC3000的midi时,大家摸索出来的是Playtype=0,但是filelen=0

LeeSoft发布midi和vnt播放器的源程序中还有一个'M'<<16没用过,可能就是用来播放TC800的MIDI了,我是过n次,得出:
Playtype分为3个字节(比如播放vnt的参数0x18007:0x01 80 07和0x20008:0x02 00 08):其中高字节表示播放的声音类型,中间的那个字节表示播放速度,低字节表示播放的偏移量
高字节:0x0:NC3000的midi,0x1:高品质vnt,0x2:长时间vnt
中间字节:速度控制(播放midi时尤其明显)
低字节:偏移量(姑且这么说它)

其他的就不知道了,也不知道分析的对不对,LeeSoft能表态就更好了.
为了试出TC800的midi,我的TC800可都快坏了


您需要登录后才可以回帖 登录 | 加入易码

本版积分规则

Archiver|手机版|小黑屋|EMAX Studio

GMT+8, 2025-5-3 20:22 , Processed in 0.016280 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表