|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435 |
- #ifndef SNDLIB_H
- #define SNDLIB_H
-
- #define SNDLIB_VERSION 24
- #define SNDLIB_REVISION 4
- #define SNDLIB_DATE "1-Sep-15"
-
- #include <stdio.h>
- #include <time.h>
- #include <sys/types.h>
-
- /* not sure how to handle this one cleanly: */
- #ifndef __cplusplus
- #ifndef _MSC_VER
- #include <stdbool.h>
- #else
- #ifndef true
- #define bool unsigned char
- #define true 1
- #define false 0
- #endif
- #endif
- #endif
-
- typedef double mus_float_t;
- typedef long long int mus_long_t;
-
- #if defined(__sun) && defined(__SVR4)
- #define HAVE_SUN 1
- #endif
-
- #ifdef _MSC_VER
- /* I got these from gmp.h */
- #if defined (__GNUC__)
- #define MUS_EXPORT __declspec(__dllexport__)
- #else
- #define MUS_EXPORT __declspec(dllexport)
- #endif
- #else
- #define MUS_EXPORT
- #endif
-
-
- #ifndef MUS_LITTLE_ENDIAN
- #if WORDS_BIGENDIAN
- #define MUS_LITTLE_ENDIAN 0
- #else
- #define MUS_LITTLE_ENDIAN 1
- #endif
- #endif
-
- typedef enum {MUS_UNKNOWN_HEADER, MUS_NEXT, MUS_AIFC, MUS_RIFF, MUS_RF64, MUS_BICSF, MUS_NIST, MUS_INRS, MUS_ESPS, MUS_SVX, MUS_VOC,
- MUS_SNDT, MUS_RAW, MUS_SMP, MUS_AVR, MUS_IRCAM, MUS_SD1, MUS_SPPACK, MUS_MUS10, MUS_HCOM, MUS_PSION, MUS_MAUD,
- MUS_IEEE, MUS_MATLAB, MUS_ADC, MUS_MIDI, MUS_SOUNDFONT, MUS_GRAVIS, MUS_COMDISCO, MUS_GOLDWAVE, MUS_SRFS,
- MUS_MIDI_SAMPLE_DUMP, MUS_DIAMONDWARE, MUS_ADF, MUS_SBSTUDIOII, MUS_DELUSION,
- MUS_FARANDOLE, MUS_SAMPLE_DUMP, MUS_ULTRATRACKER, MUS_YAMAHA_SY85, MUS_YAMAHA_TX16W, MUS_DIGIPLAYER,
- MUS_COVOX, MUS_AVI, MUS_OMF, MUS_QUICKTIME, MUS_ASF, MUS_YAMAHA_SY99, MUS_KURZWEIL_2000,
- MUS_AIFF, MUS_PAF, MUS_CSL, MUS_FILE_SAMP, MUS_PVF, MUS_SOUNDFORGE, MUS_TWINVQ, MUS_AKAI4,
- MUS_IMPULSETRACKER, MUS_KORG, MUS_NVF, MUS_CAFF, MUS_MAUI, MUS_SDIF, MUS_OGG, MUS_FLAC, MUS_SPEEX, MUS_MPEG,
- MUS_SHORTEN, MUS_TTA, MUS_WAVPACK, MUS_SOX,
- MUS_NUM_HEADERS} mus_header_t;
-
-
- typedef enum {MUS_UNKNOWN_SAMPLE, MUS_BSHORT, MUS_MULAW, MUS_BYTE, MUS_BFLOAT, MUS_BINT, MUS_ALAW, MUS_UBYTE, MUS_B24INT,
- MUS_BDOUBLE, MUS_LSHORT, MUS_LINT, MUS_LFLOAT, MUS_LDOUBLE, MUS_UBSHORT, MUS_ULSHORT, MUS_L24INT,
- MUS_BINTN, MUS_LINTN, MUS_BFLOAT_UNSCALED, MUS_LFLOAT_UNSCALED, MUS_BDOUBLE_UNSCALED, MUS_LDOUBLE_UNSCALED,
- MUS_NUM_SAMPLES} mus_sample_t;
-
- #ifndef MUS_AUDIO_COMPATIBLE_SAMPLE_TYPE
- #if WORDS_BIGENDIAN
- #if __APPLE__
- #define MUS_AUDIO_COMPATIBLE_SAMPLE_TYPE MUS_BFLOAT
- #else
- #define MUS_AUDIO_COMPATIBLE_SAMPLE_TYPE MUS_BSHORT
- #endif
- #else
- #if __APPLE__
- #define MUS_AUDIO_COMPATIBLE_SAMPLE_TYPE MUS_LFLOAT
- #else
- #define MUS_AUDIO_COMPATIBLE_SAMPLE_TYPE MUS_LSHORT
- #endif
- #endif
- #endif
-
- #ifndef MUS_OUT_SAMPLE_TYPE
- #if WORDS_BIGENDIAN
- #define MUS_OUT_SAMPLE_TYPE MUS_BDOUBLE
- #else
- #define MUS_OUT_SAMPLE_TYPE MUS_LDOUBLE
- #endif
- #endif
-
- #define MUS_IGNORE_SAMPLE MUS_NUM_SAMPLES
- /* MUS_LINTN and MUS_BINTN refer to 32 bit ints with 31 bits of fraction -- the data is left justified */
- /* "unscaled" means the float value is used directly (i.e. not as -1.0 to 1.0, but (probably) -32768.0 to 32768.0) */
-
-
- #define MUS_NIST_SHORTPACK 2
- #define MUS_AIFF_IMA_ADPCM 99
-
- #define MUS_AUDIO_PACK_SYSTEM(n) ((n) << 16)
- #define MUS_AUDIO_SYSTEM(n) (((n) >> 16) & 0xffff)
- #define MUS_AUDIO_DEVICE(n) ((n) & 0xffff)
-
-
- #define MUS_AUDIO_DEFAULT 0
- #define MUS_ERROR -1
-
- enum {MUS_NO_ERROR, MUS_NO_FREQUENCY, MUS_NO_PHASE, MUS_NO_GEN, MUS_NO_LENGTH,
- MUS_NO_DESCRIBE, MUS_NO_DATA, MUS_NO_SCALER,
- MUS_MEMORY_ALLOCATION_FAILED,
- MUS_CANT_OPEN_FILE, MUS_NO_SAMPLE_INPUT, MUS_NO_SAMPLE_OUTPUT,
- MUS_NO_SUCH_CHANNEL, MUS_NO_FILE_NAME_PROVIDED, MUS_NO_LOCATION, MUS_NO_CHANNEL,
- MUS_NO_SUCH_FFT_WINDOW, MUS_UNSUPPORTED_SAMPLE_TYPE, MUS_HEADER_READ_FAILED,
- MUS_UNSUPPORTED_HEADER_TYPE,
- MUS_FILE_DESCRIPTORS_NOT_INITIALIZED, MUS_NOT_A_SOUND_FILE, MUS_FILE_CLOSED, MUS_WRITE_ERROR,
- MUS_HEADER_WRITE_FAILED, MUS_CANT_OPEN_TEMP_FILE, MUS_INTERRUPTED, MUS_BAD_ENVELOPE,
-
- MUS_AUDIO_CHANNELS_NOT_AVAILABLE, MUS_AUDIO_SRATE_NOT_AVAILABLE, MUS_AUDIO_SAMPLE_TYPE_NOT_AVAILABLE,
- MUS_AUDIO_NO_INPUT_AVAILABLE, MUS_AUDIO_CONFIGURATION_NOT_AVAILABLE,
- MUS_AUDIO_WRITE_ERROR, MUS_AUDIO_SIZE_NOT_AVAILABLE, MUS_AUDIO_DEVICE_NOT_AVAILABLE,
- MUS_AUDIO_CANT_CLOSE, MUS_AUDIO_CANT_OPEN, MUS_AUDIO_READ_ERROR,
- MUS_AUDIO_CANT_WRITE, MUS_AUDIO_CANT_READ, MUS_AUDIO_NO_READ_PERMISSION,
-
- MUS_CANT_CLOSE_FILE, MUS_ARG_OUT_OF_RANGE,
- MUS_NO_CHANNELS, MUS_NO_HOP, MUS_NO_WIDTH, MUS_NO_FILE_NAME, MUS_NO_RAMP, MUS_NO_RUN,
- MUS_NO_INCREMENT, MUS_NO_OFFSET,
- MUS_NO_XCOEFF, MUS_NO_YCOEFF, MUS_NO_XCOEFFS, MUS_NO_YCOEFFS, MUS_NO_RESET, MUS_BAD_SIZE, MUS_CANT_CONVERT,
- MUS_READ_ERROR,
- MUS_NO_FEEDFORWARD, MUS_NO_FEEDBACK, MUS_NO_INTERP_TYPE, MUS_NO_POSITION, MUS_NO_ORDER, MUS_NO_COPY,
- MUS_CANT_TRANSLATE,
- MUS_NUM_ERRORS};
-
- /* keep this list in sync with mus_error_names in sound.c and snd-test.scm|rb */
-
- #define MUS_LOOP_INFO_SIZE 8
-
- #ifdef __cplusplus
- extern "C" {
- #endif
-
- /* -------- sound.c -------- */
-
- #ifdef __GNUC__
- MUS_EXPORT int mus_error(int error, const char *format, ...) __attribute__ ((format (printf, 2, 3)));
- MUS_EXPORT void mus_print(const char *format, ...) __attribute__ ((format (printf, 1, 2)));
- MUS_EXPORT char *mus_format(const char *format, ...) __attribute__ ((format (printf, 1, 2)));
- #else
- MUS_EXPORT int mus_error(int error, const char *format, ...);
- MUS_EXPORT void mus_print(const char *format, ...);
- MUS_EXPORT char *mus_format(const char *format, ...);
- #endif
-
- typedef void mus_error_handler_t(int type, char *msg);
- MUS_EXPORT mus_error_handler_t *mus_error_set_handler(mus_error_handler_t *new_error_handler);
- MUS_EXPORT const char *mus_error_type_to_string(int err);
-
- typedef void mus_print_handler_t(char *msg);
- MUS_EXPORT mus_print_handler_t *mus_print_set_handler(mus_print_handler_t *new_print_handler);
-
- typedef mus_float_t mus_clip_handler_t(mus_float_t val);
- MUS_EXPORT mus_clip_handler_t *mus_clip_set_handler(mus_clip_handler_t *new_clip_handler);
- MUS_EXPORT mus_clip_handler_t *mus_clip_set_handler_and_checker(mus_clip_handler_t *new_clip_handler, bool (*checker)(void));
-
- MUS_EXPORT mus_long_t mus_sound_samples(const char *arg);
- MUS_EXPORT mus_long_t mus_sound_framples(const char *arg);
- MUS_EXPORT int mus_sound_datum_size(const char *arg);
- MUS_EXPORT mus_long_t mus_sound_data_location(const char *arg);
- MUS_EXPORT int mus_sound_chans(const char *arg);
- MUS_EXPORT int mus_sound_srate(const char *arg);
- MUS_EXPORT mus_header_t mus_sound_header_type(const char *arg);
- MUS_EXPORT mus_sample_t mus_sound_sample_type(const char *arg);
- MUS_EXPORT int mus_sound_original_sample_type(const char *arg);
- MUS_EXPORT mus_long_t mus_sound_comment_start(const char *arg);
- MUS_EXPORT mus_long_t mus_sound_comment_end(const char *arg);
- MUS_EXPORT mus_long_t mus_sound_length(const char *arg);
- MUS_EXPORT int mus_sound_fact_samples(const char *arg);
- MUS_EXPORT time_t mus_sound_write_date(const char *arg);
- MUS_EXPORT int mus_sound_type_specifier(const char *arg);
- MUS_EXPORT int mus_sound_block_align(const char *arg);
- MUS_EXPORT int mus_sound_bits_per_sample(const char *arg);
-
- MUS_EXPORT int mus_sound_set_chans(const char *arg, int val);
- MUS_EXPORT int mus_sound_set_srate(const char *arg, int val);
- MUS_EXPORT mus_header_t mus_sound_set_header_type(const char *arg, mus_header_t val);
- MUS_EXPORT mus_sample_t mus_sound_set_sample_type(const char *arg, mus_sample_t val);
- MUS_EXPORT int mus_sound_set_data_location(const char *arg, mus_long_t val);
- MUS_EXPORT int mus_sound_set_samples(const char *arg, mus_long_t val);
-
- MUS_EXPORT const char *mus_header_type_name(mus_header_t type);
- MUS_EXPORT const char *mus_header_type_to_string(mus_header_t type);
- MUS_EXPORT const char *mus_sample_type_name(mus_sample_t samp_type);
- MUS_EXPORT const char *mus_sample_type_to_string(mus_sample_t samp_type);
- MUS_EXPORT const char *mus_sample_type_short_name(mus_sample_t samp_type);
-
- MUS_EXPORT char *mus_sound_comment(const char *name);
- MUS_EXPORT int mus_bytes_per_sample(mus_sample_t samp_type);
- MUS_EXPORT float mus_sound_duration(const char *arg);
- MUS_EXPORT int mus_sound_initialize(void);
- MUS_EXPORT int mus_sound_override_header(const char *arg, int srate, int chans, mus_sample_t samp_type, mus_header_t type, mus_long_t location, mus_long_t size);
- MUS_EXPORT int mus_sound_forget(const char *name);
- MUS_EXPORT int mus_sound_prune(void);
- MUS_EXPORT void mus_sound_report_cache(FILE *fp);
- MUS_EXPORT int *mus_sound_loop_info(const char *arg);
- MUS_EXPORT void mus_sound_set_loop_info(const char *arg, int *loop);
- MUS_EXPORT int mus_sound_mark_info(const char *arg, int **mark_ids, int **mark_positions);
-
- MUS_EXPORT int mus_sound_open_input(const char *arg);
- MUS_EXPORT int mus_sound_open_output(const char *arg, int srate, int chans, mus_sample_t sample_type, mus_header_t header_type, const char *comment);
- MUS_EXPORT int mus_sound_reopen_output(const char *arg, int chans, mus_sample_t samp_type, mus_header_t type, mus_long_t data_loc);
- MUS_EXPORT int mus_sound_close_input(int fd);
- MUS_EXPORT int mus_sound_close_output(int fd, mus_long_t bytes_of_data);
- #define mus_sound_read(Fd, Beg, End, Chans, Bufs) mus_file_read(Fd, Beg, End, Chans, Bufs)
- #define mus_sound_write(Fd, Beg, End, Chans, Bufs) mus_file_write(Fd, Beg, End, Chans, Bufs)
-
- MUS_EXPORT mus_long_t mus_sound_maxamps(const char *ifile, int chans, mus_float_t *vals, mus_long_t *times);
- MUS_EXPORT int mus_sound_set_maxamps(const char *ifile, int chans, mus_float_t *vals, mus_long_t *times);
- MUS_EXPORT bool mus_sound_maxamp_exists(const char *ifile);
- MUS_EXPORT bool mus_sound_channel_maxamp_exists(const char *file, int chan);
- MUS_EXPORT mus_float_t mus_sound_channel_maxamp(const char *file, int chan, mus_long_t *pos);
- MUS_EXPORT void mus_sound_channel_set_maxamp(const char *file, int chan, mus_float_t mx, mus_long_t pos);
- MUS_EXPORT mus_long_t mus_file_to_array(const char *filename, int chan, mus_long_t start, mus_long_t samples, mus_float_t *array);
- MUS_EXPORT int mus_array_to_file(const char *filename, mus_float_t *ddata, mus_long_t len, int srate, int channels);
- MUS_EXPORT const char *mus_array_to_file_with_error(const char *filename, mus_float_t *ddata, mus_long_t len, int srate, int channels);
- MUS_EXPORT mus_long_t mus_file_to_float_array(const char *filename, int chan, mus_long_t start, mus_long_t samples, mus_float_t *array);
- MUS_EXPORT int mus_float_array_to_file(const char *filename, mus_float_t *ddata, mus_long_t len, int srate, int channels);
-
- MUS_EXPORT mus_float_t **mus_sound_saved_data(const char *arg);
- MUS_EXPORT void mus_sound_set_saved_data(const char *arg, mus_float_t **data);
- MUS_EXPORT void mus_file_save_data(int tfd, mus_long_t framples, mus_float_t **data);
-
-
-
- /* -------- audio.c -------- */
-
- MUS_EXPORT int mus_audio_open_output(int dev, int srate, int chans, mus_sample_t samp_type, int size);
- MUS_EXPORT int mus_audio_open_input(int dev, int srate, int chans, mus_sample_t samp_type, int size);
- MUS_EXPORT int mus_audio_write(int line, char *buf, int bytes);
- MUS_EXPORT int mus_audio_close(int line);
- MUS_EXPORT int mus_audio_read(int line, char *buf, int bytes);
-
- MUS_EXPORT int mus_audio_initialize(void);
- MUS_EXPORT char *mus_audio_moniker(void);
- MUS_EXPORT int mus_audio_api(void);
- MUS_EXPORT mus_sample_t mus_audio_compatible_sample_type(int dev);
-
- #if HAVE_OSS || HAVE_ALSA
- MUS_EXPORT void mus_oss_set_buffers(int num, int size);
- MUS_EXPORT char *mus_alsa_playback_device(void);
- MUS_EXPORT char *mus_alsa_set_playback_device(const char *name);
- MUS_EXPORT char *mus_alsa_capture_device(void);
- MUS_EXPORT char *mus_alsa_set_capture_device(const char *name);
- MUS_EXPORT char *mus_alsa_device(void);
- MUS_EXPORT char *mus_alsa_set_device(const char *name);
- MUS_EXPORT int mus_alsa_buffer_size(void);
- MUS_EXPORT int mus_alsa_set_buffer_size(int size);
- MUS_EXPORT int mus_alsa_buffers(void);
- MUS_EXPORT int mus_alsa_set_buffers(int num);
- MUS_EXPORT bool mus_alsa_squelch_warning(void);
- MUS_EXPORT bool mus_alsa_set_squelch_warning(bool val);
- #endif
-
- #if __APPLE__
- MUS_EXPORT bool mus_audio_output_properties_mutable(bool mut);
- #endif
-
- MUS_EXPORT int mus_audio_device_channels(int dev);
- MUS_EXPORT mus_sample_t mus_audio_device_sample_type(int dev);
-
-
-
- /* -------- io.c -------- */
-
- MUS_EXPORT int mus_file_open_descriptors(int tfd, const char *arg, mus_sample_t df, int ds, mus_long_t dl, int dc, mus_header_t dt);
- MUS_EXPORT int mus_file_open_read(const char *arg);
- MUS_EXPORT bool mus_file_probe(const char *arg);
- MUS_EXPORT int mus_file_open_write(const char *arg);
- MUS_EXPORT int mus_file_create(const char *arg);
- MUS_EXPORT int mus_file_reopen_write(const char *arg);
- MUS_EXPORT int mus_file_close(int fd);
- MUS_EXPORT mus_long_t mus_file_seek_frample(int tfd, mus_long_t frample);
- MUS_EXPORT mus_long_t mus_file_read(int fd, mus_long_t beg, mus_long_t end, int chans, mus_float_t **bufs);
- MUS_EXPORT mus_long_t mus_file_read_chans(int fd, mus_long_t beg, mus_long_t end, int chans, mus_float_t **bufs, mus_float_t **cm);
- MUS_EXPORT int mus_file_write(int tfd, mus_long_t beg, mus_long_t end, int chans, mus_float_t **bufs);
- MUS_EXPORT mus_long_t mus_file_read_any(int tfd, mus_long_t beg, int chans, mus_long_t nints, mus_float_t **bufs, mus_float_t **cm);
- MUS_EXPORT mus_long_t mus_file_read_file(int tfd, mus_long_t beg, int chans, mus_long_t nints, mus_float_t **bufs);
- MUS_EXPORT mus_long_t mus_file_read_buffer(int charbuf_sample_type, mus_long_t beg, int chans, mus_long_t nints, mus_float_t **bufs, char *charbuf);
- MUS_EXPORT int mus_file_write_file(int tfd, mus_long_t beg, mus_long_t end, int chans, mus_float_t **bufs);
- MUS_EXPORT int mus_file_write_buffer(int charbuf_sample_type, mus_long_t beg, mus_long_t end, int chans, mus_float_t **bufs, char *charbuf, bool clipped);
- MUS_EXPORT char *mus_expand_filename(const char *name);
- MUS_EXPORT char *mus_getcwd(void);
-
- MUS_EXPORT bool mus_clipping(void);
- MUS_EXPORT bool mus_set_clipping(bool new_value);
- MUS_EXPORT bool mus_file_clipping(int tfd);
- MUS_EXPORT int mus_file_set_clipping(int tfd, bool clipped);
-
- MUS_EXPORT int mus_file_set_header_type(int tfd, mus_header_t type);
- MUS_EXPORT mus_header_t mus_file_header_type(int tfd);
- MUS_EXPORT char *mus_file_fd_name(int tfd);
- MUS_EXPORT int mus_file_set_chans(int tfd, int chans);
-
- MUS_EXPORT int mus_iclamp(int lo, int val, int hi);
- MUS_EXPORT mus_long_t mus_oclamp(mus_long_t lo, mus_long_t val, mus_long_t hi);
- MUS_EXPORT mus_float_t mus_fclamp(mus_float_t lo, mus_float_t val, mus_float_t hi);
-
- /* for CLM */
- /* these are needed to clear a saved lisp image to the just-initialized state */
- MUS_EXPORT void mus_reset_io_c(void);
- MUS_EXPORT void mus_reset_headers_c(void);
- MUS_EXPORT void mus_reset_audio_c(void);
-
- MUS_EXPORT int mus_samples_bounds(unsigned char *data, int bytes, int chan, int chans, mus_sample_t samp_type, mus_float_t *min_samp, mus_float_t *max_samp);
-
- MUS_EXPORT mus_long_t mus_max_malloc(void);
- MUS_EXPORT mus_long_t mus_set_max_malloc(mus_long_t new_max);
- MUS_EXPORT mus_long_t mus_max_table_size(void);
- MUS_EXPORT mus_long_t mus_set_max_table_size(mus_long_t new_max);
-
- MUS_EXPORT char *mus_strdup(const char *str);
- MUS_EXPORT int mus_strlen(const char *str);
- MUS_EXPORT bool mus_strcmp(const char *str1, const char *str2);
- MUS_EXPORT char *mus_strcat(char *errmsg, const char *str, int *err_size);
-
-
-
- /* -------- headers.c -------- */
-
- MUS_EXPORT bool mus_is_sample_type(int n);
- MUS_EXPORT bool mus_is_header_type(int n);
-
- MUS_EXPORT mus_long_t mus_header_samples(void);
- MUS_EXPORT mus_long_t mus_header_data_location(void);
- MUS_EXPORT int mus_header_chans(void);
- MUS_EXPORT int mus_header_srate(void);
- MUS_EXPORT mus_header_t mus_header_type(void);
- MUS_EXPORT mus_sample_t mus_header_sample_type(void);
- MUS_EXPORT mus_long_t mus_header_comment_start(void);
- MUS_EXPORT mus_long_t mus_header_comment_end(void);
- MUS_EXPORT int mus_header_type_specifier(void);
- MUS_EXPORT int mus_header_bits_per_sample(void);
- MUS_EXPORT int mus_header_fact_samples(void);
- MUS_EXPORT int mus_header_block_align(void);
- MUS_EXPORT int mus_header_loop_mode(int which);
- MUS_EXPORT int mus_header_loop_start(int which);
- MUS_EXPORT int mus_header_loop_end(int which);
- MUS_EXPORT int mus_header_mark_position(int id);
- MUS_EXPORT int mus_header_mark_info(int **marker_ids, int **marker_positions);
- MUS_EXPORT int mus_header_base_note(void);
- MUS_EXPORT int mus_header_base_detune(void);
- MUS_EXPORT void mus_header_set_raw_defaults(int sr, int chn, mus_sample_t frm);
- MUS_EXPORT void mus_header_raw_defaults(int *sr, int *chn, mus_sample_t *frm);
- MUS_EXPORT mus_long_t mus_header_true_length(void);
- MUS_EXPORT int mus_header_original_sample_type(void);
- MUS_EXPORT mus_long_t mus_samples_to_bytes(mus_sample_t samp_type, mus_long_t size);
- MUS_EXPORT mus_long_t mus_bytes_to_samples(mus_sample_t samp_type, mus_long_t size);
- MUS_EXPORT int mus_header_read(const char *name);
- MUS_EXPORT int mus_header_write(const char *name, mus_header_t type, int srate, int chans, mus_long_t loc, mus_long_t size_in_samples,
- mus_sample_t samp_type, const char *comment, int len);
- MUS_EXPORT int mus_write_header(const char *name, mus_header_t type, int in_srate, int in_chans, mus_long_t size_in_samples,
- mus_sample_t samp_type, const char *comment);
- MUS_EXPORT mus_long_t mus_header_aux_comment_start(int n);
- MUS_EXPORT mus_long_t mus_header_aux_comment_end(int n);
- MUS_EXPORT int mus_header_initialize(void);
- MUS_EXPORT bool mus_header_writable(mus_header_t type, mus_sample_t samp_type);
- MUS_EXPORT void mus_header_set_aiff_loop_info(int *data);
- MUS_EXPORT int mus_header_sf2_entries(void);
- MUS_EXPORT char *mus_header_sf2_name(int n);
- MUS_EXPORT int mus_header_sf2_start(int n);
- MUS_EXPORT int mus_header_sf2_end(int n);
- MUS_EXPORT int mus_header_sf2_loop_start(int n);
- MUS_EXPORT int mus_header_sf2_loop_end(int n);
- MUS_EXPORT const char *mus_header_original_sample_type_name(int samp_type, mus_header_t type);
- MUS_EXPORT bool mus_header_no_header(const char *name);
-
- MUS_EXPORT char *mus_header_riff_aux_comment(const char *name, mus_long_t *starts, mus_long_t *ends);
- MUS_EXPORT char *mus_header_aiff_aux_comment(const char *name, mus_long_t *starts, mus_long_t *ends);
-
- MUS_EXPORT int mus_header_change_chans(const char *filename, mus_header_t type, int new_chans);
- MUS_EXPORT int mus_header_change_srate(const char *filename, mus_header_t type, int new_srate);
- MUS_EXPORT int mus_header_change_type(const char *filename, mus_header_t new_type, mus_sample_t new_sample_type);
- MUS_EXPORT int mus_header_change_sample_type(const char *filename, mus_header_t type, mus_sample_t new_sample_type);
- MUS_EXPORT int mus_header_change_location(const char *filename, mus_header_t type, mus_long_t new_location);
- MUS_EXPORT int mus_header_change_comment(const char *filename, mus_header_t type, const char *new_comment);
- MUS_EXPORT int mus_header_change_data_size(const char *filename, mus_header_t type, mus_long_t bytes);
-
- typedef void mus_header_write_hook_t(const char *filename);
- MUS_EXPORT mus_header_write_hook_t *mus_header_write_set_hook(mus_header_write_hook_t *new_hook);
-
-
- /* these are internal to sndlib */
- void mus_bint_to_char(unsigned char *j, int x);
- void mus_lint_to_char(unsigned char *j, int x);
- void mus_bfloat_to_char(unsigned char *j, float x);
- void mus_lfloat_to_char(unsigned char *j, float x);
- void mus_bshort_to_char(unsigned char *j, short x);
- void mus_lshort_to_char(unsigned char *j, short x);
- void mus_bdouble_to_char(unsigned char *j, double x);
- void mus_blong_to_char(unsigned char *j, mus_long_t x);
- void mus_llong_to_char(unsigned char *j, mus_long_t x);
- int mus_char_to_bint(const unsigned char *inp);
- int mus_char_to_lint(const unsigned char *inp);
- mus_long_t mus_char_to_llong(const unsigned char *inp);
- mus_long_t mus_char_to_blong(const unsigned char *inp);
- int mus_char_to_uninterpreted_int(const unsigned char *inp);
- float mus_char_to_bfloat(const unsigned char *inp);
- float mus_char_to_lfloat(const unsigned char *inp);
- short mus_char_to_bshort(const unsigned char *inp);
- short mus_char_to_lshort(const unsigned char *inp);
- unsigned short mus_char_to_ubshort(const unsigned char *inp);
- unsigned short mus_char_to_ulshort(const unsigned char *inp);
- double mus_char_to_ldouble(const unsigned char *inp);
- double mus_char_to_bdouble(const unsigned char *inp);
- unsigned int mus_char_to_ubint(const unsigned char *inp);
- unsigned int mus_char_to_ulint(const unsigned char *inp);
-
-
- #ifdef __cplusplus
- }
- #endif
-
- #if (!DISABLE_DEPRECATED)
- #define mus_header_format mus_header_sample_type
- #define mus_header_original_format mus_header_original_sample_type
- #define mus_header_original_format_name mus_header_original_sample_type_name
- #define mus_header_change_format mus_header_change_sample_type
- #define mus_sound_original_format mus_sound_original_sample_type
- #define MUS_AUDIO_COMPATIBLE_FORMAT MUS_AUDIO_COMPATIBLE_SAMPLE_TYPE
- #define MUS_OUT_FORMAT MUS_OUT_SAMPLE_TYPE
- #define MUS_AUDIO_FORMAT_NOT_AVAILABLE MUS_AUDIO_SAMPLE_TYPE_NOT_AVAILABLE
- #define mus_audio_compatible_format mus_audio_compatible_sample_type
- #define mus_audio_device_format mus_audio_device_sample_type
- #endif
-
- #endif
|