主题:  如何更精确的捕捉声音播放的位置?(就是实现kalaok功能)

amith

职务:普通成员
等级:1
金币:0.0
发贴:159
#12001/2/13 10:52:43
我在moviesprite 里面用下面的语句
on idle
curTime=the currentTime of sound 2
put curTime
end idle
但是 curTime 不是实时的记录时间,而是有间隔的。
如:258,258,508,508,758,758,1008,1008,1410,1410,1410,1410.....
理想上应该是1,2,3,4,5,6,7,8.....如何才能做到实时呢?

编辑历史:[这消息被amith编辑过(编辑时间2001-02-13 14:16:41)]
[这消息被amith编辑过(编辑时间2001-02-14 09:46:14)]


amith

职务:普通成员
等级:1
金币:0.0
发贴:159
#22001/2/14 10:09:49
哪位兄弟有用dir做过kalaok 功能的麻烦帮助。

用dir做kalaok,我的设计思想是: 画好两张不同颜色的歌词图片,一张红色图片(在score中红色图用subtract和add墨水重复共两张盖住前两张歌词),移动add墨水的图片你就看到效果了。去试试看。下面要做的工作就是记录要特显的歌词在声音文件中的时间位置,还有add墨水图片在不同歌词的不同width值和横坐标。
在程序中捕捉到声音播放的位置移动add墨水图片就实现了kalaok的功能。 可是这个声音的位置该如何得到呢?



愁眉不展

职务:普通成员
等级:1
金币:0.0
发贴:114
#32001/2/14 14:25:27
声音文件可采用Quicktime格式,直接读取播放时间,如果用wav加提示点,可能提示点太多。



amith

职务:普通成员
等级:1
金币:0.0
发贴:159
#42001/2/14 15:13:12
谢谢愁眉不展兄的回复。
我看到台湾的一片dir开发的 kalaok学英语 cdrom ,里面声音格式是用 wav 格式,而且里面没有用提示点。它有一个声音位置的列表文件。在运行的时候我发现他也没有用到特殊的 xtra 。
用提示点倒是一种方法。到时候可以用 isPastCuePoint()函数来判断。
不知道有没有其他办法?



Call Me Simon

职务:普通成员
等级:2
金币:2.0
发贴:646
#52001/2/14 16:04:10
100%的实时是不可能的, 用the currentTime, 返回时间值以毫秒记, 对于karaokay之类的控制是足够精确了。 用d7的话, 用cuePoint会比较方便, 如果是用d8的话, 下面这篇文章也许会给你一点启发.

www.director-online.com/buildArticle.cfm?id=954



amith

职务:普通成员
等级:1
金币:0.0
发贴:159
#62001/2/14 16:30:01
谢谢flyingbird!
我用了audio xtra 3.11版本控制声音,捕捉的声音位置非常精确(8的递增), -100、+100 之间的位置误差就能达到满意的效果。the currenttime 的误差太大。可是买国外的xtra不方便。看来要用提示点来做。
我先去试试8.0下面的效果。