我想开发一种通过超声波(最小20.000Hz)的数据传输方式,例如Chrip或quiet.js。
我使用浏览器的AudioContext来编码和解码数据。
现在,我想通过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()
预先感谢,乔纳斯