1

単一のサウンドファイルの周波数を変更しようとしています。私はSoundPoolのものを使ってAndroidでそれを行うことができました。しかし、結果は本当に悪いように聞こえます。だから私はフーリエ変換について足を踏み入れました - しかし、これが私が探しているものかどうかはわかりません.

単一のファイルをロードし、そのファイルが再生されるたびにそのファイルの周波数を変更したいと考えています。だから、一つの音からメロディーを作ることができます。Android/Javaでそれは可能ですか?


これは私がそれを行うことができた方法です。「悪い」とは、音程がずれていることを意味します。

ファイル内のノートの次の周波数を再生したい場合は、2^(1/12) を掛ける必要があります。しかし、これは単なるフロートであるため、次の音符の「実際の」周波数を取得するには正確ではないと思います。

その目標を達成するための「簡単な」方法はありますか?

4

1 に答える 1

0

SoundPool を使用する最も簡単な方法は、play() の呼び出しでレートを調整することです。

play(aSoundId, leftVolume, rightVolume, 1, 0, rate);

レートは 0.5f ~ 2.0f の範囲で変化しますが、極端な値は一般的に音質が良くないため、許容範囲 (.4f など) と最小レート (.85f など) を設定することをお勧めします。次に、その範囲内のどこにいるかを制御する変数を使用できます (たとえば、.0f と 1.0f の間の範囲の浮動小数点数):

float rate = RATE_RANGE * pitch + MINIMUM_RATE;
于 2010-09-17T19:12:50.980 に答える