Я прочитал, что 1200 центов в 1 октаве.
Итак, я попробовал следующее:
const audioContext = new AudioContext();
function Oscillator(frequency, detune) {
this.oscillator = audioContext.createOscillator();
this.oscillator.connect(audioContext.destination);
this.oscillator.frequency.value = frequency;
this.oscillator.detune.value = detune;
this.oscillator.start(0);
this.oscillator.stop(3);
console.log('Playing new oscillator!');
}
Случай 1:
const x = 200;
new Oscillator(x, 1200);
new Oscillator(2 * x, 0);
Оба осцилляторы по отдельности воспроизводят один и тот же звук для всех значений x
, и это имело смысл для меня, потому что отстройка 1200 центов на одну октаву вверх (удвоение частоты).
Случай 2:
const x = 200;
new Oscillator(x, 600);
new Oscillator(x * 1.5, 0);
Итак, я ожидал, что если я доберусь до середины центов, то частота должна возрасти на 50%. Но когда я слышал их по отдельности, для многих различных значений x
все они производили разные звуки. Казалось, что оба звука имеют одинаковую частоту, но разную амплитуду.
Я не могу понять, почему это происходит. Пожалуйста, помогите мне с этим. Я совершенно новичок в физике звуков.