Я хочу разработать способ передачи данных с помощью ультразвука (мин. 20.000 Гц), например, Chrip или quiet.js.
Я использую AudioContext моего браузера для кодирования и декодирования моих данных.
Теперь я хочу реализовать своего рода DBPSK (дифференциальная двоичная фазовая манипуляция) через javascript с AudioContext для кодирования моих данных с помощью фазовой модуляции. Я действительно не знаю, правильный ли мой подход, потому что я не очень доволен результатом тестирования в Audacity. Я действительно надеюсь, что кто-то может мне помочь.
let context = new AudioContext();
let wave = (data) => {
let source = context.createBufferSource();
let frequency = 19000
let duration = context.sampleRate*data.length
let buffer = context.createBuffer(1, duration, context.sampleRate);
let bufferData = buffer.getChannelData(0);
for (let i = 0; i < context.sampleRate/data.length; i++) {
let angle = 2 * Math.PI * frequency * i / (context.sampleRate / data.length)
let bit = data[Math.round(i*(data.length / context.sampleRate) * data.length)]
bufferData[i] = bit ? Math.sin(angle) : Math.cos(angle);
}
source.buffer = buffer;
return source;
}
let source = wave([1,0,0,0,1,1,1,1])
source.connect(context.destination);
source.start()
Заранее спасибо, Джонас