v4k-git-backup/engine/split/fwk_audio.h

53 lines
1.9 KiB
C

// -----------------------------------------------------------------------------
// audio framework
// - rlyeh, public domain
//
// fixme: leaks, audio_delete
// @todo: audio_volume_fx, audio_volume_bgm, audio_volume_master instead?
// @todo: destroystream() if( ss->type == WAV ) drwav_uninit(&ss->wav);
// @todo: destroystream() if( ss->type == MOD ) jar_mod_unload(&ss->mod);
// @todo: destroystream() if( ss->type == XM && ss->xm ) jar_xm_free_context(ss->xm);
// midi interface
API void midi_send(unsigned midi_msg);
// audio interface
typedef struct audio_handle* audio_t;
API audio_t audio_clip( const char *pathfile );
API audio_t audio_stream( const char *pathfile );
API int audio_play( audio_t s, int flags );
API int audio_play_gain( audio_t a, int flags, float gain/*0*/ );
API int audio_play_gain_pitch( audio_t a, int flags, float gain, float pitch/*1*/ );
API int audio_play_gain_pitch_pan( audio_t a, int flags, float gain, float pitch, float pan/*0*/ );
API int audio_stop( audio_t a );
API float audio_volume_clip(float gain); // set fx volume if gain is in [0..1] range. return current fx volume in any case
API float audio_volume_stream(float gain); // set bgm volume if gain is in [0..1] range. return current bgm volume in any case
API float audio_volume_master(float gain); // set master volume if gain is in [0..1] range. return current master volume in any case
enum AUDIO_FLAGS {
AUDIO_1CH = 0, // default
AUDIO_2CH = 1,
AUDIO_8 = 2,
AUDIO_16 = 0, // default
AUDIO_32 = 4,
AUDIO_FLOAT = 8,
AUDIO_8KHZ = 16,
AUDIO_11KHZ = 32,
AUDIO_22KHZ = 0, // default
AUDIO_44KHZ = 64,
AUDIO_MIXER_GAIN = 0, // default
AUDIO_IGNORE_MIXER_GAIN = 128,
AUDIO_MULTIPLE_INSTANCES = 0, // default
AUDIO_SINGLE_INSTANCE = 256,
};
API int audio_queue( const void *samples, int num_samples, int flags );