如何实施DBPSK?

时间:2019-01-02 20:05:54

标签: javascript audio audiocontext

我想开发一种通过超声波(最小20.000Hz)的数据传输方式,例如Chrip或quiet.js。

我使用浏览器的AudioContext来编码和解码数据。

enter image description here

现在,我想通过AudioContext通过JavaScript实现一种DBPSK(差分二进制相移键控),以通过相位调制对我的数据进行编码。我真的不知道我的方法是否正确,因为我对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()

预先感谢,乔纳斯

0 个答案:

没有答案