-1から1までの浮動小数点数の配列として表される波形があります。この波形を繰り返し音として再生することは可能でしょうか?サウンドとしての波形(フロート配列)の再生
私は配列からオーディオを再生する例が多数見つかりましたが、すべてバイト配列に関連しており、非常に畳み込まれたコードが必要です。
-1から1までの浮動小数点数の配列として表される波形があります。この波形を繰り返し音として再生することは可能でしょうか?サウンドとしての波形(フロート配列)の再生
私は配列からオーディオを再生する例が多数見つかりましたが、すべてバイト配列に関連しており、非常に畳み込まれたコードが必要です。
これについてあまり知らなくても、値に範囲を割り当てて、音色ごとにこの範囲の音を再生するのはなぜですか。
-1 ... 1
50Hz ... 20,000Hz
あなたは簡単にこのようにそれを計算することができます:
//input is the float array
int minPitch = 50;
int maxPitch = 20000;
int pitch = (int)((input[idx] + 1) * ((maxPitch - minPitch)/2) + minPitch);
これはあなたに、配列内の値のピッチを与えるだろう。
簡単にされ、あなたのfloat配列は、PCMデータを保持していると仮定すると、あなたはバイト配列に変換し、8ビットでそれを再生したい:
int off=(signed!=0 ? 0 : 128);
for(int i=0; i<samples; i++){
val=(int)(pcm[i]*128. + 0.5);
if(val>127)
val=127;
else if(val<-128)
val=-128;
buffer[index++]=(byte)(val+off);
}
}
このコードは少しここで、JOrbisからコードをmodifedされますpcm
はフロートの配列、buffer
はバイト配列です。