求一设计思路!
本人想做一舞曲管理程序,每首曲子都要渐弱结束,各位有什么高招。请给予指点!
还有为什么我的浏览器里的MEMO中的字体是楷体的?怎么设置字体呢??
问题点数:62、回复次数:5Top
1 楼blow_wy(老鹰)回复于 2002-02-03 23:37:33 得分 0
关注!Top
2 楼KiteGirl(小仙妹)回复于 2002-02-04 00:14:41 得分 62
有两个办法:
1、通过程序根据当前播放时间的位置,实时控制音量实现。这个方法应该是最好的。下面是大概的实现方法:
控制播放的音量,在曲子接近结尾前几秒钟,或进行到曲子的百分之几的位置取一个“淡出开始”。“淡出开始”到曲子结束之间叫做“淡出时间”。当曲子到达淡出时间段内的时候,淡出程序开始奏效。根据当前播放的时间在“淡出时间”中的位置,计算百分比。根据这个百分比来指定音量。
比如:你规定每个曲子临近最后10秒做淡出。曲子总长度是N秒。则LineOutOn=N-10。当曲子到达LineOutOn的时候,使LineOut(可以做一个函数或过程)开始奏效。
设当前正在播放的片段为第LineStart秒,则((LineStart-LineOutOn)/10)为当前播放片段相对淡出时间的百分比。用这个百分比去乘音量。在某些程序里,音量控制为0-100,某些程序则是0-127。
下面是我用VB做的一个代码实例的编写方法,只是大概说明一下意思。我不知道你用的是什么程序写这个东西,所以只大概写出了这样一个程序。(这个程序用VB很难实现,因为VB太慢了。)
LineOutTime=淡出时间(秒/或毫秒)。
MusicLen=曲子总时间(秒/或毫秒)。
LineStart=正在播放的时间(秒/或毫秒)。
SystemVol=控制音量的属性
SystemVolMax=最大音量值
LineOutOn=MusicLen-LineOutTime '淡出开始。
LineOuting=LineStart>LineOutOn '淡出处理的条件。
If LineOuting Then
SystemVol=((LineStart-LineOutOn)/LineOutTime)*SystemVolMax
End If
2、处理临时文件。先将你要播放的乐曲生成一个Wave临时文件,然后利用程序将Wave的末尾部分做淡出处理。然后播放的时候放的是Wave临时文件而不是音乐本身。这个办法非常笨,如果你有现成的给Wave文件做淡出处理的程序或控件也不失为一个好办法。Top
3 楼XXLong(参了军的小鸟)回复于 2002-02-04 00:59:39 得分 0
KiteGirl(小仙妹) 不错啊,HeHe。Top
4 楼lily_1979(知无不言)回复于 2002-02-04 01:03:57 得分 0
嗯
不错Top
5 楼dong163(再见理想)回复于 2002-02-04 22:15:33 得分 0
佩服:结帐了!(你真的是仙妹吗?)Top




