java - android environmentalreverb 什么都不做

标签 java android audio effect

我正在尝试对使用 AudioTrack 生成的正弦波应用混响效果。我尝试了 presetReverb 并将其应用于 audiosession 0,就像文档所说的那样,因为执行 getAudioSessionId() 方法会带来错误,但这根本没有应用混响。所以我尝试了 EnvironmentalReverb 并尝试了 audiosession 0,还使用了 getAudioSessionId(),两者都没有创建混响。

这是我的代码:

t = new Thread()
    {
        public void run()
        {
            setPriority(Thread.MAX_PRIORITY);
            int buffsize = AudioTrack.getMinBufferSize(sr, AudioFormat.CHANNEL_OUT_MONO, AudioFormat.ENCODING_PCM_16BIT);

            AudioTrack audioTrack = new AudioTrack(AudioManager.STREAM_MUSIC, sr, AudioFormat.CHANNEL_OUT_MONO, AudioFormat.ENCODING_PCM_16BIT, buffsize, AudioTrack.MODE_STREAM);

            EnvironmentalReverb reverb = new EnvironmentalReverb(1,0);

            audioTrack.attachAuxEffect(reverb.getId());
            reverb.setDiffusion((short) 1000);
            reverb.setReverbLevel((short) 1000);
            reverb.setDecayTime(10000);
            reverb.setReverbDelay(100);
            reverb.setDensity((short) 1000);
            audioTrack.setAuxEffectSendLevel(1.0f);
            reverb.setEnabled(true);

            short samples[] = new short[buffsize];
            int amp = 32767;
            double twopi = 2*Math.PI;
            double fr = 262.f;
            double ph = 0.0;

            audioTrack.play();

            while(isRunning)
            {
                fr = 262;

                for(int i=0; i < buffsize; i++)
                {
                    samples[i] = (short) (amp*Math.sin(ph));
                    ph += twopi*fr/sr;
                }
                audioTrack.write(samples, 0, buffsize);
            }
            audioTrack.stop();
            audioTrack.release();

        }
    };
    t.start();

我的 list 中有修改音频设置权限,那么为什么不创建混响效果?

最佳答案

两件事:第一,确保在“写入”或“播放”之前设置好效果(并附加)。第二,如果您想让 PresetReverb 工作,您需要执行此操作,然后将其附加到您的 AudioTrack(或 MediaPlayer):

PresetReverb reverb = new PresetReverb(1, 0);

查看中间的示例代码和我在底部的回复:Android MediaPlayer with AudioEffect : Getting Error (-22,0)

关于java - android environmentalreverb 什么都不做,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18191740/

相关文章:

iphone - 如何在iPhone上同时录制麦克风输入和音轨

java - 有没有办法标准化进入 Spring 应用程序的所有请求有效负载中的所有字符串?

java - Tomcat 7.0.47 - Windows - 缺少未处理的异常/堆栈跟踪

c++ - 调用AUEffectBase::Render时如何确定激活的输入总线?

android - MPAndroidChart 的 ValueFormatter 重复了两次值

android - 如何压缩图像大小?

audio - 用 ffmpeg 和 libvorbis 编码 webm 不起作用

Java - 我的 String.split() 的正确正则表达式是什么

java - TCP 在未收到 ack 时合并两个消息

java - Android:点击新图片,压缩并上传到服务器