Вот код:
Я хочу создать аудиопрограмму, которая может воспроизводить звук от очень низкой частоты до высокой частоты.
Однако этот код приводит к другому выводу (даже прито же устройство):
- Звук выходит внезапно - ожидаемый результат - постепенно. Я уверен, что мой слух в порядке, потому что я попросил своих друзей услышать;
- Звук звучит по-разному на той же частоте.
ВНИМАНИЕ: Пожалуйста, отрегулируйте громкостьдо очень низкого уровня в случае любого вреда перед запуском этого скрипта.
var audioCtx = new (window.AudioContext || window.webkitAudioContext)();
// create Oscillator node
var oscillator = audioCtx.createOscillator();
var osc_arr = [];
function purgeSound(){
osc_arr.forEach(function(v){
try {
v.stop();
v.disconnect(audioCtx.destination);
} catch (e) {}
})
}
function playSoundAtFreq(fq){
purgeSound();
var osc = audioCtx.createOscillator();
osc_arr.push(osc);
osc.type = 'square';
osc.frequency.setValueAtTime(fq, audioCtx.currentTime); // value in hertz
$('#fff').val(fq);
osc.connect(audioCtx.destination);
osc.start();
}
$('#stop').click(function(){
purgeSound();
_break = true;
})
var _break = false;
function sleep(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}
var pointer = 0;
var go = appendAttemptAsync(10000);
async function appendAttemptAsync(range) {
if(_break) return;
var target = pointer+range;
for (pointer; pointer<range; pointer++) {
playSoundAtFreq(pointer);
console.log(pointer)
//if(pointer % 1 == 0) {
await sleep(100)
//}
}
return 5221;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<button id='stop'>stop</button>
<input id="fff" type="text" />
ВНИМАНИЕ: Пожалуйста, отрегулируйте громкость на очень низкую величину в случае любого повреждения, прежде чем запускать этот скрипт.
Спасибоза любые предложения по улучшению моего кода.