A modern Music Player Daemon based on Rockbox open source high quality audio player
libadwaita
audio
rust
zig
deno
mpris
rockbox
mpd
1/* Copyright (c) 1997-1999 Miller Puckette.
2* For information on usage and redistribution, and for a DISCLAIMER OF ALL
3* WARRANTIES, see the file, "LICENSE.txt," in this distribution. */
4
5/* Audio and MIDI I/O, and other scheduling and system stuff. */
6
7/* NOTE: this file describes Pd implementation details which may change
8in future releases. The public (stable) API is in m_pd.h. */
9
10/* in s_file.c */
11typedef struct _namelist
12{
13 struct _namelist *nl_next;
14 char *nl_string;
15} t_namelist;
16
17t_namelist *namelist_append(t_namelist *listwas, const char *s);
18void namelist_free(t_namelist *listwas);
19
20/* s_main.c */
21extern int sys_debuglevel;
22extern int sys_verbose;
23extern int sys_noloadbang;
24extern int sys_nogui;
25extern char *sys_guicmd;
26
27EXTERN int sys_nearestfontsize(int fontsize);
28EXTERN int sys_hostfontsize(int fontsize);
29
30extern int sys_defaultfont;
31extern t_symbol *sys_libdir; /* library directory for auxilliary files */
32
33/* s_loader.c */
34int sys_load_lib(char *dirname, char *filename);
35
36/* s_audio.c */
37
38#define SENDDACS_NO 0 /* return values for sys_send_dacs() */
39#define SENDDACS_YES 1
40#define SENDDACS_SLEPT 2
41
42#define DEFDACBLKSIZE 64
43extern int sys_schedblocksize; /* audio block size for scheduler */
44extern int sys_hipriority; /* real-time flag, true if priority boosted */
45extern t_sample *sys_soundout;
46extern t_sample *sys_soundin;
47extern int sys_inchannels;
48extern int sys_outchannels;
49extern int sys_advance_samples; /* scheduler advance in samples */
50extern int sys_blocksize; /* audio I/O block size in sample frames */
51extern float sys_dacsr;
52extern int sys_schedadvance;
53extern int sys_sleepgrain;
54void sys_open_audio(int naudioindev, int *audioindev,
55 int nchindev, int *chindev,
56 int naudiooutdev, int *audiooutdev, int nchoutdev, int *choutdev,
57 int srate, int advance, int enable);
58void sys_close_audio(void);
59
60 /* s_midi.c */
61void sys_open_midi(int nmidiin, int *midiinvec, int nmidiout, int *midioutvec);
62
63 /* implemented in the system dependent MIDI code (s_midi_pm.c, etc. ) */
64void sys_do_open_midi(int nmidiin, int *midiinvec,
65 int nmidiout, int *midioutvec);
66void sys_close_midi(void);
67void midi_getdevs(char *indevlist, int *nindevs,
68 char *outdevlist, int *noutdevs, int maxndev, int devdescsize);
69
70int sys_send_dacs(void);
71void sys_reportidle(void);
72void sys_set_priority(int higher);
73void sys_audiobuf(int nbufs);
74void sys_getmeters(float *inmax, float *outmax);
75void sys_listdevs(void);
76void sys_setblocksize(int n);
77
78/* s_midi.c */
79#define MAXMIDIINDEV 16 /* max. number of input ports */
80#define MAXMIDIOUTDEV 16 /* max. number of output ports */
81extern int sys_nmidiin;
82extern int sys_nmidiout;
83extern int sys_midiindevlist[];
84extern int sys_midioutdevlist[];
85
86EXTERN void sys_putmidimess(int portno, int a, int b, int c);
87EXTERN void sys_putmidibyte(int portno, int a);
88EXTERN void sys_poll_midi(void);
89EXTERN void sys_setmiditimediff(double inbuftime, double outbuftime);
90EXTERN void sys_midibytein(int portno, int byte);
91
92/* m_sched.c */
93EXTERN void sys_log_error(int type);
94#define ERR_NOTHING 0
95#define ERR_ADCSLEPT 1
96#define ERR_DACSLEPT 2
97#define ERR_RESYNC 3
98#define ERR_DATALATE 4
99void sched_set_using_dacs(int flag);
100
101/* s_inter.c */
102
103EXTERN void sys_microsleep(int microsec);
104
105EXTERN void sys_bail(int exitcode);
106EXTERN int sys_pollgui(void);
107
108EXTERN_STRUCT _socketreceiver;
109#define t_socketreceiver struct _socketreceiver
110
111typedef void (*t_socketnotifier)(void *x);
112typedef void (*t_socketreceivefn)(void *x, t_binbuf *b);
113
114EXTERN t_socketreceiver *socketreceiver_new(void *owner,
115 t_socketnotifier notifier, t_socketreceivefn socketreceivefn, int udp);
116EXTERN void socketreceiver_read(t_socketreceiver *x, int fd);
117EXTERN void sys_sockerror(char *s);
118EXTERN void sys_closesocket(int fd);
119
120typedef void (*t_fdpollfn)(void *ptr, int fd);
121EXTERN void sys_addpollfn(int fd, t_fdpollfn fn, void *ptr);
122EXTERN void sys_rmpollfn(int fd);
123#ifdef UNIX
124void sys_setalarm(int microsec);
125void sys_setvirtualalarm( void);
126#endif
127
128#define API_ALSA 1
129#define API_OSS 2
130#define API_MMIO 3
131#define API_PORTAUDIO 4
132#define API_JACK 5
133#define API_ROCKBOX 6
134
135#if defined(__linux__) && !defined(ROCKBOX)
136#define API_DEFAULT API_OSS
137#define API_DEFSTRING "OSS"
138#endif
139#ifdef MSW
140#define API_DEFAULT API_MMIO
141#define API_DEFSTRING "MMIO"
142#endif
143#ifdef MACOSX
144#define API_DEFAULT API_PORTAUDIO
145#define API_DEFSTRING "portaudio"
146#endif
147#ifdef ROCKBOX
148#define API_DEFAULT API_ROCKBOX
149#define API_DEFSTRING "Rockbox"
150#endif
151#define DEFAULTAUDIODEV 0
152
153#define MAXAUDIOINDEV 4
154#define MAXAUDIOOUTDEV 4
155
156#define DEFMIDIDEV 0
157
158#define DEFAULTSRATE 44100
159#ifdef MSW
160#define DEFAULTADVANCE 70
161#else
162#define DEFAULTADVANCE 50
163#endif
164
165int pa_open_audio(int inchans, int outchans, int rate, t_sample *soundin,
166 t_sample *soundout, int framesperbuf, int nbuffers,
167 int indeviceno, int outdeviceno);
168void pa_close_audio(void);
169int pa_send_dacs(void);
170void sys_reportidle(void);
171void pa_listdevs(void);
172void pa_getdevs(char *indevlist, int *nindevs,
173 char *outdevlist, int *noutdevs, int *canmulti,
174 int maxndev, int devdescsize);
175
176int oss_open_audio(int naudioindev, int *audioindev, int nchindev,
177 int *chindev, int naudiooutdev, int *audiooutdev, int nchoutdev,
178 int *choutdev, int rate); /* IOhannes */
179void oss_close_audio(void);
180int oss_send_dacs(void);
181void oss_reportidle(void);
182void oss_getdevs(char *indevlist, int *nindevs,
183 char *outdevlist, int *noutdevs, int *canmulti,
184 int maxndev, int devdescsize);
185
186int alsa_open_audio(int naudioindev, int *audioindev, int nchindev,
187 int *chindev, int naudiooutdev, int *audiooutdev, int nchoutdev,
188 int *choutdev, int rate);
189void alsa_close_audio(void);
190int alsa_send_dacs(void);
191void alsa_reportidle(void);
192void alsa_getdevs(char *indevlist, int *nindevs,
193 char *outdevlist, int *noutdevs, int *canmulti,
194 int maxndev, int devdescsize);
195
196int jack_open_audio(int wantinchans, int wantoutchans, int srate);
197void jack_close_audio(void);
198int jack_send_dacs(void);
199void jack_reportidle(void);
200void jack_listdevs(void);
201
202void mmio_open_audio(int naudioindev, int *audioindev,
203 int nchindev, int *chindev, int naudiooutdev, int *audiooutdev,
204 int nchoutdev, int *choutdev, int rate);
205void mmio_close_audio( void);
206void mmio_reportidle(void);
207int mmio_send_dacs(void);
208void mmio_getdevs(char *indevlist, int *nindevs,
209 char *outdevlist, int *noutdevs, int *canmulti,
210 int maxndev, int devdescsize);
211
212void rockbox_open_audio(int rate);
213void rockbox_close_audio(void);
214int rockbox_send_dacs(void);
215void rockbox_getdevs(void);
216
217void sys_listmididevs(void);
218void sys_set_audio_api(int whichapi);
219void sys_get_audio_apis(char *buf);
220extern int sys_audioapi;
221void sys_set_audio_state(int onoff);
222
223/* API dependent audio flags and settings */
224void oss_set32bit( void);
225void linux_alsa_devname(char *devname);
226