Перейти к основному содержимому
clawam tools
Инструменты Документы Daoark EN Главная Главная / Быт и полезное › Главная manifest.json 0)) { showError('A4 必须 > 0'); return; } var out = ''; if (op === 'midi2freq') { var m = parseInt(getVal('midi'), 10); if (!(m >= 0 && m <= 127)) { showError('MIDI 0-127'); return; } var f = midiToFreq(m, a4); out = 'MIDI ' + m + ' (' + midiToName(m) + ') = ' + f.toFixed(3) + ' Hz\n' + 'Cents 偏差(A4 基准): ' + (1200 * Math.log2(f / a4) % 100).toFixed(2); } else if (op === 'freq2midi') { var f = parseFloat(getVal('freq')); if (!(f > 0)) { showError('频率必须 > 0'); return; } var m = freqToMidi(f, a4); out = f.toFixed(3) + ' Hz ≈ MIDI ' + m.toFixed(3) + ' (' + midiToName(Math.round(m)) + ')'; } else { var names = getVal('name').split(/[\s,;]+/).filter(function(x) { return x.length > 0; }); out = ''; for (var i = 0; i < names.length; i++) { var mm = nameToMidi(names[i]); var ff = midiToFreq(mm, a4); out += names[i] + ' → MIDI ' + mm + ' → ' + ff.toFixed(3) + ' Hz\n'; } } showResult(out, 'A4 = ' + a4 + ' Hz'); } catch (e) { showError('转换失败: ' + (e.message || e)); } } $('btn-main').addEventListener('click', function(e) { e.preventDefault(); doProcess(); }); $('btn-clear').addEventListener('click', function() { var inputs = document.querySelectorAll('input,textarea,select'); for (var i = 0; i < inputs.length; i++) { if (inputs[i].tagName === 'SELECT') inputs[i].selectedIndex = 0; else inputs[i].value = inputs[i].defaultValue; } var ra = $('result-area'); ra.hidden = true; ra.style.display = 'none'; var em = $('error-msg'); em.hidden = true; em.style.display = 'none'; }); $('btn-play').addEventListener('click', function() { try { var f = parseFloat(getVal('freq')); if (!(f > 20 && f < 20000)) { var m = parseInt(getVal('midi'), 10); if (m >= 0 && m <= 127) f = midiToFreq(m, parseFloat(getVal('a4'))); } if (!(f > 20 && f < 20000)) { showError('请输入有效频率/MIDI'); return; } playFreq(f); } catch (e) { showError('试听失败: ' + e.message); } }); })();