2017-12-18 62 views
2

目标

我试图在使用Createjs的科尔多瓦应用程序中创建快速的滴答声。使用CreateJS快速重复短时间的声音

的滴答声的速度基于用户设置的变化。此刻的时间是不稳定的

设置

我有一个滴答的声音,为50ms长的MP3音频文件。

重复的目标速度可以是每秒的速度的10倍。

问题

如何让声音在该速度下均匀一致地播放?

更多技术细节

createjs.Ticker.timingMode = createjs.Ticker.RAF_SYNCHED;
createjs.Ticker.framerate = 30;

干杯任何帮助

+0

是否有您要解决的特定问题,或者您只是在寻找建议? – Lanny

+0

谢谢@兰尼。可能有一点建议寻求,但问题是试图播放声音反复非常快时,嘀嗒声的不稳定节奏。你认为每100ms可以播放一次我的声音吗?即使我的帧速率为60(〜17ms),并且每6秒钟播放一次,听起来也很不稳定。 –

回答

0

这应该是非常简单的。我设置了一个快速的小提琴,每秒发出特定的音量。它看起来非常可靠,即使在60fps时也是如此。

https://jsfiddle.net/lannymcnie/ghjejvq9/

的办法是只检查每Ticker.tick自上次滴答声的时间量已经过去了。持续时间由1000/ticksPerSecond派生。

// Every tick 
var d = new Date().getTime(); 
if (d > lastTick + 1000/ticksPerSecond) { 
    createjs.Sound.play("tick"); 
    lastTick = d; 
} 
+0

我觉得在测试之前我有点兴奋。也许这是一个科尔多瓦的事情......但我已经实现了你的代码,并且仍然不稳定。弹出一个控制台错误。 Uncaught TypeError:e.setPlaybackResource不是一个函数。我使用createJS 1.0.0 –

+0

我认为,我们在最新版本中得到解决的错误(该功能被错误不建议使用) - https://github.com/CreateJS/SoundJS/commit/33b1303425da20770688455c46aab28c6dab4cdc。您也可以使用更快的刻度以获得更高的准确性(如使用RAF)。任何时刻的嘀嗒声肯定会阻止它可靠地播放 - 我的演示没有其他任何东西,所以没有什么影响它的性能。 – Lanny

+0

科尔多瓦也可以增加实际的声音您的通话之间不一致的延迟,并... :( – Lanny