【问题标题】:How to handle tempo and pitch in android using MediaPlayer or SoundPool如何使用 MediaPlayer 或 SoundPool 在 android 中处理速度和音高
【发布时间】:2011-09-10 14:18:37
【问题描述】:

我尝试使用 SoundPool 来处理速度和音高。在 play() 方法中,如果我们改变速率(最后一个参数),速度和音高都会改变。而且我无法使用 SoundPool 播放完整的声音文件。我在 SoundPool 中使用 FileDescriptor 获得了解决方案,我们可以提及要播放的文件的长度,但它不起作用。请分享您的想法。

谢谢

【问题讨论】:

    标签: android


    【解决方案1】:

    据我所知,Mediaplayer 或 Soundpool 不能让我们独立更改音高和温度(速度)。

    你可以尝试使用soundtouch,一个由xanaduo维护的github项目。

    在网上搜索了 2 天后,这让我很开心。

    【讨论】:

      【解决方案2】:

      尝试在 Android 中更改音高

      这可能有点用处。 在尝试了一切之后,我决定使用 SoundPool 来改变音高,2.0 的播放速率导致声音以原始频率的两倍播放,0.5 的播放速率使其以原始频率的一半播放。播放速率范围为 0.5 到 2.0。 但它确实适用于低于和高于 0.5 和 2.0 的频率。

      我正在发布我的工作代码,

      但它只是为了演示目的,在这里您需要手动更改“播放速率”,每次安装应用程序时,例如:“sp.play(explosion, 1,1,0,0,1.5f)”这里的“1.5f”是播放速率。可以很容易地创建一个 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);
               }
      
          }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-11-14
        相关资源
        最近更新 更多