-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.js
121 lines (116 loc) · 5.87 KB
/
index.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
const inputBpm = document.querySelector("#bpm-input");
const resultSel = document.querySelector("#result-type");
const resultOpt = resultSel.value;
const submitBtn = document.querySelector(".submit-btn");
const delayCalc = {
notes: (bpm) => {
return 60000 / bpm;
},
dotted: (bpm) => {
return delayCalc.notes(bpm) * 1.5;
},
triplet: (bpm) => {
return delayCalc.notes(bpm) * 0.667;
},
hzConverter: (ms) => {
const hertz = 1000 / ms;
return hertz.toFixed(3);
},
}
submitBtn.addEventListener("click", resetInput);
document.addEventListener("keydown", (event) => {
if(event.key === "Enter") {resetInput();} return;
});
function resetInput () {
if (inputBpm.value.match(/^[^\d]+$/)){
alert("Input Numbers Only!");
inputBpm.value = "";
} else
if (inputBpm.value <= 9) {
alert("Invalid BPM. Please enter a value more than 10.");
inputBpm.value = "";
} else
if (inputBpm.value >= 10){
showResult();
}
}
function result (subDiv, delayType){
switch (subDiv){
case "1":
return delayType(Number(inputBpm.value)) * 4;
case "1/2":
return delayType(Number(inputBpm.value)) * 2;
case "1/4":
return delayType(Number(inputBpm.value));
case "1/8":
return delayType(Number(inputBpm.value)) / 2;
case "1/16":
return delayType(Number(inputBpm.value)) / 4;
case "1/32":
return delayType(Number(inputBpm.value)) / 8;
case "1/64":
return delayType(Number(inputBpm.value)) / 16;
case "1/128":
return delayType(Number(inputBpm.value)) / 32;
}
}
const msTable = document.querySelectorAll(".ms");
const hzTable = document.querySelectorAll(".hz");
function showResult () {
switch (resultSel.value){
case "Notes":
msTable[0].textContent = result("1", delayCalc.notes).toFixed(1);
hzTable[0].textContent = delayCalc.hzConverter(result("1", delayCalc.notes));
msTable[1].textContent = result("1/2", delayCalc.notes).toFixed(1);
hzTable[1].textContent = delayCalc.hzConverter(result("1/2", delayCalc.notes));
msTable[2].textContent = result("1/4", delayCalc.notes).toFixed(1);
hzTable[2].textContent = delayCalc.hzConverter(result("1/4", delayCalc.notes));
msTable[3].textContent = result("1/8", delayCalc.notes).toFixed(1);
hzTable[3].textContent = delayCalc.hzConverter(result("1/8", delayCalc.notes));
msTable[4].textContent = result("1/16", delayCalc.notes).toFixed(1);
hzTable[4].textContent = delayCalc.hzConverter(result("1/16", delayCalc.notes));
msTable[5].textContent = result("1/32", delayCalc.notes).toFixed(1);
hzTable[5].textContent = delayCalc.hzConverter(result("1/32", delayCalc.notes));
msTable[6].textContent = result("1/64", delayCalc.notes).toFixed(1);
hzTable[6].textContent = delayCalc.hzConverter(result("1/64", delayCalc.notes));
msTable[7].textContent = result("1/128", delayCalc.notes).toFixed(1);
hzTable[7].textContent = delayCalc.hzConverter(result("1/128", delayCalc.notes));
break;
case "Dotted":
msTable[0].textContent = result("1", delayCalc.dotted).toFixed(1);
hzTable[0].textContent = delayCalc.hzConverter(result("1", delayCalc.dotted));
msTable[1].textContent = result("1/2", delayCalc.dotted).toFixed(1);
hzTable[1].textContent = delayCalc.hzConverter(result("1/2", delayCalc.dotted));
msTable[2].textContent = result("1/4", delayCalc.dotted).toFixed(1);
hzTable[2].textContent = delayCalc.hzConverter(result("1/4", delayCalc.dotted));
msTable[3].textContent = result("1/8", delayCalc.dotted).toFixed(1);
hzTable[3].textContent = delayCalc.hzConverter(result("1/8", delayCalc.dotted));
msTable[4].textContent = result("1/16", delayCalc.dotted).toFixed(1);
hzTable[4].textContent = delayCalc.hzConverter(result("1/16", delayCalc.dotted));
msTable[5].textContent = result("1/32", delayCalc.dotted).toFixed(1);
hzTable[5].textContent = delayCalc.hzConverter(result("1/32", delayCalc.dotted));
msTable[6].textContent = result("1/64", delayCalc.dotted).toFixed(1);
hzTable[6].textContent = delayCalc.hzConverter(result("1/64", delayCalc.dotted));
msTable[7].textContent = result("1/128", delayCalc.dotted).toFixed(1);
hzTable[7].textContent = delayCalc.hzConverter(result("1/128", delayCalc.dotted));
break;
case "Triplet":
msTable[0].textContent = result("1", delayCalc.triplet).toFixed(1);
hzTable[0].textContent = delayCalc.hzConverter(result("1", delayCalc.triplet));
msTable[1].textContent = result("1/2", delayCalc.triplet).toFixed(1);
hzTable[1].textContent = delayCalc.hzConverter(result("1/2", delayCalc.triplet));
msTable[2].textContent = result("1/4", delayCalc.triplet).toFixed(1);
hzTable[2].textContent = delayCalc.hzConverter(result("1/4", delayCalc.triplet));
msTable[3].textContent = result("1/8", delayCalc.triplet).toFixed(1);
hzTable[3].textContent = delayCalc.hzConverter(result("1/8", delayCalc.triplet));
msTable[4].textContent = result("1/16", delayCalc.triplet).toFixed(1);
hzTable[4].textContent = delayCalc.hzConverter(result("1/16", delayCalc.triplet));
msTable[5].textContent = result("1/32", delayCalc.triplet).toFixed(1);
hzTable[5].textContent = delayCalc.hzConverter(result("1/32", delayCalc.triplet));
msTable[6].textContent = result("1/64", delayCalc.triplet).toFixed(1);
hzTable[6].textContent = delayCalc.hzConverter(result("1/64", delayCalc.triplet));
msTable[7].textContent = result("1/128", delayCalc.triplet).toFixed(1);
hzTable[7].textContent = delayCalc.hzConverter(result("1/128", delayCalc.triplet));
break;
}
}