Re: [Csnd-dev] CsoundAndroid getChannel problem
Giovanni Bedetti <[email protected]>
| Newsgroups | gmane.comp.audio.csound.devel |
|---|---|
| Message-ID | <CAO+OKxkfcGuN9oj+XSgbUXzqGNGGNJUiAMLQ4Zaa7QPakhJncQ@mail.gmail.com> |
Hi Tarmo, not sure how to do it in Android, but in CsoundUnity (written in C#) we do something like this to force Android and iOS devices to interpret MYFLT as a float: https://github.com/rorywalsh/CsoundUnity/blob/470893372c06da09f7b5de5d1b3f3ed50e277f22/Runtime/CsoundUnity.cs#L38-L42 #if UNITY_EDITOR || UNITY_STANDALONE using MYFLT = System.Double; #elif UNITY_ANDROID || UNITY_IOS using MYFLT = System.Single; #endif Hope this helps! Il giorno ven 22 set 2023 alle ore 11:35 Tarmo Johannes <[email protected]> ha scritto: > Hi, > > I came back to this project and had strange findings: > > With CsoundAndroid 6.18 it does not matter - if I both set or do not set > USE_DOUBLE - MYFLT is always set to double and the results of all get > functions, like Csound->GetSr(), Csound->GetChannel() are wrong (giving > extremely small values). > > With CsoundAndroid 6.12, when i do not set USE_DOUBLE then MYFLT stands > for float and the return values are correct. > > This problem happens only with the android, build on Desktop it is always > right. I am testing it on a Samsung S9+ device, arm64 architecture, I use > the arm64-v64 libraries to link the app against to: > > LIBS += > -L/home/tarmo/src/csound-android-6.12.0/CsoundForAndroid/CsoundAndroid/src/main/jniLibs/arm64-v8a/ > -lcsoundandroid -lsndfile -lc++_shared > (or the ones for csound-android-6.18.0 for the other build). > > Does it make any sense? > > How can I force MYFLT to be float? With Csound 6.18 just non defining > USE_DOUBLE is not enough. > > > Thanks! > tarmo > > > Kontakt Steven Yi (<[email protected]>) kirjutas kuupäeval R, 8. > september 2023 kell 01:34: > >> Only thing I can think of from the top of my head is checking if >> USE_DOUBLE is set correctly. >> >> On Thu, Sep 7, 2023 at 4:58 PM Tarmo Johannes <[email protected]> wrote: >> >>> Hi! >>> >>> It is probably hard to guess but does anyone have a clue? >>> >>> I am working on a Qt based Csound project that I want to make work on >>> both desktop and Android. I use the Csound API via C++ (thus no Java), >>> including AndroidCsound.hpp and linking against the -lcsoundandroid >>> -lsndfile -lc++_shared libraries. CsoundAndroid is from official >>> Csound downloads: >>> >>> https://github.com/csound/csound/releases/download/6.18.0/csound-android-6.18.0.zip >>> >>> Everything works fine but I discovered Csound->GetChannel is >>> malfunctioning - it return always a very small number as if reading from >>> some wrong place in the memory. No error messages. >>> On desktop it works as expected. >>> >>> I remembered to have GetChannel functioning correctly in the past, I >>> built the app with csound-android-6.12.0 (that used to work) and everything >>> was correct. >>> >>> I tried to make a build with 6.16 and 6.17 to figure out when the change >>> can have happened but these builds caused some runtime errors (dlopen >>> failed: cannot locate symbol "__emutls_get_address") and I gave up. >>> >>> If it of any help, the project is up on: >>> https://github.com/tarmoj/harmonicsPractice/ >>> >>> In this case it is fine for me to stick with 6.12 but would be better to >>> figure out, where is the reason. >>> >>> Do you have any idea? >>> >>> Thanks! >>> tarmo >>> >>