我正在尝试计算麦克风听到的第一个声音和麦克风听到的第二个声音之间的时间量。
var mic;
var vol;
var myTimer = 0;
var myState = 0;
var count = 0;
var waitingForVolumeIncrease = false;
var crackDetected = false;
var m
var micSensitivity = 3;
var startTime, endTime;
var millisec;
var endMilliSec, startMilliSec;
function start() {
startTime = new Date();
startMilliSec = startTime.getMilliseconds();
text(startMilliSec, 60, 375);
}
function end() {
endTime = new Date();
endMilliSec = endTime.getMilliseconds();
text(endMilliSec, 60, 375);
}
function findDiff() {
text(endMilliSec, 100, 380);
text(startMilliSec, 140, 385);
var timeDiff = endMilliSec - startMilliSec; //in ms
text(timeDiff, 60, 100);
}
function setup() {
createCanvas(windowWidth, windowHeight);
mic = new p5.AudioIn();
mic.start();
}
function draw() {
background('pink');
vol = mic.getLevel(); // level is between 0 and 1
vol = vol * 100;
switch(myState) {
case 0:
if ((vol > micSensitivity)&&(waitingForVolumeIncrease==false)) {
start();
waitingForVolumeIncrease = true;
myState = 1;
}
break;
case 1:
if ((vol > micSensitivity)&&(waitingForVolumeIncrease==true)) {
end();
waitingForVolumeIncrease = false
myState = 0;
}
break;
}
findDiff();
text(waitingForVolumeIncrease, 60, 325)
textSize(18);
text("My volume is " + vol, 40, 550);
}
我想开始计算情况 0 中的毫秒数,然后计算情况 1 中的毫秒数,然后找出差异。然而,当我运行这段代码时,无论两个声音之间的间隔时间有多长,我每次都会得到 17 或 16 毫秒。我的代码哪里出了问题?
我的目标是监听滑板上的前轮和后轮每次撞到人行道上的裂缝,这样我就可以计算出每次裂缝之间的时间(以毫秒为单位),然后将其转换为您的行驶速度(以英里/小时为单位)
最佳答案
尝试使用 getTime而不是使用 getMilliseconds .
调用 getMilliseconds 只能获取相对于最后一整秒的毫秒数。
var startTime = new Date();
console.log("getMilliseconds: " + startTime.getMilliseconds());
console.log("getTime: " + startTime.getTime());
startTime.setMilliseconds(123);
console.log("getMilliseconds: " + startTime.getMilliseconds());
console.log("getTime: " + startTime.getTime());
关于javascript - 尝试计算通过麦克风拾取的声音之间的时间间隔,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56279410/