3

ギターのアプリケーションに似た、ユーザー入力に基づいてAndroidで特定の周波数のサウンドを再生したいと思います。誰かがそれを行う方法を教えてもらえますか?res \ rawフォルダーにすべての周波数サウンドを含める必要がありますか?

4

3 に答える 3

4

いいえ、リソースに保存する必要はありません。より良いアプローチは、リアルタイムでトーンを合成することだと思います。そのためには、次のものが必要です。

  • java.lang.Math を使用してバッファを埋めるための三角関数計算 (float から PCM (int) への変換後) を正しいトーンで行う
  • オーディオ再生用の android.media.AudioTrack (バッファから)。静的モードが必要だと思います-応答が速く、操作が簡単です。ただし、オーディオの再生は簡単な作業ではないため、Android のオーディオ システムについて詳しく知る必要があります。もちろん、信号処理に関する基本的な知識は大歓迎です。
  • android.media.audiofx を使用してクールなエフェクトを追加することもできます
于 2010-12-13T08:05:23.683 に答える
2

サウンドを AudioTrack インスタンスに送信し、そのサンプル レートをオンザフライで変更します。

于 2010-12-13T16:21:04.287 に答える
1

これは、そのようには見えませんが、非常に複雑な質問です。

あなたが「音」と言うとき、あなたは単純に音(正弦波、方形波、三角波、ノコギリ波など)を意味しますか、それともギターやピアノなどの「本物の」楽器の音を演奏したいですか?

それが最初のもの (単純なトーン) である場合、Desiderio の答えは正しい軌道に乗っている可能性がありますが、「本物の」楽器サウンドが必要な場合は、/res/raw または /assets ディレクトリに短い「サンプル」が必要です。 .

それらを SoundPool インスタンスにロードし、それを使用して異なる「レート」で再生できます。たとえば、「レート」が 2 の場合、速度が 2 倍になり、周波数が 2 倍になり、1 オクターブ増加します。「rate」を 0.5 にすると速度が半分になり、サウンドが 1 オクターブ下がります。

于 2010-12-13T08:56:52.377 に答える