К сожалению, API-интерфейс Web Audio недоступен на Node.js. Node.js - это просто среда выполнения JavaScript, а API Web Audio не является частью самого JavaScript. Это API, который добавляется браузером. В Node.js. даже нет window
.
Чтобы еще больше запутать, есть некоторые браузерные API, которые также доступны в Node.js. Примером этого является глобально доступный URL
. В эти годы JSConf.eu Джойи Чунг выступил с докладом , в котором объясняется стратегия привлечения большего количества браузерных API к Node.js . Однако Web Audio API не в списке.
1008 * Это спорно кастрированный баран имеет смысл иметь API Web Audio доступны в Node.js или нет, но это, конечно, возможно. По крайней мере, в определенной степени, как показано в проектах
web-audio-api и
web-audio-engine .
Если вы хотите реализовать PitchShifter вв браузере вы можете использовать PitchShift Effect , который поставляется с Tone.js . Вот минимальный пример:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
</head>
<body>
<button id="start-stop">start</button>
<button id="up">up</button>
<button id="down">down</button>
<script src="https://unpkg.com/tone@13.8.25/build/Tone.js"></script>
<script>
const $startStopButton = document.getElementById('start-stop');
const $upButton = document.getElementById('up');
const $downButton = document.getElementById('down');
const oscillator = new Tone.Oscillator();
const pitchShift = new Tone.PitchShift();
oscillator.connect(pitchShift);
pitchShift.toMaster();
$startStopButton.onclick = () => {
if ($startStopButton.textContent === 'start') {
$startStopButton.textContent = 'stop';
oscillator.start();
} else {
$startStopButton.textContent = 'start';
oscillator.stop();
}
};
$upButton.onclick = () => pitchShift.pitch += 1;
$downButton.onclick = () => pitchShift.pitch -= 1;
</script>
</body>
</html>