2011-06-30 7 views
7

-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); 

これはあなたに、配列内の値のピッチを与えるだろう。

1

簡単にされ、あなたの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はバイト配列です。

関連する問題