nuclear@0: #ifndef GAMESND_H_ nuclear@0: #define GAMESND_H_ nuclear@0: nuclear@0: #include nuclear@0: nuclear@0: struct gsnd_sample; nuclear@0: struct gsnd_source; nuclear@0: struct gsnd_track; nuclear@0: struct gsnd_io; nuclear@0: nuclear@0: typedef long (*gsnd_io_read_func)(void *file, void *buf, long sz); nuclear@0: typedef long (*gsnd_io_seek_func)(void *file, long offs, int whence); nuclear@0: nuclear@0: nuclear@0: /* ---- sound samples ---- */ nuclear@0: int gsnd_init_sample(struct gsnd_sample *sam); nuclear@0: void gsnd_destroy_sample(struct gsnd_sample *sam); nuclear@0: nuclear@0: struct gsnd_sample *gsnd_create_sample(void); nuclear@0: void gsnd_free_sample(struct gsnd_sample *sam); nuclear@0: nuclear@0: int gsnd_load_sample(struct gsnd_sample *sam, const char *fname); nuclear@0: int gsnd_load_sample_file(struct gsnd_sample *sam, FILE *fp); nuclear@0: int gsnd_load_sample_io(struct gsnd_sample *sam, struct gsnd_io *io); nuclear@0: nuclear@0: void gsnd_play_sample(struct gsnd_sample *sam, float vol); nuclear@0: void gsnd_stop_sample(struct gsnd_sample *sam); nuclear@0: nuclear@0: /* ---- sound source ---- */ nuclear@0: int gsnd_init_source(struct gsnd_source *src); nuclear@0: void gsnd_destroy_source(struct gsnd_source *src); nuclear@0: nuclear@0: struct gsnd_source *gsnd_create_source(void); nuclear@0: void gsnd_free_source(struct gsnd_source *src); nuclear@0: nuclear@0: void gsnd_source_position(struct gsnd_source *src, float x, float y, float z); nuclear@0: void gsnd_source_volume(struct gsnd_source *src, float vol); nuclear@0: void gsnd_source_pitch(struct gsnd_source *src, float pitch); nuclear@0: nuclear@0: void gsnd_play_source(struct gsnd_sample *sam); nuclear@0: void gsnd_stop_source(struct gsnd_sample *sam); nuclear@0: nuclear@0: /* ---- music tracks ---- */ nuclear@0: int gsnd_init_track(struct gsnd_track *trk); nuclear@0: void gsnd_destroy_track(struct gsnd_track *trk); nuclear@0: nuclear@0: struct gsnd_track *gsnd_create_sample(void); nuclear@0: void gsnd_free_sample(struct gsnd_track *trk); nuclear@0: nuclear@0: int gsnd_open_track(struct gsnd_track *trk, const char *fname); nuclear@0: int gsnd_open_track_file(struct gsnd_track *trk, FILE *fp); nuclear@0: int gsnd_open_track_io(struct gsnd_track *trk, struct gsnd_io *io); nuclear@0: nuclear@0: void gsnd_play_track(struct gsnd_track *trk); nuclear@0: void gsnd_stop_track(struct gsnd_track *trk); nuclear@0: nuclear@0: nuclear@0: /* ---- file i/o ---- */ nuclear@0: void gsnd_io(struct gsnd_io *io, void *file, gsnd_io_read_func rd, gsnd_io_seek_func seek); nuclear@0: nuclear@0: nuclear@0: #endif /* GAMESND_H_ */