すべてを試した後、SoundPoolを使用してピッチを変更することにしました。再生レートが2.0の場合、サウンドは元の2倍の周波数で再生され、再生レートが0.5の場合、元の周波数の半分で再生されます。再生速度の範囲は0.5〜2.0です。しかし、それは0.5と2.0より低いと高い周波数で動作しました。
作業コードを投稿しています、
ただし、デモの目的であるため、アプリケーションをインストールするたびに、「再生速度」を手動で変更する必要があります。たとえば、「sp.play(explosion、1,1,0,0,1.5f)」ここでは「1.5」 f"は再生速度です。EditView、または実行時に再生レートの値を設定するのと同様のものを簡単に作成できます。
このアプリでは、アプリの画面をタップするだけで、設定した再生速度で音楽を再生できます。
import java.io.IOException;
import android.app.Activity;
import android.content.res.AssetFileDescriptor;
import android.media.AudioManager;
import android.media.SoundPool;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class SoundPoolActivity extends Activity implements OnClickListener {
SoundPool sp;
int explosion = 0;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
View v = new View(this);
v.setOnClickListener(this);
setContentView(v);
sp = new SoundPool(1,AudioManager.STREAM_MUSIC,0);
//explosion = sp.load(this, R.raw.hh,0);
explosion = sp.load("/sdcard/hh.m4a",0);
}
public void onClick(View v){
if (explosion!=0){
sp.play(explosion, 1,1,0,0,2.3f);
}
}
}