ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/PDL-Audio/sndlib/sndlib.h
Revision: 1.1
Committed: Tue Dec 28 01:05:17 2004 UTC (19 years, 5 months ago) by root
Content type: text/plain
Branch: MAIN
CVS Tags: rel-1_1, rel-1_2, HEAD
Log Message:
*** empty log message ***

File Contents

# User Rev Content
1 root 1.1 #ifndef SNDLIB_H
2     #define SNDLIB_H
3    
4    
5     /* taken from libtool's demo/foo.h to try to protect us from C++ and ancient C's */
6     #undef __BEGIN_DECLS
7     #undef __END_DECLS
8     #ifdef __cplusplus
9     # define __BEGIN_DECLS extern "C" {
10     # define __END_DECLS }
11     #else
12     # define __BEGIN_DECLS /* empty */
13     # define __END_DECLS /* empty */
14     #endif
15    
16     #undef __P
17     #if defined (__STDC__) || defined (_AIX) || (defined (__mips) && defined (_SYSTYPE_SVR4)) || defined(WIN32) || defined(__cplusplus)
18     # define __P(protos) protos
19     #else
20     # define __P(protos) ()
21     #endif
22    
23    
24     #define SNDLIB_VERSION 8
25     #define SNDLIB_REVISION 2
26     #define SNDLIB_DATE "6-Dec-99"
27    
28     /* 1: Oct-98
29     * 2: Oct-98: removed header override functions
30     * 3: Dec-98: removed output_scaler
31     * 4: Jan-99: Sun-related word-alignment changes, C++ fixups
32     * 5: Mar-99: changed float_sound to omit the scaling by SNDLIB_SNDFLT
33     * removed perror calls
34     * added sndlib2scm.c, sndlib-strings.h
35     * 8: fixed windoze audio_output bug
36     * 9: fixed Mac p2cstr potential bug
37     * 6: Jun-99: moved clm-specific code out of sndlib files
38     * changed many names to use "mus" prefix, or "SNDLIB" (and upper case)
39     * added sound_frames
40     * added clm.c, clm.h, vct.c, vct.h, clm2scm.c
41     * added reopen_sound_output (arg order changed rev 6), mus_seek_frame, sound_seek_frame
42     * Jul-99: added sound_max_amp, mus_error
43     * Aug-99: old-sndlib.h for backwards compatibility, added mus_fwrite
44     * Sep-99: added mus_set_raw_header_defaults, mus_probe_file
45     * 7: Sep-99: ALSA port thanks to Paul Barton-Davis
46     * fixed 2 bugs related to Sonorus Studio support
47     * several clm.c/clm2scm.c bugs and oversights repaired.
48     * added list2vct, mus_file2array, mus_array2file, dsp_devices.
49     * 7: added configure files, README.sndlib, changed tar file to use sndlib directory
50     * 8: added -1 as error return from various functions (void->int change in io.c and headers.c)
51     * added mus_header_writable, mus_header_aiff_p, sound_aiff_p
52     * 9: much more of sndlib tied into sndlib2scm
53     * 10: tried to get SGI new AL default devices to work right
54     * 11: USE_BYTESWAP in io.c (if you want to use the GLibC macros).
55     * 14: added forget_sound to remove entry from sound data base.
56     * 18: added more vct funcs, formant-bank, oscil-bank, etc.
57     * 8: Nov-99: decided to make a non-compatible change: AIFF_sound file is now AIFC_sound_file,
58     * and old_style_AIFF_sound_file is now AIFF_sound_file.
59     */
60    
61     #ifndef HAVE_SNDLIB
62     #define HAVE_SNDLIB 1
63     #endif
64    
65     /* try to figure out what type of machine (and in worst case, what OS) we're running on */
66     /* gcc has various compile-time macros like #cpu, but we're hoping to run in Metroworks C, Watcom C, MSC, CodeWarrior, MPW, etc */
67    
68     #if defined(HAVE_CONFIG_H)
69     #include "config.h"
70     #if (!defined(WORDS_BIGENDIAN))
71     #define SNDLIB_LITTLE_ENDIAN 1
72     #endif
73     #if (SIZEOF_INT_P != SIZEOF_INT)
74     #define LONG_INT_P 1
75     #else
76     #define LONG_INT_P 0
77     #endif
78     #else
79     #if defined(ALPHA) || defined(__alpha__)
80     #define LONG_INT_P 1
81     #else
82     #define LONG_INT_P 0
83     #endif
84     #define RETSIGTYPE void
85     #ifdef __LITTLE_ENDIAN__
86     /* NeXTStep on Intel */
87     #define SNDLIB_LITTLE_ENDIAN 1
88     #else
89     #ifdef BYTE_ORDER
90     #if (BYTE_ORDER == LITTLE_ENDIAN)
91     /* SGI possibility (/usr/include/sys/endian.h), and Linux (/usr/include/bytesex.h and endian.h) */
92     /* Alpha is apparently /usr/include/alpha/endian.h */
93     #define SNDLIB_LITTLE_ENDIAN 1
94     #endif
95     #endif
96     #endif
97     #endif
98    
99     #ifndef __GNUC__
100     #ifndef __FUNCTION__
101     #define __FUNCTION__ ""
102     #endif
103     #endif
104    
105     #if defined(ALPHA) || defined(WINDOZE) || defined(__alpha__)
106     #define SNDLIB_LITTLE_ENDIAN 1
107     #endif
108    
109     #if (!(defined(MACOS))) && (defined(MPW_C) || defined(macintosh) || defined(__MRC__))
110     #define MACOS 1
111     #endif
112    
113     /* due to project builder stupidity, we can't always depend on -D flags here (maybe we need a SNDLIB_OS macro?) */
114     /* these wouldn't work with autoconf anyway, so we'll do it by hand */
115    
116     #if (!defined(SGI)) && (!defined(NEXT)) && (!defined(LINUX)) && (!defined(MACOS)) && (!defined(BEOS)) && (!defined(SUN)) && (!defined(UW2)) && (!defined(SCO5)) && (!defined(ALPHA)) && (!defined(WINDOZE))
117     #if defined(__dest_os)
118     /* we're in Metrowerks Land */
119     #if (__dest_os == __be_os)
120     #define BEOS 1
121     #else
122     #if (__dest_os == __mac_os)
123     #define MACOS 1
124     #endif
125     #endif
126     #else
127     #if macintosh
128     #define MACOS 1
129     #else
130     #if (__WINDOWS__) || (__NT__) || (_WIN32) || (__CYGWIN__)
131     #define WINDOZE 1
132     #define SNDLIB_LITTLE_ENDIAN 1
133     #else
134     #ifdef __alpha__
135     #define ALPHA 1
136     #define SNDLIB_LITTLE_ENDIAN 1
137     #endif
138     #endif
139     #endif
140     #endif
141     #endif
142    
143     /* others apparently are __QNX__ __bsdi__ __FreeBSD__ */
144    
145     #if defined(LINUX) && defined(PPC) && (!(defined(MKLINUX)))
146     #define MKLINUX 1
147     #endif
148    
149     #ifndef HAVE_ALSA
150     #if defined(MKLINUX) || defined(LINUX) || defined(SCO5) || defined(UW2) || defined(HAVE_SOUNDCARD_H) || defined(HAVE_SYS_SOUNDCARD_H) || defined(HAVE_MACHINE_SOUNDCARD_H)
151     #define HAVE_OSS 1
152     #else
153     #define HAVE_OSS 0
154     #endif
155     #else
156     #define HAVE_OSS 0
157     #endif
158    
159     #if (!defined(M_PI))
160     #define M_PI 3.14159265358979323846264338327
161     #define M_PI_2 (M_PI/2.0)
162     #endif
163    
164     #define TWO_PI (2.0*M_PI)
165    
166     #ifndef SEEK_SET
167     #define SEEK_SET 0
168     #endif
169    
170     #ifndef SEEK_CUR
171     #define SEEK_CUR 1
172     #endif
173    
174     #ifndef SEEK_END
175     #define SEEK_END 2
176     #endif
177    
178     #define SNDLIB_DAC_CHANNEL 252525
179     #define SNDLIB_DAC_REVERB 252520
180     #define SNDLIB_SNDFIX 32768.0
181     #define SNDLIB_SNDFLT 0.000030517578
182    
183     #define unsupported_sound_file -1
184     #define NeXT_sound_file 0
185     #define AIFC_sound_file 1
186     #define RIFF_sound_file 2
187     #define BICSF_sound_file 3
188     #define NIST_sound_file 4
189     #define INRS_sound_file 5
190     #define ESPS_sound_file 6
191     #define SVX_sound_file 7
192     #define VOC_sound_file 8
193     #define SNDT_sound_file 9
194     #define raw_sound_file 10
195     #define SMP_sound_file 11
196     #define SD2_sound_file 12
197     #define AVR_sound_file 13
198     #define IRCAM_sound_file 14
199     #define SD1_sound_file 15
200     #define SPPACK_sound_file 16
201     #define MUS10_sound_file 17
202     #define HCOM_sound_file 18
203     #define PSION_sound_file 19
204     #define MAUD_sound_file 20
205     #define IEEE_sound_file 21
206     #define DeskMate_sound_file 22
207     #define DeskMate_2500_sound_file 23
208     #define Matlab_sound_file 24
209     #define ADC_sound_file 25
210     #define SoundEdit_sound_file 26
211     #define SoundEdit_16_sound_file 27
212     #define DVSM_sound_file 28
213     #define MIDI_file 29
214     #define Esignal_file 30
215     #define soundfont_sound_file 31
216     #define gravis_sound_file 32
217     #define comdisco_sound_file 33
218     #define goldwave_sound_file 34
219     #define srfs_sound_file 35
220     #define MIDI_sample_dump 36
221     #define DiamondWare_sound_file 37
222     #define RealAudio_sound_file 38
223     #define ADF_sound_file 39
224     #define SBStudioII_sound_file 40
225     #define Delusion_sound_file 41
226     #define Farandole_sound_file 42
227     #define Sample_dump_sound_file 43
228     #define Ultratracker_sound_file 44
229     #define Yamaha_SY85_sound_file 45
230     #define Yamaha_TX16_sound_file 46
231     #define digiplayer_sound_file 47
232     #define Covox_sound_file 48
233     #define SPL_sound_file 49
234     #define AVI_sound_file 50
235     #define OMF_sound_file 51
236     #define Quicktime_sound_file 52
237     #define asf_sound_file 53
238     #define Yamaha_SY99_sound_file 54
239     #define Kurzweil_2000_sound_file 55
240     #define AIFF_sound_file 56
241    
242    
243     #define SNDLIB_UNSUPPORTED -1
244     #define SNDLIB_NO_SND 0
245     #define SNDLIB_16_LINEAR 1
246     #define SNDLIB_8_MULAW 2
247     #define SNDLIB_8_LINEAR 3
248     #define SNDLIB_32_FLOAT 4
249     #define SNDLIB_32_LINEAR 5
250     #define SNDLIB_8_ALAW 6
251     #define SNDLIB_8_UNSIGNED 7
252     #define SNDLIB_24_LINEAR 8
253     #define SNDLIB_64_DOUBLE 9
254     #define SNDLIB_16_LINEAR_LITTLE_ENDIAN 10
255     #define SNDLIB_32_LINEAR_LITTLE_ENDIAN 11
256     #define SNDLIB_32_FLOAT_LITTLE_ENDIAN 12
257     #define SNDLIB_64_DOUBLE_LITTLE_ENDIAN 13
258     #define SNDLIB_16_UNSIGNED 14
259     #define SNDLIB_16_UNSIGNED_LITTLE_ENDIAN 15
260     #define SNDLIB_24_LINEAR_LITTLE_ENDIAN 16
261     #define SNDLIB_32_VAX_FLOAT 17
262     #define SNDLIB_12_LINEAR 18
263     #define SNDLIB_12_LINEAR_LITTLE_ENDIAN 19
264     #define SNDLIB_12_UNSIGNED 20
265     #define SNDLIB_12_UNSIGNED_LITTLE_ENDIAN 21
266     /* 64-bit ints apparently can occur in ESPS files */
267    
268     #ifdef SNDLIB_LITTLE_ENDIAN
269     #define SNDLIB_COMPATIBLE_FORMAT SNDLIB_16_LINEAR_LITTLE_ENDIAN
270     #else
271     #define SNDLIB_COMPATIBLE_FORMAT SNDLIB_16_LINEAR
272     #endif
273    
274     #define SNDLIB_NIST_shortpack 2
275     #define SNDLIB_AIFF_IMA_ADPCM 99
276    
277     #define SNDLIB_DEFAULT_DEVICE 0
278     #define SNDLIB_READ_WRITE_DEVICE 1
279     #define SNDLIB_ADAT_IN_DEVICE 2
280     #define SNDLIB_AES_IN_DEVICE 3
281     #define SNDLIB_LINE_OUT_DEVICE 4
282     #define SNDLIB_LINE_IN_DEVICE 5
283     #define SNDLIB_MICROPHONE_DEVICE 6
284     #define SNDLIB_SPEAKERS_DEVICE 7
285     #define SNDLIB_DIGITAL_IN_DEVICE 8
286     #define SNDLIB_DIGITAL_OUT_DEVICE 9
287     #define SNDLIB_DAC_OUT_DEVICE 10
288     #define SNDLIB_ADAT_OUT_DEVICE 11
289     #define SNDLIB_AES_OUT_DEVICE 12
290     #define SNDLIB_DAC_FILTER_DEVICE 13
291     #define SNDLIB_MIXER_DEVICE 14
292     #define SNDLIB_LINE1_DEVICE 15
293     #define SNDLIB_LINE2_DEVICE 16
294     #define SNDLIB_LINE3_DEVICE 17
295     #define SNDLIB_AUX_INPUT_DEVICE 18
296     #define SNDLIB_CD_IN_DEVICE 19
297     #define SNDLIB_AUX_OUTPUT_DEVICE 20
298     #define SNDLIB_SPDIF_IN_DEVICE 21
299     #define SNDLIB_SPDIF_OUT_DEVICE 22
300    
301     #define SNDLIB_AUDIO_SYSTEM(n) ((n)<<16)
302     #define SNDLIB_SYSTEM(n) (((n)>>16)&0xffff)
303     #define SNDLIB_DEVICE(n) ((n)&0xffff)
304    
305     #define SNDLIB_NO_ERROR 0
306     #define SNDLIB_CHANNELS_NOT_AVAILABLE 1
307     #define SNDLIB_SRATE_NOT_AVAILABLE 2
308     #define SNDLIB_FORMAT_NOT_AVAILABLE 3
309     #define SNDLIB_NO_INPUT_AVAILABLE 4
310     #define SNDLIB_NO_OUTPUT_AVAILABLE 5
311     #define SNDLIB_INPUT_BUSY 6
312     #define SNDLIB_OUTPUT_BUSY 7
313     #define SNDLIB_CONFIGURATION_NOT_AVAILABLE 8
314     #define SNDLIB_INPUT_CLOSED 9
315     #define SNDLIB_OUTPUT_CLOSED 10
316     #define SNDLIB_IO_INTERRUPTED 11
317     #define SNDLIB_NO_LINES_AVAILABLE 12
318     #define SNDLIB_WRITE_ERROR 13
319     #define SNDLIB_SIZE_NOT_AVAILABLE 14
320     #define SNDLIB_DEVICE_NOT_AVAILABLE 15
321     #define SNDLIB_CANT_CLOSE 16
322     #define SNDLIB_CANT_OPEN 17
323     #define SNDLIB_READ_ERROR 18
324     #define SNDLIB_AMP_NOT_AVAILABLE 19
325     #define SNDLIB_AUDIO_NO_OP 20
326     #define SNDLIB_CANT_WRITE 21
327     #define SNDLIB_CANT_READ 22
328     #define SNDLIB_NO_READ_PERMISSION 23
329    
330     #define SNDLIB_AMP_FIELD 0
331     #define SNDLIB_SRATE_FIELD 1
332     #define SNDLIB_CHANNEL_FIELD 2
333     #define SNDLIB_FORMAT_FIELD 3
334     #define SNDLIB_DEVICE_FIELD 4
335     #define SNDLIB_IMIX_FIELD 5
336     #define SNDLIB_IGAIN_FIELD 6
337     #define SNDLIB_RECLEV_FIELD 7
338     #define SNDLIB_PCM_FIELD 8
339     #define SNDLIB_PCM2_FIELD 9
340     #define SNDLIB_OGAIN_FIELD 10
341     #define SNDLIB_LINE_FIELD 11
342     #define SNDLIB_MIC_FIELD 12
343     #define SNDLIB_LINE1_FIELD 13
344     #define SNDLIB_LINE2_FIELD 14
345     #define SNDLIB_LINE3_FIELD 15
346     #define SNDLIB_SYNTH_FIELD 16
347     #define SNDLIB_BASS_FIELD 17
348     #define SNDLIB_TREBLE_FIELD 18
349     #define SNDLIB_CD_FIELD 19
350    
351     enum {MUS_NO_ERROR,MUS_NO_FREQUENCY,MUS_NO_PHASE,MUS_NO_GEN,MUS_NO_LENGTH,
352     MUS_NO_FREE,MUS_NO_DESCRIBE,MUS_NO_EQUALP,MUS_NO_DATA,MUS_NO_SCALER,
353     MUS_MEMORY_ALLOCATION_FAILED,MUS_UNSTABLE_TWO_POLE_ERROR,
354     MUS_INVALID_CHANNEL_FOR_FRAME,MUS_CANT_OPEN_FILE,MUS_NO_SAMPLE_INPUT,
355     MUS_NO_SAMPLE_OUTPUT,MUS_NO_FRAME_INPUT,MUS_NO_FRAME_OUTPUT,
356     MUS_NO_SUCH_CHANNEL,MUS_NO_FILE_NAME_PROVIDED,MUS_NO_LOCATION,MUS_NO_CHANNEL,
357     MUS_NO_SUCH_FFT_WINDOW,
358     MUS_UNSUPPORTED_DATA_FORMAT,MUS_HEADER_READ_FAILED,MUS_HEADER_TOO_MANY_AUXILIARY_COMMENTS,MUS_UNSUPPORTED_HEADER_TYPE,
359     MUS_FILE_DESCRIPTORS_NOT_INITIALIZED,MUS_NOT_A_SOUND_FILE,MUS_FILE_CLOSED,MUS_WRITE_ERROR,
360     MUS_BOGUS_FREE,MUS_BUFFER_OVERFLOW,MUS_BUFFER_UNDERFLOW,MUS_FILE_OVERFLOW,MUS_EXPONENT_OVERFLOW,
361     MUS_INITIAL_ERROR_TAG};
362    
363     /* realloc is enough of a mess that I'll handle each case individually */
364    
365     #ifdef MACOS
366     /* C's calloc/free are incompatible with Mac's SndDisposeChannel (which we can't avoid using) */
367     #define CALLOC(a,b) NewPtrClear((a) * (b))
368     #define MALLOC(a) NewPtr((a))
369     #define FREE(a) DisposePtr((Ptr)(a))
370     #else
371     #ifdef DEBUG_MEMORY
372     #define CALLOC(a,b) mem_calloc(a,b,__FUNCTION__,__FILE__,__LINE__)
373     #define MALLOC(a) mem_malloc(a,__FUNCTION__,__FILE__,__LINE__)
374     #define FREE(a) mem_free(a,__FUNCTION__,__FILE__,__LINE__)
375     #define REALLOC(a,b) mem_realloc(a,b,__FUNCTION__,__FILE__,__LINE__)
376     #else
377     #define CALLOC(a,b) calloc(a,b)
378     #define MALLOC(a) malloc(a)
379     #define FREE(a) free(a)
380     #define REALLOC(a,b) realloc(a,b)
381     #endif
382     #endif
383    
384     #define SNDLIB_MAX_FILE_NAME 128
385    
386     __BEGIN_DECLS
387    
388     #ifdef __GNUC__
389     void mus_error(int error, char *format, ...) __attribute__ ((format (printf, 2, 3)));
390     void mus_fwrite(int fd, char *format, ...) __attribute__ ((format (printf, 2, 3)));
391     #else
392     void mus_error __P((int error, char *format, ...));
393     void mus_fwrite __P((int fd, char *format, ...));
394     #endif
395     void mus_set_error_handler(void (*new_error_handler)(int err_type, char *err_msg));
396     int mus_make_error_tag __P((void));
397    
398     int sound_samples __P((char *arg));
399     int sound_frames __P((char *arg));
400     int sound_datum_size __P((char *arg));
401     int sound_data_location __P((char *arg));
402     int sound_chans __P((char *arg));
403     int sound_srate __P((char *arg));
404     int sound_header_type __P((char *arg));
405     int sound_data_format __P((char *arg));
406     int sound_original_format __P((char *arg));
407     int sound_comment_start __P((char *arg));
408     int sound_comment_end __P((char *arg));
409     int sound_length __P((char *arg));
410     int sound_fact_samples __P((char *arg));
411     int sound_distributed __P((char *arg));
412     int sound_write_date __P((char *arg));
413     int sound_type_specifier __P((char *arg));
414     int sound_align __P((char *arg));
415     int sound_bits_per_sample __P((char *arg));
416     char *sound_type_name __P((int type));
417     char *sound_format_name __P((int format));
418     char *sound_comment __P((char *name));
419     int sound_bytes_per_sample __P((int format));
420     float sound_duration __P((char *arg));
421     int initialize_sndlib __P((void));
422     int override_sound_header __P((char *arg, int srate, int chans, int format, int type, int location, int size));
423     int forget_sound __P((char *name));
424    
425     int open_sound_input __P((char *arg));
426     int open_sound_output __P((char *arg, int srate, int chans, int data_format, int header_type, char *comment));
427     int reopen_sound_output __P((char *arg, int chans, int format, int type, int data_loc));
428     int close_sound_input __P((int fd));
429     int close_sound_output __P((int fd, int bytes_of_data));
430     int read_sound __P((int fd, int beg, int end, int chans, int **bufs));
431     int write_sound __P((int tfd, int beg, int end, int chans, int **bufs));
432     int seek_sound __P((int tfd, long offset, int origin));
433     int seek_sound_frame __P((int tfd, int frame));
434    
435     void describe_audio_state __P((void));
436     char *report_audio_state __P((void));
437     int open_audio_output __P((int dev, int srate, int chans, int format, int size));
438     int open_audio_input __P((int dev, int srate, int chans, int format, int size));
439     int write_audio __P((int line, char *buf, int bytes));
440     int close_audio __P((int line));
441     int read_audio __P((int line, char *buf, int bytes));
442     int read_audio_state __P((int dev, int field, int chan, float *val));
443     int write_audio_state __P((int dev, int field, int chan, float *val));
444     void save_audio_state __P((void));
445     void restore_audio_state __P((void));
446     int audio_error __P((void));
447     int initialize_audio __P((void));
448     char *audio_error_name __P((int err));
449     void set_audio_error __P((int err));
450     int audio_systems __P((void));
451     char *audio_system_name __P((int system));
452     char *audio_moniker __P((void));
453     #if (HAVE_OSS || HAVE_ALSA)
454     void set_dsp_devices __P((int cards, int *dsps, int *mixers));
455     void dsp_devices __P((int cards, int *dsps, int *mixers));
456     void set_oss_buffers __P((int num,int size));
457     #endif
458     void write_mixer_state __P((char *file));
459     void read_mixer_state __P((char *file));
460    
461     #ifdef CLM
462     void reset_io_c __P((void));
463     void reset_headers_c __P((void));
464     void reset_audio_c __P((void));
465     void set_rt_audio_p __P((int rt));
466     int get_shift_24_choice __P((void));
467     void set_shift_24_choice __P((int choice));
468     int net_mix __P((int fd, int loc, char *buf1, char *buf2, int bytes));
469     #endif
470    
471     int mus_open_file_descriptors __P((int tfd, int df, int ds, int dl));
472     int mus_set_file_descriptors __P((int tfd, int df, int ds, int dl, int dc, int dt));
473     int mus_close_file_descriptors __P((int tfd));
474     int mus_cleanup_file_descriptors __P((void));
475     int mus_open_read __P((char *arg));
476     int mus_probe_file __P((char *arg));
477     int mus_open_write __P((char *arg));
478     int mus_create __P((char *arg));
479     int mus_reopen_write __P((char *arg));
480     int mus_close __P((int fd));
481     long mus_seek __P((int tfd, long offset, int origin));
482     int mus_seek_frame __P((int tfd, int frame));
483     int mus_read __P((int fd, int beg, int end, int chans, int **bufs));
484     int mus_read_chans __P((int fd, int beg, int end, int chans, int **bufs, int *cm));
485     int mus_write_zeros __P((int tfd, int num));
486     int mus_write __P((int tfd, int beg, int end, int chans, int **bufs));
487     int mus_float_sound __P((char *charbuf, int samps, int charbuf_format, float *buffer));
488     int mus_header_samples __P((void));
489     int mus_header_data_location __P((void));
490     int mus_header_chans __P((void));
491     int mus_header_srate __P((void));
492     int mus_header_type __P((void));
493     int mus_header_format __P((void));
494     int mus_header_distributed __P((void));
495     int mus_header_comment_start __P((void));
496     int mus_header_comment_end __P((void));
497     int mus_header_type_specifier __P((void));
498     int mus_header_bits_per_sample __P((void));
499     int mus_header_fact_samples __P((void));
500     int mus_header_block_align __P((void));
501     int mus_header_loop_mode __P((int which));
502     int mus_header_loop_start __P((int which));
503     int mus_header_loop_end __P((int which));
504     int mus_header_mark_position __P((int id));
505     int mus_header_base_note __P((void));
506     int mus_header_base_detune __P((void));
507     void mus_set_raw_header_defaults __P((int sr, int chn, int frm));
508     int mus_true_file_length __P((void));
509     int mus_header_original_format __P((void));
510     int mus_format2bytes __P((int format));
511     int mus_header_format2bytes __P((void));
512     int mus_samples2bytes __P((int format, int size));
513     int mus_bytes2samples __P((int format, int size));
514     int mus_write_next_header __P((int chan, int srate, int chans, int loc, int siz, int format, char *comment, int len));
515     int mus_read_header_with_fd __P((int chan));
516     int mus_read_header __P((char *name));
517     int mus_write_header __P((char *name, int type, int srate, int chans, int loc, int size, int format, char *comment, int len));
518     int mus_write_header_with_fd __P((int chan, int type, int in_srate, int in_chans, int loc, int size, int format, char *comment, int len));
519     void mus_set_aifc_header __P((int val));
520     int mus_update_header_with_fd __P((int chan, int type, int siz));
521     int mus_update_header __P((char *name, int type, int size, int srate, int format, int chans, int loc));
522     int mus_header_aux_comment_start __P((int n));
523     int mus_header_aux_comment_end __P((int n));
524     int mus_update_header_comment __P((char *name, int loc, char *comment, int len, int typ));
525     int mus_create_header_buffer __P((void));
526     int mus_create_descriptors __P((void));
527     int mus_read_any __P((int tfd, int beg, int chans, int nints, int **bufs, int *cm));
528     void mus_set_snd_header __P((int in_srate, int in_chans, int in_format));
529     int mus_unshort_sound __P((short *in_buf, int samps, int new_format, char *out_buf));
530     int sound_max_amp __P((char *ifile, int *vals));
531    
532     int mus_header_aiff_p __P((void));
533     int sound_aiff_p __P((char *arg));
534     int mus_header_writable __P((int type, int format));
535     char *mus_header_type2string __P((int type));
536     char *mus_header_data_format2string __P((int format));
537    
538     void mus_set_big_endian_int __P((unsigned char *j, int x));
539     int mus_big_endian_int __P((unsigned char *inp));
540     void mus_set_little_endian_int __P((unsigned char *j, int x));
541     int mus_little_endian_int __P((unsigned char *inp));
542     int mus_uninterpreted_int __P((unsigned char *inp));
543     void mus_set_big_endian_float __P((unsigned char *j, float x));
544     float mus_big_endian_float __P((unsigned char *inp));
545     void mus_set_little_endian_float __P((unsigned char *j, float x));
546     float mus_little_endian_float __P((unsigned char *inp));
547     void mus_set_big_endian_short __P((unsigned char *j, short x));
548     short mus_big_endian_short __P((unsigned char *inp));
549     void mus_set_little_endian_short __P((unsigned char *j, short x));
550     short mus_little_endian_short __P((unsigned char *inp));
551     void mus_set_big_endian_unsigned_short __P((unsigned char *j, unsigned short x));
552     unsigned short mus_big_endian_unsigned_short __P((unsigned char *inp));
553     void mus_set_little_endian_unsigned_short __P((unsigned char *j, unsigned short x));
554     unsigned short mus_little_endian_unsigned_short __P((unsigned char *inp));
555     double mus_little_endian_double __P((unsigned char *inp));
556     double mus_big_endian_double __P((unsigned char *inp));
557     void mus_set_big_endian_double __P((unsigned char *j, double x));
558     void mus_set_little_endian_double __P((unsigned char *j, double x));
559     unsigned int mus_big_endian_unsigned_int __P((unsigned char *inp));
560     unsigned int mus_little_endian_unsigned_int __P((unsigned char *inp));
561    
562     #ifdef SUN
563     void sun_outputs __P((int speakers, int headphones, int line_out));
564     #endif
565    
566     #if (defined(HAVE_CONFIG_H)) && (!defined(HAVE_STRERROR))
567     char *strerror __P((int errnum));
568     #endif
569    
570     void init_sndlib2scm __P((void));
571     char *mus_complete_filename __P((char *tok));
572    
573     #if LONG_INT_P
574     int *delist_ptr __P((int arr));
575     int list_ptr __P((int *arr));
576     void freearray __P((int ip_1));
577     #else
578     void freearray __P((int *ip));
579     #endif
580    
581     int mus_set_data_clipped __P((int tfd, int clipped));
582     int mus_set_header_type __P((int tfd, int type));
583     int mus_get_header_type __P((int tfd));
584     int mus_set_chans __P((int tfd, int chans));
585     int mus_file2array __P((char *filename, int chan, int start, int samples, int *array));
586     int mus_array2file __P((char *filename, int *ddata, int len, int srate, int channels));
587    
588     #ifdef DEBUG_MEMORY
589     void *mem_calloc __P((size_t len, size_t size, char *func, char *file, int line));
590     void *mem_malloc __P((size_t len, char *func, char *file, int line));
591     void mem_free __P((void *ptr, char *func, char *file, int line));
592     void *mem_realloc __P((void *ptr, size_t size, char *func, char *file, int line));
593     #endif
594    
595     __END_DECLS
596    
597     #endif