WebAudioAPIでScriptProcessorNodeを使ってピッチシフトさせるためのアルゴリズムを書きたいのです。正弦波をまず作ってみてつなげようと思ったのですが、音声に影響していません。
JavaScript
1 2PichShift.setup = function(audioStream) { 3 4 console.log("pichshift setup"); 5 const processor = audioCtx.createScriptProcessor(1024, 2, 2); 6 this.output = audioCtx.createMediaStreamDestination(); 7 this.mic = audioCtx.createMediaStreamSource(audioStream); 8 9 this.mic.connect(processor); 10 processor.connect(this.output); 11 processor.onaudioprocess = (event) => { 12 const inputLs = event.inputBuffer.getChannelData(0); 13 const inputRs = event.inputBuffer.getChannelData(1); 14 const outputLs = event.outputBuffer.getChannelData(0); 15 const outputRs = event.outputBuffer.getChannelData(1); 16 let tb; 17 18 var frequency = 400; 19 //var fs = audioCtx.sampleRate; // Sampling frequency 20 var x = 0; 21 for (let i = 0; i < 1024; i++) { 22 // var t0 = fs / frequency; 23 var output = 0; 24 output = Math.sin((2 * Math.PI / frequency) * i); 25 // Output sound 26 outputLs[i] = output; 27 outputRs[i] = output; 28 // Update phase 29 x++; 30 // Exceed fundamental period ? 31 if (x >= t0) { 32 x = 0; 33 } 34 } 35} 36};
何も声が変わらないので式以前の問題なのかもしれません。
github:pichshift.js
WebAudioAPIやJavaScript、サウンドプログラミングに詳しい方、ご指摘くださると助かります。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2017/07/14 05:45