2

我通过将其与 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();

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

4

1 回答 1

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() 用于间隔。

于 2016-02-07T20:33:48.060 回答