2015-01-29 7 views
0

Android에서 libpd를 사용하는 방법을 배우는 중이며 문제가 발생했습니다. 간단한 마이크 앱을 사용할 수 있는지 알고 싶었습니다. 그냥 ~ adc -> bpfilter -> * 2 -> ~ dac. 패치가 Pure Data 및 MobMuPlat으로 작동했는지 확인했습니다.간단한 마이크 앱용 오디오 입력을 수신 할 수 없습니다.

예제 프로그램 "Circle of Fifths"를 통해 libpd가 제대로 포함되었는지 확인했습니다. 튜토리얼을 사용하여 자체 패치를 실행하여 수정했을 때, 전화기의 마이크에서 입력을 얻을 수 없었습니다. 다음 줄이 문제인 것으로 보입니다.

PdAudio.initAudio(sampleRate, inpch, 2, 8, true);  

내가 0으로 입력 채널이있는 경우, 응용 프로그램이 열립니다하지만 난 때 입력 채널을 단지 톤을 재생하기 위해 패치를 변경하고 0으로 inpch 설정하지 않으면 분명히 다르죠 올 것이다 소리가 없다 inpch를 1,2로 설정하거나 AudioParameters.suggestInputChannels();으로 설정하면 응용 프로그램이 열리지 않습니다.

나는 또한 작은 샘플 속도를 시도했지만 동일한 문제가있었습니다. 어떤 아이디어? 당신은 오디오를 기록하기위한 권한이 필요합니다

/** 
* 
* @author Peter Brinkmann ([email protected]) 
* 
* 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(); 
    } 
} 

답변

3

: 여기

전체의 주요 활동이다. 매니페스트에

<uses-permission android:name="android.permission.RECORD_AUDIO" /> 

을 추가하십시오.

+0

감사합니다. 톤이 문제였습니다. 또한 샘플 속도를 원래대로 되돌려 야했습니다. – user2457541