2022-01-19 16:43:21 -06:00
|
|
|
#ifndef SOUND_H
|
|
|
|
#define SOUND_H
|
|
|
|
|
2022-07-19 15:13:15 -05:00
|
|
|
struct circbuf;
|
|
|
|
struct SDL_AudioStream;
|
2022-07-06 17:17:06 -05:00
|
|
|
|
2022-06-22 20:39:18 -05:00
|
|
|
struct Mix_Chunk {
|
|
|
|
int i;
|
|
|
|
};
|
|
|
|
|
|
|
|
struct Mix_Music {
|
|
|
|
int i;
|
|
|
|
};
|
2022-01-19 16:43:21 -06:00
|
|
|
|
2022-06-23 02:34:51 -05:00
|
|
|
enum MUS {
|
|
|
|
MUS_STOP,
|
|
|
|
MUS_PLAY,
|
|
|
|
MUS_PAUSE
|
2022-01-19 16:43:21 -06:00
|
|
|
};
|
|
|
|
|
2022-07-06 17:17:06 -05:00
|
|
|
struct soundstream {
|
2022-07-19 15:13:15 -05:00
|
|
|
struct circbuf *buf;
|
2022-07-06 17:17:06 -05:00
|
|
|
};
|
|
|
|
|
2022-07-19 15:13:15 -05:00
|
|
|
struct soundconvstream {
|
|
|
|
// SDL_AudioStream *srconv;
|
|
|
|
void *data;
|
|
|
|
};
|
|
|
|
|
|
|
|
struct soundstream *soundstream_make();
|
2022-07-06 17:17:06 -05:00
|
|
|
|
2022-06-23 02:34:51 -05:00
|
|
|
struct sound {
|
2022-07-03 19:24:53 -05:00
|
|
|
int loop;
|
|
|
|
int frame;
|
2022-07-12 15:43:02 -05:00
|
|
|
int playing;
|
2022-07-12 01:28:41 -05:00
|
|
|
float gain;
|
|
|
|
|
2022-07-04 12:47:21 -05:00
|
|
|
struct wav *data;
|
2022-07-12 15:43:02 -05:00
|
|
|
struct bus *bus;
|
2022-01-19 16:43:21 -06:00
|
|
|
};
|
|
|
|
|
2022-07-03 19:24:53 -05:00
|
|
|
struct wav {
|
2022-07-05 15:12:48 -05:00
|
|
|
unsigned int ch;
|
|
|
|
unsigned int samplerate;
|
|
|
|
unsigned int frames;
|
2022-07-12 15:43:02 -05:00
|
|
|
float gain; /* In dB */
|
2022-07-12 01:28:41 -05:00
|
|
|
|
2022-07-03 19:24:53 -05:00
|
|
|
void *data;
|
|
|
|
};
|
|
|
|
|
2022-07-12 15:43:02 -05:00
|
|
|
|
|
|
|
|
2022-07-12 01:28:41 -05:00
|
|
|
struct music {
|
|
|
|
};
|
|
|
|
|
2022-01-19 16:43:21 -06:00
|
|
|
extern const char *audioDriver;
|
|
|
|
|
|
|
|
void sound_init();
|
|
|
|
void audio_open(const char *device);
|
|
|
|
void audio_close();
|
|
|
|
|
2022-07-06 17:17:06 -05:00
|
|
|
void sound_fillbuf(struct sound *s, short *buf, int n);
|
|
|
|
|
2022-07-12 01:28:41 -05:00
|
|
|
struct wav make_sound(const char *wav);
|
2022-07-12 15:43:02 -05:00
|
|
|
void wav_norm_gain(struct wav *w, double lv);
|
2022-07-19 15:13:15 -05:00
|
|
|
struct sound *play_sound(struct wav *wav);
|
2022-07-12 15:43:02 -05:00
|
|
|
|
2022-07-19 15:13:15 -05:00
|
|
|
int sound_playing(const struct sound *s);
|
|
|
|
int sound_paused(const struct sound *s);
|
|
|
|
int sound_stopped(const struct sound *s);
|
|
|
|
int sound_finished(const struct sound *s);
|
2022-07-12 15:43:02 -05:00
|
|
|
void sound_pause(struct sound *s);
|
|
|
|
void sound_resume(struct sound *s);
|
|
|
|
void sound_stop(struct sound *s);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
struct music make_music(const char *ogg);
|
|
|
|
|
2022-01-19 16:43:21 -06:00
|
|
|
|
|
|
|
|
|
|
|
|
2022-07-12 01:28:41 -05:00
|
|
|
const char *get_audio_driver();
|
2022-01-19 16:43:21 -06:00
|
|
|
|
2022-07-06 17:17:06 -05:00
|
|
|
void soundstream_fillbuf(struct soundstream *stream, short *buf, int n);
|
|
|
|
|
2022-02-06 10:14:57 -06:00
|
|
|
void close_audio_device(int device);
|
|
|
|
int open_device(const char *adriver);
|
|
|
|
|
2022-07-11 23:21:57 -05:00
|
|
|
float short2db(short val);
|
|
|
|
short db2short(float db);
|
|
|
|
short short_gain(short val, float db);
|
|
|
|
|
2022-07-12 15:43:02 -05:00
|
|
|
float pct2db(float pct);
|
|
|
|
float pct2mult(float pct);
|
|
|
|
|
2022-01-19 16:43:21 -06:00
|
|
|
void audio_init();
|
|
|
|
|
2022-07-11 23:21:57 -05:00
|
|
|
|
|
|
|
|
2022-02-06 10:14:57 -06:00
|
|
|
#endif
|