giuliomoro@230: /* giuliomoro@230: * Copyright (c) 2010 Peter Brinkmann (peter.brinkmann@gmail.com) giuliomoro@230: * giuliomoro@230: * For information on usage and redistribution, and for a DISCLAIMER OF ALL giuliomoro@230: * WARRANTIES, see the file, "LICENSE.txt," in this distribution. giuliomoro@230: * giuliomoro@230: * See https://github.com/libpd/libpd/wiki for documentation giuliomoro@230: * giuliomoro@230: */ giuliomoro@230: giuliomoro@230: #ifndef __Z_LIBPD_H__ giuliomoro@230: #define __Z_LIBPD_H__ giuliomoro@230: giuliomoro@230: #ifdef __cplusplus giuliomoro@230: extern "C" giuliomoro@230: { giuliomoro@230: #endif giuliomoro@230: giuliomoro@230: #include "m_pd.h" giuliomoro@230: giuliomoro@230: EXTERN int libpd_init(void); giuliomoro@230: EXTERN void libpd_clear_search_path(void); giuliomoro@230: EXTERN void libpd_add_to_search_path(const char *sym); giuliomoro@230: giuliomoro@230: EXTERN void *libpd_openfile(const char *basename, const char *dirname); giuliomoro@230: EXTERN void libpd_closefile(void *p); giuliomoro@230: EXTERN int libpd_getdollarzero(void *p); giuliomoro@230: giuliomoro@230: EXTERN int libpd_blocksize(void); giuliomoro@230: EXTERN int libpd_init_audio(int inChans, int outChans, int sampleRate); giuliomoro@230: EXTERN int libpd_process_raw(const float *inBuffer, float *outBuffer); giuliomoro@230: EXTERN int libpd_process_short(const int ticks, giuliomoro@230: const short *inBuffer, short *outBuffer); giuliomoro@230: EXTERN int libpd_process_float(int ticks, giuliomoro@230: const float *inBuffer, float *outBuffer); giuliomoro@230: EXTERN int libpd_process_double(int ticks, giuliomoro@230: const double *inBuffer, double *outBuffer); giuliomoro@230: giuliomoro@230: EXTERN int libpd_arraysize(const char *name); giuliomoro@230: // The parameters of the next two functions are inspired by memcpy. giuliomoro@230: EXTERN int libpd_read_array(float *dest, const char *src, int offset, int n); giuliomoro@230: EXTERN int libpd_write_array(const char *dest, int offset, float *src, int n); giuliomoro@230: giuliomoro@230: EXTERN int libpd_bang(const char *recv); giuliomoro@230: EXTERN int libpd_float(const char *recv, float x); giuliomoro@230: EXTERN int libpd_symbol(const char *recv, const char *sym); giuliomoro@230: giuliomoro@230: EXTERN void libpd_set_float(t_atom *v, float x); giuliomoro@230: EXTERN void libpd_set_symbol(t_atom *v, const char *sym); giuliomoro@230: EXTERN int libpd_list(const char *recv, int argc, t_atom *argv); giuliomoro@230: EXTERN int libpd_message(const char *recv, const char *msg, int argc, t_atom *argv); giuliomoro@230: giuliomoro@230: EXTERN int libpd_start_message(int max_length); giuliomoro@230: EXTERN void libpd_add_float(float x); giuliomoro@230: EXTERN void libpd_add_symbol(const char *sym); giuliomoro@230: EXTERN int libpd_finish_list(const char *recv); giuliomoro@230: EXTERN int libpd_finish_message(const char *recv, const char *msg); giuliomoro@230: giuliomoro@230: EXTERN int libpd_exists(const char *sym); giuliomoro@230: EXTERN void *libpd_bind(const char *sym); giuliomoro@230: EXTERN void libpd_unbind(void *p); giuliomoro@230: giuliomoro@230: EXTERN int libpd_is_float(t_atom *a); giuliomoro@230: EXTERN int libpd_is_symbol(t_atom *a); giuliomoro@230: EXTERN float libpd_get_float(t_atom *a); giuliomoro@230: EXTERN char *libpd_get_symbol(t_atom *a); giuliomoro@230: EXTERN t_atom *libpd_next_atom(t_atom *a); giuliomoro@230: giuliomoro@230: typedef void (*t_libpd_printhook)(const char *recv); giuliomoro@230: typedef void (*t_libpd_banghook)(const char *recv); giuliomoro@230: typedef void (*t_libpd_floathook)(const char *recv, float x); giuliomoro@230: typedef void (*t_libpd_symbolhook)(const char *recv, const char *sym); giuliomoro@230: typedef void (*t_libpd_listhook)(const char *recv, int argc, t_atom *argv); giuliomoro@230: typedef void (*t_libpd_messagehook)(const char *recv, const char *msg, giuliomoro@230: int argc, t_atom *argv); giuliomoro@230: giuliomoro@230: EXTERN void libpd_set_printhook(const t_libpd_printhook hook); giuliomoro@230: EXTERN void libpd_set_banghook(const t_libpd_banghook hook); giuliomoro@230: EXTERN void libpd_set_floathook(const t_libpd_floathook hook); giuliomoro@230: EXTERN void libpd_set_symbolhook(const t_libpd_symbolhook hook); giuliomoro@230: EXTERN void libpd_set_listhook(const t_libpd_listhook hook); giuliomoro@230: EXTERN void libpd_set_messagehook(const t_libpd_messagehook hook); giuliomoro@230: giuliomoro@230: EXTERN int libpd_noteon(int channel, int pitch, int velocity); giuliomoro@230: EXTERN int libpd_controlchange(int channel, int controller, int value); giuliomoro@230: EXTERN int libpd_programchange(int channel, int value); giuliomoro@230: EXTERN int libpd_pitchbend(int channel, int value); giuliomoro@230: EXTERN int libpd_aftertouch(int channel, int value); giuliomoro@230: EXTERN int libpd_polyaftertouch(int channel, int pitch, int value); giuliomoro@230: EXTERN int libpd_midibyte(int port, int byte); giuliomoro@230: EXTERN int libpd_sysex(int port, int byte); giuliomoro@230: EXTERN int libpd_sysrealtime(int port, int byte); giuliomoro@230: giuliomoro@230: typedef void (*t_libpd_noteonhook)(int channel, int pitch, int velocity); giuliomoro@230: typedef void (*t_libpd_controlchangehook)(int channel, giuliomoro@230: int controller, int value); giuliomoro@230: typedef void (*t_libpd_programchangehook)(int channel, int value); giuliomoro@230: typedef void (*t_libpd_pitchbendhook)(int channel, int value); giuliomoro@230: typedef void (*t_libpd_aftertouchhook)(int channel, int value); giuliomoro@230: typedef void (*t_libpd_polyaftertouchhook)(int channel, int pitch, int value); giuliomoro@230: typedef void (*t_libpd_midibytehook)(int port, int byte); giuliomoro@230: giuliomoro@230: EXTERN void libpd_set_noteonhook(const t_libpd_noteonhook hook); giuliomoro@230: EXTERN void libpd_set_controlchangehook(const t_libpd_controlchangehook hook); giuliomoro@230: EXTERN void libpd_set_programchangehook(const t_libpd_programchangehook hook); giuliomoro@230: EXTERN void libpd_set_pitchbendhook(const t_libpd_pitchbendhook hook); giuliomoro@230: EXTERN void libpd_set_aftertouchhook(const t_libpd_aftertouchhook hook); giuliomoro@230: EXTERN void libpd_set_polyaftertouchhook(const t_libpd_polyaftertouchhook hook); giuliomoro@230: EXTERN void libpd_set_midibytehook(const t_libpd_midibytehook hook); giuliomoro@230: EXTERN void libpd_sys_microsleep(int sleep); giuliomoro@230: #ifdef __cplusplus giuliomoro@230: } giuliomoro@230: #endif giuliomoro@230: giuliomoro@230: #endif