00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011 #ifndef __Z_LIBPD_H__
00012 #define __Z_LIBPD_H__
00013
00014 #ifdef __cplusplus
00015 extern "C"
00016 {
00017 #endif
00018
00019 #include "m_pd.h"
00020
00021 void libpd_init(void);
00022 void libpd_clear_search_path(void);
00023 void libpd_add_to_search_path(const char *sym);
00024
00025 void *libpd_openfile(const char *basename, const char *dirname);
00026 void libpd_closefile(void *p);
00027 int libpd_getdollarzero(void *p);
00028
00029 int libpd_blocksize(void);
00030 int libpd_init_audio(int inChans, int outChans, int sampleRate, int tpb);
00031 int libpd_process_raw(float *inBuffer, float *outBuffer);
00032 int libpd_process_short(short *inBuffer, short *outBuffer);
00033 int libpd_process_float(float *inBuffer, float *outBuffer);
00034 int libpd_process_double(double *inBuffer, double *outBuffer);
00035
00036 int libpd_arraysize(const char *name);
00037
00038 int libpd_read_array(float *dest, const char *src, int offset, int n);
00039 int libpd_write_array(const char *dest, int offset, float *src, int n);
00040
00041 int libpd_bang(const char *recv);
00042 int libpd_float(const char *recv, float x);
00043 int libpd_symbol(const char *recv, const char *sym);
00044
00045 void libpd_set_float(t_atom *v, float x);
00046 void libpd_set_symbol(t_atom *v, const char *sym);
00047 int libpd_list(const char *recv, int argc, t_atom *argv);
00048 int libpd_message(const char *recv, const char *msg, int argc, t_atom *argv);
00049
00050 int libpd_start_message(int max_length);
00051 void libpd_add_float(float x);
00052 void libpd_add_symbol(const char *sym);
00053 int libpd_finish_list(const char *recv);
00054 int libpd_finish_message(const char *recv, const char *msg);
00055
00056 int libpd_exists(const char *sym);
00057 void *libpd_bind(const char *sym);
00058 void libpd_unbind(void *p);
00059
00060 #define libpd_is_float(a) ((a).a_type == A_FLOAT)
00061 #define libpd_is_symbol(a) ((a).a_type == A_SYMBOL)
00062 #define libpd_get_float(a) ((a).a_w.w_float)
00063 #define libpd_get_symbol(a) ((a).a_w.w_symbol->s_name)
00064
00065 typedef void (*t_libpd_printhook)(const char *recv);
00066 typedef void (*t_libpd_banghook)(const char *recv);
00067 typedef void (*t_libpd_floathook)(const char *recv, float x);
00068 typedef void (*t_libpd_symbolhook)(const char *recv, const char *sym);
00069 typedef void (*t_libpd_listhook)(const char *recv, int argc, t_atom *argv);
00070 typedef void (*t_libpd_messagehook)(const char *recv, const char *msg,
00071 int argc, t_atom *argv);
00072 extern t_libpd_printhook libpd_printhook;
00073 extern t_libpd_banghook libpd_banghook;
00074 extern t_libpd_floathook libpd_floathook;
00075 extern t_libpd_symbolhook libpd_symbolhook;
00076 extern t_libpd_listhook libpd_listhook;
00077 extern t_libpd_messagehook libpd_messagehook;
00078
00079 int libpd_noteon(int channel, int pitch, int velocity);
00080 int libpd_controlchange(int channel, int controller, int value);
00081 int libpd_programchange(int channel, int value);
00082 int libpd_pitchbend(int channel, int value);
00083 int libpd_aftertouch(int channel, int value);
00084 int libpd_polyaftertouch(int channel, int pitch, int value);
00085 int libpd_midibyte(int port, int byte);
00086 int libpd_sysex(int port, int byte);
00087 int libpd_sysrealtime(int port, int byte);
00088
00089 typedef void (*t_libpd_noteonhook)(int channel, int pitch, int velocity);
00090 typedef void (*t_libpd_controlchangehook)(int channel,
00091 int controller, int value);
00092 typedef void (*t_libpd_programchangehook)(int channel, int value);
00093 typedef void (*t_libpd_pitchbendhook)(int channel, int value);
00094 typedef void (*t_libpd_aftertouchhook)(int channel, int value);
00095 typedef void (*t_libpd_polyaftertouchhook)(int channel, int pitch, int value);
00096 typedef void (*t_libpd_midibytehook)(int port, int byte);
00097 extern t_libpd_noteonhook libpd_noteonhook;
00098 extern t_libpd_controlchangehook libpd_controlchangehook;
00099 extern t_libpd_programchangehook libpd_programchangehook;
00100 extern t_libpd_pitchbendhook libpd_pitchbendhook;
00101 extern t_libpd_aftertouchhook libpd_aftertouchhook;
00102 extern t_libpd_polyaftertouchhook libpd_polyaftertouchhook;
00103 extern t_libpd_midibytehook libpd_midibytehook;
00104
00105 #ifdef __cplusplus
00106 }
00107 #endif
00108
00109 #endif