2011-12-06 5 views
1

誰もがアンドロイド用のオーディオDSPを学習するための有益なリンクを知っていますか? またはサウンドライブラリですか?アンドロイドのJavaオーディオのdspサイトまたはアンドロイドのサウンドライブラリ?

私はwavファイルを再生するための基本的なミキサーを作ろうとしていますが、私はdspについて十分に知っていないことを認識し、私はアンドロイドのために何も見つけることができません。

私はバイト配列にロードされたwavファイルと短いループでAudioTrackを持っています。 どのようにデータをフィードできますか?

この投稿は無視されますが、試してみる価値があると思います。

FileInputStream is = new FileInputStream(filePath); 
       BufferedInputStream bis = new BufferedInputStream(is); 
      DataInputStream dis = new DataInputStream(bis); 

      int i = 0; 

       while (dis.available() > 0) { 
        byteData[i] = dis.readByte(); //byteData 

        i++; 
       } 

final int minSize = AudioTrack.getMinBufferSize(44100, AudioFormat.CHANNEL_CONFIGURATION_STEREO, AudioFormat.ENCODING_PCM_16BIT); 
      track = new AudioTrack(AudioManager.STREAM_MUSIC, 44100, AudioFormat.CHANNEL_CONFIGURATION_STEREO, AudioFormat.ENCODING_PCM_16BIT, 
      minSize, AudioTrack.MODE_STREAM); 
      track.play(); 
      bRun=true; 

     new Thread(new Runnable() { 

      public void run() { 

        track.write(byteData, 0, minSize); 


      } 

      }).start(); 

答えて

0

私は数ヶ月前に、あなたの立場にあったという理由だけであなたはすでに、単純なニーズに、バイト配列内のwavファイルのオーディオサンプルを持っている場合は、私が...これに

を打撃を与えるだろうサンプルをオーディオトラックオブジェクトに渡します(write()メソッドを参照)。

オーディオを混在させるには、各トラックの名前を単に追加します。たとえば、トラック1の最初のサンプルをトラック2に追加し、2番目のサンプルをトラック1のトラック2に追加します。最終結果は、理想的には、オーディオトラックインスタンスの 'write'メソッドに渡す追加されたサンプルを含む3番目の配列になります。

ここでクリッピングする必要があります。追加されたサンプルがこの制限を超えないようにする簡単な方法は、加算を実行して、データ型がshort例えばint)、結果を評価する。それが32768より大きい場合は、それを32768と同じにして、それを短いものに戻します。

int result = track1[i] + track2[i]; 

if(result > 32768) { 
    result = 32768; 
} 
else if(result < -32768) { 
    result = -32768; 
} 

mixedAudio[i] = (short)result; 

上記のスニペットは、短時間の最小範囲のテスト方法にも注意してください。ここでは、フォーマットの欠如のため

Appologiesは、私が

幸運:-)列車に私の携帯電話でよ。

関連する問題