2011年11月9日 星期三

線上手動節拍速度量測器



說明:
此為簡易Tempo測量BPM之按鈕,
照著音樂拍子手動按下按鈕即可,
按的越多次平均量測值就越準確,
連點兩下後即可重置按鈕。

原始碼:
<script type="text/javascript">
var tempoboxy = new function() {
    return {
        num : 0,
        oldtime : 0,
        bpms : new Array(),
        bpm : function() {
            var i = 0;
            var sum = 0;
            var d = new Date();
            var time = d.getHours()*1000*60*60 + d.getMinutes()*1000*60 + d.getSeconds()*1000 + d.getMilliseconds();
            var tempoboxy = document.getElementById("tempoboxy");
            this.bpms[this.num] = 60000/(time-this.oldtime);
            if(this.oldtime==0) { //第一次記數
                this.oldtime = time;
                tempoboxy.innerHTML = "000.00 BPM";
            } else if(this.bpms[this.num]>300) { //連點兩下重置
                this.num = 0;
                this.oldtime = 0;
                this.bpms = new Array();
                tempoboxy.innerHTML = "bpm measure";
            } else { //累積記數計算
                this.oldtime = time;
                this.num++;
                var len = this.bpms.length;
                for(i=0;i<len;i++) sum += this.bpms[i];
                tempoboxy.innerHTML = (sum/len).toPrecision(5) + " BPM";
            }
        }
    };
};
</script>
<button id="tempoboxy" onClick="tempoboxy.bpm();" style="width:120px;">bpm measure</button>