Peter Brinkmann のサンプル クラスに基づいて、libpd を実行し、Eclipse で処理しています。しかし、Android マイクから Pure Data にオーディオ入力を取得する方法を完全には理解していないようです。
実際のデバイスまたは仮想デバイスで実行すると、次のような一連のエラーが表示されます。
E/AudioRecord(1079): レコード ソース 1 のオーディオ入力を取得できませんでした
E/AudioRecord-JNI(1079): AudioRecord インスタンスの作成中にエラーが発生しました: 初期化チェックに失敗しました。
主なクラスは次のとおりです。
package com.noisepages.nettoyeur.processing.sample;
import org.puredata.android.io.AudioParameters;
import org.puredata.android.processing.PureDataP5Android;
import processing.core.PApplet;
/**
* @author Peter Brinkmann (peter.brinkmann@gmail.com)
*/
public class PdP5Sample extends PApplet {
PureDataP5Android pd;
int zipId = com.noisepages.nettoyeur.processing.sample.R.raw.patch; // Processing masks R
int ins = AudioParameters.suggestInputChannels();
int sampleRate = AudioParameters.suggestSampleRate();
public void setup() {
pd = new PureDataP5Android(this, sampleRate, ins, 2);
pd.unpackAndOpenPatch(zipId, "audiotest.pd");
pd.start();
}
public void draw() {
background(0);
fill(mouseY, mouseX, 0);
stroke(mouseY, mouseX, 0);
ellipseMode(CENTER);
ellipse(mouseX, mouseY, 100, 100);
}
public void stop() {
pd.release();
super.stop();
}
/*
// Implement methods like the following if you want to receive messages from Pd.
// You'll also need to subscribe to receive symbols you're interested if you want
// to receive messages.
public void pdPrint(String s) {
// Handle string s, printed by Pd
}
public void receiveBang(String source) {
// Handle bang sent to symbol source in Pd
}
public void receiveFloat(String source, float x) {
// Handle float x sent to symbol source in Pd
}
public void receiveSymbol(String source, String sym) {
// Handle symbol sym sent to symbol source in Pd
}
*/
// boilerplate
public int sketchWidth() { return this.screenWidth; }
public int sketchHeight() { return this.screenHeight; }
public String sketchRenderer() { return PApplet.OPENGL; }
}