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