/* Copyright (c) 1997-1999 Miller Puckette. * For information on usage and redistribution, and for a DISCLAIMER OF ALL * WARRANTIES, see the file, "LICENSE.txt," in this distribution. */ /* Audio and MIDI I/O, and other scheduling and system stuff. */ /* NOTE: this file describes Pd implementation details which may change in future releases. The public (stable) API is in m_pd.h. */ /* in s_file.c */ typedef struct _namelist { struct _namelist *nl_next; char *nl_string; } t_namelist; t_namelist *namelist_append(t_namelist *listwas, const char *s); void namelist_free(t_namelist *listwas); /* s_main.c */ extern int sys_debuglevel; extern int sys_verbose; extern int sys_noloadbang; extern int sys_nogui; extern char *sys_guicmd; EXTERN int sys_nearestfontsize(int fontsize); EXTERN int sys_hostfontsize(int fontsize); extern int sys_defaultfont; extern t_symbol *sys_libdir; /* library directory for auxilliary files */ /* s_loader.c */ int sys_load_lib(char *dirname, char *filename); /* s_audio.c */ #define SENDDACS_NO 0 /* return values for sys_send_dacs() */ #define SENDDACS_YES 1 #define SENDDACS_SLEPT 2 #define DEFDACBLKSIZE 64 extern int sys_schedblocksize; /* audio block size for scheduler */ extern int sys_hipriority; /* real-time flag, true if priority boosted */ extern t_sample *sys_soundout; extern t_sample *sys_soundin; extern int sys_inchannels; extern int sys_outchannels; extern int sys_advance_samples; /* scheduler advance in samples */ extern int sys_blocksize; /* audio I/O block size in sample frames */ extern float sys_dacsr; extern int sys_schedadvance; extern int sys_sleepgrain; void sys_open_audio(int naudioindev, int *audioindev, int nchindev, int *chindev, int naudiooutdev, int *audiooutdev, int nchoutdev, int *choutdev, int srate); /* IOhannes */ void sys_close_audio(void); void sys_open_midi(int nmidiin, int *midiinvec, int nmidiout, int *midioutvec); void sys_close_midi(void); int sys_send_dacs(void); void sys_reportidle(void); void sys_set_priority(int higher); void sys_audiobuf(int nbufs); void sys_getmeters(float *inmax, float *outmax); void sys_listdevs(void); void sys_setblocksize(int n); /* s_midi.c */ #define MAXMIDIINDEV 16 /* max. number of input ports */ #define MAXMIDIOUTDEV 16 /* max. number of output ports */ extern int sys_nmidiin; extern int sys_nmidiout; extern int sys_midiindevlist[]; extern int sys_midioutdevlist[]; EXTERN void sys_putmidimess(int portno, int a, int b, int c); EXTERN void sys_putmidibyte(int portno, int a); EXTERN void sys_poll_midi(void); EXTERN void sys_setmiditimediff(double inbuftime, double outbuftime); EXTERN void sys_midibytein(int portno, int byte); /* m_sched.c */ EXTERN void sys_log_error(int type); #define ERR_NOTHING 0 #define ERR_ADCSLEPT 1 #define ERR_DACSLEPT 2 #define ERR_RESYNC 3 #define ERR_DATALATE 4 /* s_inter.c */ EXTERN void sys_microsleep(int microsec); EXTERN void sys_bail(int exitcode); EXTERN int sys_pollgui(void); EXTERN_STRUCT _socketreceiver; #define t_socketreceiver struct _socketreceiver typedef void (*t_socketnotifier)(void *x); typedef void (*t_socketreceivefn)(void *x, t_binbuf *b); EXTERN t_socketreceiver *socketreceiver_new(void *owner, t_socketnotifier notifier, t_socketreceivefn socketreceivefn, int udp); EXTERN void socketreceiver_read(t_socketreceiver *x, int fd); EXTERN void sys_sockerror(char *s); EXTERN void sys_closesocket(int fd); typedef void (*t_fdpollfn)(void *ptr, int fd); EXTERN void sys_addpollfn(int fd, t_fdpollfn fn, void *ptr); EXTERN void sys_rmpollfn(int fd); #ifdef UNIX void sys_setalarm(int microsec); void sys_setvirtualalarm( void); #endif #define API_ALSA 1 #define API_OSS 2 #define API_MMIO 3 #define API_PORTAUDIO 4 #ifdef __linux__ #define API_DEFAULT API_OSS #define API_DEFSTRING "OSS" #endif #ifdef MSW #define API_DEFAULT API_MMIO #define API_DEFSTRING "MMIO" #endif #ifdef MACOSX #define API_DEFAULT API_PORTAUDIO #define API_DEFSTRING "portaudio" #endif #define DEFAULTAUDIODEV -1 #define DEFMIDIDEV -1 int pa_open_audio(int inchans, int outchans, int rate, t_sample *soundin, t_sample *soundout, int framesperbuf, int nbuffers, int indeviceno, int outdeviceno); void pa_close_audio(void); int pa_send_dacs(void); void sys_reportidle(void); void pa_listdevs(void); int oss_open_audio(int naudioindev, int *audioindev, int nchindev, int *chindev, int naudiooutdev, int *audiooutdev, int nchoutdev, int *choutdev, int rate); /* IOhannes */ void oss_close_audio(void); int oss_send_dacs(void); void oss_reportidle(void); void oss_listdevs(void); int alsa_open_audio(int wantinchans, int wantoutchans, int srate); void alsa_close_audio(void); int alsa_send_dacs(void); void alsa_reportidle(void); void alsa_listdevs(void); void mmio_open_audio(int naudioindev, int *audioindev, int nchindev, int *chindev, int naudiooutdev, int *audiooutdev, int nchoutdev, int *choutdev, int rate); void mmio_close_audio( void); void mmio_reportidle(void); int mmio_send_dacs(void); void mmio_listdevs(void); void sys_listmididevs(void); void sys_set_sound_api(int whichapi); extern int sys_audioapi; /* API dependent audio flags and settings */ void oss_set32bit( void); void linux_alsa_devname(char *devname);