无法为简单的麦克风应用程序获取音频输入
Not able to get audio input for simple microphone app
我正在学习如何将 libpd 与 Android 一起使用,但 运行 遇到了问题。我想看看我是否能让一个简单的 microphone 应用程序正常工作。只是一个 ~adc -> bpfilter -> *2 -> ~dac。我确认补丁适用于 Pure Data 和 MobMuPlat。
我重写了示例程序 "Circle of Fifths" 以确保正确包含 libpd。当我使用 运行 我自己的补丁的教程修改它时,我无法从 phone 的 microphone 获得输入。下一行似乎是问题所在。
PdAudio.initAudio(sampleRate, inpch, 2, 8, true);
如果我将输入通道设置为 0,应用程序将打开但显然不会发出声音 out.This 除非我将 patch 更改为仅播放音调并将 inpch 设置为 0。当输入通道将 inpch 设置为 1,2,否则 AudioParameters.suggestInputChannels();
应用程序将无法打开。
我也试过小采样率,但我遇到了同样的问题。有什么想法吗?
这是完整的主要内容 activity:
/**
*
* @author Peter Brinkmann (peter.brinkmann@gmail.com)
*
* For information on usage and redistribution, and for a DISCLAIMER OF ALL
* WARRANTIES, see the file, "LICENSE.txt," in this distribution.
*
*/
package org.puredata.android.fifths;
import java.io.File;
import java.io.IOException;
import org.puredata.android.io.AudioParameters;
import org.puredata.android.io.PdAudio;
import org.puredata.android.utils.PdUiDispatcher;
import org.puredata.core.PdBase;
import org.puredata.core.utils.IoUtils;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.RadioGroup;
import android.widget.Toast;
public class CircleOfFifths extends Activity {
private static final String TAG = "GuitarTuner";
private PdUiDispatcher dispatcher;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
initGui();
try {
initPd();
loadPatch();
} catch (IOException e) {
Log.e(TAG, e.toString());
finish();
}
}
private void initGui() {
setContentView(R.layout.main);
}
private void initPd() throws IOException {
// Configure the audio glue
// int sampleRate = AudioParameters.suggestSampleRate();
int sampleRate = 64;
int inpch = AudioParameters.suggestInputChannels();
PdAudio.initAudio(sampleRate, inpch, 2, 8, 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();
}
}
您需要获得录音权限。尝试添加
<uses-permission android:name="android.permission.RECORD_AUDIO" />
到您的清单。
我正在学习如何将 libpd 与 Android 一起使用,但 运行 遇到了问题。我想看看我是否能让一个简单的 microphone 应用程序正常工作。只是一个 ~adc -> bpfilter -> *2 -> ~dac。我确认补丁适用于 Pure Data 和 MobMuPlat。
我重写了示例程序 "Circle of Fifths" 以确保正确包含 libpd。当我使用 运行 我自己的补丁的教程修改它时,我无法从 phone 的 microphone 获得输入。下一行似乎是问题所在。
PdAudio.initAudio(sampleRate, inpch, 2, 8, true);
如果我将输入通道设置为 0,应用程序将打开但显然不会发出声音 out.This 除非我将 patch 更改为仅播放音调并将 inpch 设置为 0。当输入通道将 inpch 设置为 1,2,否则 AudioParameters.suggestInputChannels();
应用程序将无法打开。
我也试过小采样率,但我遇到了同样的问题。有什么想法吗?
这是完整的主要内容 activity:
/**
*
* @author Peter Brinkmann (peter.brinkmann@gmail.com)
*
* For information on usage and redistribution, and for a DISCLAIMER OF ALL
* WARRANTIES, see the file, "LICENSE.txt," in this distribution.
*
*/
package org.puredata.android.fifths;
import java.io.File;
import java.io.IOException;
import org.puredata.android.io.AudioParameters;
import org.puredata.android.io.PdAudio;
import org.puredata.android.utils.PdUiDispatcher;
import org.puredata.core.PdBase;
import org.puredata.core.utils.IoUtils;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.RadioGroup;
import android.widget.Toast;
public class CircleOfFifths extends Activity {
private static final String TAG = "GuitarTuner";
private PdUiDispatcher dispatcher;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
initGui();
try {
initPd();
loadPatch();
} catch (IOException e) {
Log.e(TAG, e.toString());
finish();
}
}
private void initGui() {
setContentView(R.layout.main);
}
private void initPd() throws IOException {
// Configure the audio glue
// int sampleRate = AudioParameters.suggestSampleRate();
int sampleRate = 64;
int inpch = AudioParameters.suggestInputChannels();
PdAudio.initAudio(sampleRate, inpch, 2, 8, 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();
}
}
您需要获得录音权限。尝试添加
<uses-permission android:name="android.permission.RECORD_AUDIO" />
到您的清单。