如何正确清理timbre.js

时间:2015-12-22 23:49:54

标签: javascript ios web-audio audiocontext

我通过将它与AudioContextMonkeyPatch耦合在iOS 9.2上成功运行Timbre.js,我正在尝试使用稍微修改过的代码版本:http://mohayonao.github.io/timbre.js/interval.html。代码(保存查找)是:

var freqs = T(function(count) {
  return [220, 440, 660, 880][count % 4];
});

var osc = T("sin", {freq:freqs, mul:0.5});
var env = T("perc", {a:50, r:500}, osc).bang();

var interval = T("param", {value:500}).linTo(50, "30sec");

T("interval", {interval:interval}, freqs, env).start();

env.play();

我想弄清楚的是如何开始然后停止然后重新开始声音。我试图了解开发者的例子'暂停'按钮工作,但我似乎无法找到该代码示例。我做基本的事情tike" T()。stop(); env.pause();"其次是" env.play();" (在单独的onClick事件中),我最终在第二个播放事件中有多个信号。真的很沮丧。文档建议删除所有'将删除所有加载到Timbre()(或T()?)的项目,但在我的停止功能中应用它也不会提供令人满意的结果。 有人知道暂停和重新启动此脚本代码段的正确方法吗?

1 个答案:

答案 0 :(得分:0)

要启动和停止序列,您需要将最后一个T函数分配给变量。然后,您可以根据需要使用.start()和.stop():

code....
var interval = T("param", {value:500}).linTo(50, "30sec");
var audioSequence = T("interval", {interval:interval}, freqs, env);

env.play(); 

audioSequence.start(); // Start the Sequence 

interval.stop(); // Stop the interval
audioSequence.stop();  // Stop the Sequence
interval.start(); // Restart the Interval
audioSequence.start();  // Restart the Sequence

起初有点令人困惑,因为play()/ pause()用于振荡器或鼓,例如start()/ stop()用于间隔。