Android - 高手机资源使用导致一部耳机音量低?

时间:2015-03-31 18:33:40

标签: android audio resources puredata libpd

我在Android上使用libpd(纯数据),以便创建一个可用作低预算助听器的应用程序。我的原始设计是"音频引擎"有7个滤镜,两个耳机的音量相同。我改变了设计,有14个过滤器,现在右耳机的音量很低。

在笔记本电脑上运行引擎会在两只耳朵上产生相同的音量。我尝试在它自己的线程上运行所有音频处理,但我不确定我是否正确地执行了此操作。

所以要把问题烧掉。

  1. 一只耳朵的音量低是否会导致使用太多资源的副作用?
  2. 我创建新线程的实现是否正确?

    public class CircleOfFifths extends Activity {
    
    private static final String TAG = "GuitarTuner";
    private PdUiDispatcher dispatcher;
    
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        initGui();
    
        new Thread(new Runnable() { 
            public void run(){        
                try {
                    initPd();
                    loadPatch();
                } catch (IOException e) {
                    Log.e(TAG, e.toString());
                    finish();
                }            }
        }).start();
    
    
    
    }
    
    private void initGui() {
        setContentView(R.layout.main);
    }
    
    private void initPd() throws IOException {
        // Configure the audio glue
        // int sampleRate = AudioParameters.suggestSampleRate();
    
        int sampleRate = AudioParameters.suggestSampleRate();
        int inpch = AudioParameters.suggestInputChannels();
        int outch = AudioParameters.suggestOutputChannels();
        PdAudio.initAudio(sampleRate, inpch, outch, 4, true);
    
        // Create and install the dispatcher dispatcher = new PdUiDispatcher();
        // PdBase.setReceiver(dispatcher);
    }
    
    private void loadPatch() throws IOException {
        File dir = getFilesDir();
        IoUtils.extractZipResource(getResources().openRawResource(R.raw.patch),
                dir, true);
        File patchFile = new File(dir, "microphone.pd");
        PdBase.openPatch(patchFile.getAbsolutePath());
        PdAudio.startAudio(this);
    }
    
    @Override
    protected void onResume() {
        super.onResume();
        PdAudio.startAudio(this);
    }
    
    @Override
    protected void onPause() {
        super.onPause();
        PdAudio.stopAudio();
    }
    }
    

1 个答案:

答案 0 :(得分:1)

使用太多CPU根本不会影响音量。您的过滤器似乎更有可能导致该通道上的增益小于1。

你的帖子看起来很好。我不是100%确定在非UI线程上调用完成是合法的,但如果不是,那么你可以在那里添加runOnUiThread