计数笔记,同时播放节拍器

问题描述 投票:1回答:1

100以下音频播放每分钟心跳和4/4的时间签名。

秒和蜱正在不断成长记录中的数字。我怎么能确定:

  • 当第一个措施是完成?即在第二时间1发生..通常音乐进行计数1, 2, 3, 4, 1, 2, 3, 4
  • 我怎么能确定何时每个四分音符发生?

(function() {
  var isPlaying = false;

  document.getElementById('togglePlayback').addEventListener('click', function() {
    isPlaying = !isPlaying;
    Tone.Transport.bpm.value = 100;
    Tone.Transport.timeSignature = "4/4";
    console.log('Start playing');
    console.log(Tone.Transport.bpm.value);
    console.log(Tone.Transport.timeSignature);

    if(isPlaying) {
      Tone.Transport.scheduleRepeat(function(time){
        console.log('Seconds: ' + Tone.Transport.getSecondsAtTime(time));
        console.log('Ticks: ' + Tone.Transport.getTicksAtTime(time));
      }, "4n");
      Tone.Transport.start();
    }
  });
})();
<script src="https://cdnjs.cloudflare.com/ajax/libs/tone/13.7.1/Tone.js"></script>
<div>
  <button id="togglePlayback">Start</button>
</div>
<div id="results"></div>
javascript web-audio tone.js
1个回答
1
投票

由于四分音符为192个蜱,你可以用它来确定其他事件和条件的时机:

(function() {
  Tone.Transport.bpm.value = 100;
  Tone.Transport.timeSignature = "4/4";

  Tone.Transport.scheduleRepeat(function(time){
    console.log('Quarter Notes:', Tone.Transport.getTicksAtTime(time) / 192);
  }, "4n");

  var isPlaying = false;

  document.getElementById('togglePlayback').addEventListener('click', function() {
    if (isPlaying) {
      Tone.Transport.pause();
    } else {
      Tone.Transport.start();
    }

    isPlaying = !isPlaying;
  });
})();
<script src="https://cdnjs.cloudflare.com/ajax/libs/tone/13.7.1/Tone.js"></script>
<div>
  <button id="togglePlayback">Start</button>
</div>
<div id="results"></div>

我也已经修订你的逻辑,以播放/暂停,而不是新的调度重复并从回放的每第二次按下按钮开始启动。

© www.soinside.com 2019 - 2024. All rights reserved.