[英]libpd with Android - Patch doesn't play sound when using expr in patch
我在給定頻率/增益/增益的情況下使用補丁來實現峰值濾波器(使用biquad〜)。
該補丁在Pd中可以正常工作,但是與Android Studio一起使用時,我聽不到聲音。 Android Studio中未顯示任何錯誤,該補丁加載正常,只有聲音。
如果我刪除了將f / q / g參數轉換為濾波器系數的補丁部分,並僅給出了5個隨機系數,則補丁工作正常。
因此,我認為問題出在expr對象上,除此之外,沒有太多其他事情了。 由於使用expr,我有什么要添加到Android Studio項目中的特定內容嗎?
此補丁不起作用。
此修補程序確實有效。
我的Java文件如下所示:
package com.example.mark.pdaudioio;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.CompoundButton;
import android.widget.SeekBar;
import android.widget.Switch;
import android.widget.TextView;
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 java.io.File;
import java.io.IOException;
public class MainActivity extends AppCompatActivity {
TextView volumeTextViewJava;
SeekBar volumeSeekBarJava;
int volume = 0;
private PdUiDispatcher dispatcher;
private void initPD() throws IOException{
int sampleRate = AudioParameters.suggestSampleRate();
int inpch = AudioParameters.suggestInputChannels();
PdAudio.initAudio(sampleRate, inpch, 2, 8, true);
dispatcher = new PdUiDispatcher();
PdBase.setReceiver(dispatcher);
}
private void initGUI(){
Switch onOffSwitch = (Switch) findViewById(R.id.onOffSwitch);
onOffSwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
float val = (isChecked) ? 1.0f : 0.0f;
PdBase.sendFloat("onOffPD",val);
}
});
volumeTextViewJava = (TextView) findViewById(R.id.volumeTextView);
volumeSeekBarJava = (SeekBar) findViewById(R.id.volumeSeekBar);
volumeSeekBarJava.setMax(100);
volumeSeekBarJava.incrementProgressBy(1);
volumeSeekBarJava.setProgress(0);
volumeSeekBarJava.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
public void onProgressChanged(SeekBar seekBar, int volProgress, boolean fromUser) {
volume = volProgress;
float volumeFloat = (float) volume;
PdBase.sendFloat("volumePD", volumeFloat);
volumeTextViewJava.setText("vol: " + volProgress);
}
public void onStartTrackingTouch(SeekBar seekBar) {
}
public void onStopTrackingTouch(SeekBar seekBar) {
}
});
}
private void loadPDPatch() throws IOException{
File dir = getFilesDir();
IoUtils.extractZipResource(getResources().openRawResource(R.raw.simplepatch),dir,true);
File pdPatch = new File(dir, "Biquad_WithExpr.pd");
PdBase.openPatch(pdPatch.getAbsolutePath());
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
try{
initPD();
loadPDPatch();
}catch (IOException e){
finish();
}
initGUI();
}
@Override
protected void onResume(){
super.onResume();
PdAudio.startAudio(this);
}
@Override
protected void onPause(){
super.onPause();
PdAudio.stopAudio();
}
}
這是我完整的Android Studio項目的鏈接。 https://www.dropbox.com/s/aorji4heum8jvbc/PDAudioIO.zip?dl=0
任何幫助都將不勝感激!
在Android和iOS上同時使用libPD時,我遇到了類似的問題。 看起來您的大多數表達式都可以使用本機pd-vanilla對象處理(但會更加冗長),因此重新編碼表達式可能會解決此問題。 如果您還沒有這樣做,那么最好通過PD-Vanilla而不是PD擴展或PD-L2Ork測試libPD補丁。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.