Как реализовать DBPSK? - PullRequest
0 голосов
/ 02 января 2019

Я хочу разработать способ передачи данных с помощью ультразвука (мин. 20.000 Гц), например, Chrip или quiet.js.

Я использую AudioContext моего браузера для кодирования и декодирования моих данных.

enter image description here

Теперь я хочу реализовать своего рода 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()

Заранее спасибо, Джонас

...