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