如何在音频均衡器中添加立体声,高音选项?
我正在尝试使用小型音频歌曲均衡器。我想在其中添加
高音,立体声等选项,就像在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播放压缩的音频(并
最终创建自定义效果),需要执行以下步骤:
- 使用解码器解码压缩文件(没有可用的PUBLIC SYSTEM API,您需要手动进行!!!)。
- 如有必要,以与AudioTrack兼容的PCM格式转换未压缩的数据
- (最终)将转换应用于PCM数据流(例如,您可以合并两个L / R通道并创建单声道效果)
- 使用AudioTrack播放PCM流
我建议您跳过此效果;)
关于低音增强效果,您需要检查
正在运行的设备(例如虚拟器)是否支持当前配置。
看看这里为更多信息
这一点。
以上是 如何在音频均衡器中添加立体声,高音选项? 的全部内容, 来源链接: utcz.com/qa/414325.html