javascript - 我怎样才能每次 vol > 6 时以 1 计数

标签 javascript audio p5.js

每当麦克风听到打响指的声音时,我都会尝试加 1。

    var sketch = function (p) {
      with(p) {

        var mic;
        var vol;
        var count = 0;

        p.setup = function() {
          createCanvas(windowWidth, windowHeight);

          mic = new p5.AudioIn();
          mic.start();
        };
    
        p.draw = function() {
          background('pink');

          vol = mic.getLevel(); // level is between 0 and 1
          vol = vol * 100;

          if (vol > 6) {
            count += 1;
            text(count, 60, 300);

            //if (count += 1) {
            //  vol = 0;
            //}

          } else {
            text(count, 60, 300);
          }
        };
     
      }
    };
    
    let node = document.createElement('div');
    window.document.getElementById('p5-container').appendChild(node);
    new p5(sketch, node);
body {
  background-color:#efefef;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/1.1.9/p5.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/1.1.9/addons/p5.sound.min.js"></script>
<div id="p5-container"></div>

问题: 使用我当前的代码,它会继续计算手指弹响的持续时间。我如何编写此代码以在每次手指弹奏时仅将 1 加到 var 计数中

最佳答案

如果您在音量超过 6 时进行计数,那么您需要一个标志来了解音量何时回落到该阈值以下。

所以设置一个变量如下:

var waitingForVolumeIncrease = true;

然后在您的代码中,当您增加计数时,也将标志设置为 false。

添加另一个条件来检查音量是否小于 6 以将标志重置为真。

最后,您只想在标志设置为 true 时增加计数,因此您需要更新检查以确保标志设置为 true。

关于javascript - 我怎样才能每次 vol > 6 时以 1 计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56194699/

相关文章:

javascript - 将 gif 添加到 p5.js "artwork"

javascript - 比较两个数组中的对象并根据 JavaScript 中的匹配返回

javascript - 如何触发 Dropzone.js 的默认文件上传输入?

iphone - 是否有一种简单的方法来设置核心音频回调以访问播放背景音频的样本?

ios - 如何生成波形表以加快实时音频合成

P5.js 获取当前填充/描边颜色?

processing - createSlider() 函数在 Canvas 外创建 slider 。如何将 slider 定位在 Canvas 内?

javascript - jquery函数重载

javascript - React-Redux |调度员不工作

iphone - 声音引擎泄漏……预加载是一种不好的做法吗?