1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
|
#include "AndroidCsound.hpp"
#include <android/log.h>
extern "C" {
extern int androidplayopen_(CSOUND *csound, const csRtAudioParams *parm);
extern int androidrecopen_(CSOUND *csound, const csRtAudioParams *parm);
extern void androidrtplay_(CSOUND *csound, const MYFLT *buffer, int nbytes);
extern int androidrtrecord_(CSOUND *csound, MYFLT *buffer, int nbytes);
extern void androidrtclose_(CSOUND *csound);
static void androidMessageCallback(CSOUND*, int attr, const char *format, va_list valist) {
char message[1024];
vsnprintf(message, 1024, format, valist);
__android_log_print(ANDROID_LOG_INFO,"AndroidCsound","%s", message);
}
}
#include <pthread.h>
void AndroidCsound::setOpenSlCallbacks() {
__android_log_print(ANDROID_LOG_INFO,"AndroidCsound","setOpenSlCallbacks");
if(csoundQueryGlobalVariable(csound,"::async::") == NULL)
if (this->CreateGlobalVariable("::async::", sizeof(int)) == 0) {
int *p = ((int *)csoundQueryGlobalVariable(csound,"::async::"));
*p = asyncProcess;
__android_log_print(ANDROID_LOG_INFO,"AndroidCsound","==set callbacks");
csoundSetPlayopenCallback(csound, androidplayopen_);
csoundSetRecopenCallback(csound, androidrecopen_);
csoundSetRtplayCallback(csound, androidrtplay_);
csoundSetRtrecordCallback(csound, androidrtrecord_);
csoundSetRtcloseCallback(csound, androidrtclose_);
csoundSetMessageCallback(csound, androidMessageCallback);
__android_log_print(ANDROID_LOG_INFO,"AndroidCsound","==callbacks set");
}
if(csoundQueryGlobalVariable(csound,"::paused::") == NULL) {
if (this->CreateGlobalVariable("::paused::", sizeof(int)) == 0) {
int *p = ((int *)csoundQueryGlobalVariable(csound,"::paused::"));
*p = 0;
}
}
};
int AndroidCsound::SetGlobalEnv(const char* name, const char* variable) {
return csoundSetGlobalEnv(name, variable);
}
void AndroidCsound::Pause(bool pause){
int *p = ((int *)csoundQueryGlobalVariable(csound,"::paused::"));
*p = pause ? 1 : 0;
}
unsigned long AndroidCsound::getStreamTime(){
return *((__uint64_t*) csoundQueryGlobalVariable(csound,"::streamtime::"));
}
|