failing to run some externals
porres opened this issue · 8 comments
howdy, I've been testing libpd for android and some externals. I've managed to use pd's extra objects as well as a few objects from cyclone and also from another library of my own.
But the thing is that some externals will fail, and they're pretty simple so I can't see any reason why they fail, here's one I couldn't run, for instance: https://github.com/porres/pd-else/blob/master/classes/gbman~.c
What should I know or be careful about building external objects for android?
how can I get more information about my problem?
the object does compile and create and everything, I just do not hear any sound!
cheers
Hey @porres , can you maybe provide an example project using this external? It would make it easier to try and debug the problem.
hi, gbman~ is a chaotic signal generator
so you can have something as simple as
[gbman~]
|
[*~ 0.1]
|
[dac~]
@porres Please provide a link to an Android project. Preferably one that depends on JCenter's pd-for-android library artifact.
Seams to be related to libpd/libpd#130. You may need the LOCALE option in your compilation ... something messing with float parsing .... see https://github.com/libpd/libpd#known-issues
Note : You can quickly confirm this is related by replacing *~ 0.3 by *~ 1 or replacing gbman~ by a noise~ in your patch.
Hi @joebowbeer,
I'm working alongside @porres in the Android Project and we're using the PdTest from pd-for-android as a base app. We simply cloned the repository and modified the pd patch usign other externals, like the [gbman~].
We put the gbman~.c file in the jni folder and modified the Android.mk like so:
LOCAL_PATH := $(call my-dir)
#---------------------------------------------------------------
include $(CLEAR_VARS)
LOCAL_MODULE := pd
LOCAL_EXPORT_C_INCLUDES := ../../PdCore/jni/libpd/pure-data/src
LOCAL_SRC_FILES := ../../PdCore/libs/$(TARGET_ARCH_ABI)/libpd.so
ifneq ($(MAKECMDGOALS),clean)
include $(PREBUILT_SHARED_LIBRARY)
endif
#---------------------------------------------------------------
include $(CLEAR_VARS)
LOCAL_MODULE := gbman_tilde
LOCAL_CFLAGS := -DPD
LOCAL_SRC_FILES := gbman~.c
LOCAL_SHARED_LIBRARIES = pd
include $(BUILD_SHARED_LIBRARY)
#---------------------------------------------------------------
As @porres mentioned, this worked fine for some externals (like cyclone's pink~), but didn't work for others...
thanks for the help.
Assuming this is due to not setting numeric LOCALE, Android needs to sync with recent commit?
@joebowbeer no needs to sync for now :
- with current andoid version, you just need to compile libpd with SETLOCALE=true option.
- when you will sync android with latest libpd, you won't have to put any options (the recent commit in libpd just make this option the default) .
@porres @esantossilva could you add locale option in your make file ? : LOCAL_CFLAGS := -DPD -DLIBPD_SETLOCALE
that would confirms this is related.
@mgsx-dev still the same. I tried modifying the Android.mk file and then I tried the Makefile for libpd and it remains the same.