如何在音频均衡器中添加立体声,高音选项?

我正在尝试使用小型音频歌曲均衡器。我想在其中添加

高音,立体声等选项,就像在Poweramp播放器中一样。

Poweramp音乐播放器的图像

我成功实现了5个频段的均衡器,如下所示:

public class FragmentEqualizer extends Fragment {

@Override

public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {

super.onCreateView(inflater,container,savedInstanceState);

equalizer = new EQ(getActivity(), new Equalizer(0,com.androidhive.musicplayer.AndroidBuildingMusicPlayerActivity.mp.getAudioSessionId()));

for(Bar bar : eqBars)

bar.setActiveEQ();

maximum= EQ.getEqualizer().getBandLevelRange()[1];

minimum= EQ.getEqualizer().getBandLevelRange()[0];

}

public void onActivityCreated(Bundle savedInstanceState) {

super.onActivityCreated(savedInstanceState);

lvforprest.setOnItemClickListener(new AdapterView.OnItemClickListener() {

@Override

public void onItemClick(AdapterView<?> parent, View view,int position, long id) {

btnformenu.setText(gtuforpresets.get(position).gtumcaFirstName);

if(position!=0 && position <=10)

{

try

{

EQ.getEqualizer().usePreset((short) (position-1));

EQ.getEqualizer().setBandLevel((short)0, EQ.getEqualizer().getBandLevel((short) 0));

EQ.getEqualizer().setBandLevel((short)1, EQ.getEqualizer().getBandLevel((short) 1));

EQ.getEqualizer().setBandLevel((short)2, EQ.getEqualizer().getBandLevel((short) 2));

EQ.getEqualizer().setBandLevel((short)3, EQ.getEqualizer().getBandLevel((short) 3));

EQ.getEqualizer().setBandLevel((short)4, EQ.getEqualizer().getBandLevel((short) 4));

eqBars.get(0).setEQPosition(EQ.getEqualizer().getBandLevel((short) 0));

eqBars.get(1).setEQPosition(EQ.getEqualizer().getBandLevel((short) 1));

eqBars.get(2).setEQPosition(EQ.getEqualizer().getBandLevel((short) 2));

eqBars.get(3).setEQPosition(EQ.getEqualizer().getBandLevel((short) 3));

eqBars.get(4).setEQPosition(EQ.getEqualizer().getBandLevel((short) 4));

seekbar1katop.setText(EQ.getEqualizer().getBandLevel((short) 0)+"mB");

seekbar2katop.setText(EQ.getEqualizer().getBandLevel((short) 1)+"mB");

seekbar3katop.setText(EQ.getEqualizer().getBandLevel((short) 2)+"mB");

seekbar4katop.setText(EQ.getEqualizer().getBandLevel((short) 3)+"mB");

seekbar5katop.setText(EQ.getEqualizer().getBandLevel((short) 4)+"mB");

}

catch(IllegalStateException e)

{

Toast.makeText(getActivity(),"Unable",Toast.LENGTH_SHORT).show();

}

catch(IllegalArgumentException e)

{

Toast.makeText(getActivity(),"Unable",Toast.LENGTH_SHORT).show();

}

catch(UnsupportedOperationException e)

{

Toast.makeText(getActivity(),"Unable",Toast.LENGTH_SHORT).show();

}

}

// Toast.makeText(getApplicationContext(),"You Clicked : " + mEqualizer.getEnabled(),Toast.LENGTH_SHORT).show();

}

});

}

}

上面的代码只是我的均衡器代码的简短摘要。它不会像

我在此处发布的示例那样起作用。。

我也想在均衡器中添加高音,立体声,单声道效果。

我已经像这样实现了低音增强:

public static void setBassBoost(BassBoost bassBoost, int percent) {

try{

bassBoost.setStrength((short) ((short) 1000 / 100 * percent));

bassBoost.setEnabled(true);

}catch (Exception e){

}

}

public static void setBassBoostOff(BassBoost bassBoost) {

bassBoost.setEnabled(false);

}

我使用了Inbulilt类来增强低音。

如何在应用中添加高音和立体声/单声道效果?

回答:

为了改变低音,中音,高音,不需要使用

该AudioTrack对象(即使使用该对象,您也只能

播放未压缩的PCM数据)。

您只需要使用您的 对象来调整适当的频段级别即可。要获取可用频段的数量,只需致电:

Equalizer

myEqualizer.getNumberOfBands()

Considering the number of available bands, you can now set the level for each

band using the following method:

myEqualizer.setBandLevel(band, level);

where:

频段:将具有新增益的频段。

频段编号从0开始,以(频段数量-1)结束。

级别:将以给定频段设置的新的千分之一增益。

getBandLevelRange()将定义最大值和最小值。

更新

要实现一个简单的平衡效果,只是区别左/右

您的播放器的音量(MediaPlayer,SoundPool,…):

mediaPlayer.setVolume(left, right)


要获得单声道效果,您可以考虑使用

Virtualizer,

它提供立体声加宽效果。您可以

使用以下方法设置虚拟化效果的强度:

virtualizer.setStrength(1000); //range is [0..1000]

您需要 仔细阅读

文档

,以检查

基础系统是否真正支持虚拟机的当前配置。

无论如何,这不是真正的单声道输出,我认为如果

不使用诸如

AudioTrack(实际上Poweramp的音频

管道依赖于本地JNI库)这样的低级API,就无法在立体声扬声器上获得单声道输出。如果你想使用的AudioTrack播放,你需要

考虑的,它仅支持PCM数据(WAV)作为输入:你会不会这个手段

能够直接,因为你玩压缩的音频文件(,…如MP3,FLAC)

需要首先手动解码压缩的音频文件。

[Compressed File (MP3)] ===> decode() ===> [PCM data] ===> customEffect() ===> AudioTrack playback()

因此,为了使用和AudioTrack播放压缩的音频(并

最终创建自定义效果),需要执行以下步骤:

  1. 使用解码器解码压缩文件(没有可用的PUBLIC SYSTEM API,您需要手动进行!!!)。
  2. 如有必要,以与AudioTrack兼容的PCM格式转换未压缩的数据
  3. (最终)将转换应用于PCM数据流(例如,您可以合并两个L / R通道并创建单声道效果)
  4. 使用AudioTrack播放PCM流

    我建议您跳过此效果;)

关于低音增强效果,您需要检查

正在运行的设备(例如虚拟器)是否支持当前配置。

看看这里为更多信息

这一点。

以上是 如何在音频均衡器中添加立体声,高音选项? 的全部内容, 来源链接: utcz.com/qa/414325.html

回到顶部