2021-04-08 16:14:40 -04:00
|
|
|
/*
|
|
|
|
Copyright (c) 2021 Devine Lu Linvega
|
|
|
|
Copyright (c) 2021 Andrew Alderwick
|
|
|
|
|
|
|
|
Permission to use, copy, modify, and distribute this software for any
|
|
|
|
purpose with or without fee is hereby granted, provided that the above
|
|
|
|
copyright notice and this permission notice appear in all copies.
|
|
|
|
|
|
|
|
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
|
|
|
WITH REGARD TO THIS SOFTWARE.
|
|
|
|
*/
|
|
|
|
|
|
|
|
typedef signed int Sint32;
|
|
|
|
|
2021-04-13 16:50:49 -04:00
|
|
|
#define SAMPLE_FREQUENCY 44100
|
2021-12-28 16:47:35 -05:00
|
|
|
#define POLYPHONY 4
|
2021-04-08 16:14:40 -04:00
|
|
|
|
|
|
|
typedef struct {
|
2021-04-25 10:12:45 -04:00
|
|
|
Uint8 *addr;
|
|
|
|
Uint32 count, advance, period, age, a, d, s, r;
|
|
|
|
Uint16 i, len;
|
2021-04-26 14:49:34 -04:00
|
|
|
Sint8 volume[2];
|
2021-04-25 16:52:39 -04:00
|
|
|
Uint8 pitch, repeat;
|
2021-12-28 16:47:35 -05:00
|
|
|
} Audio;
|
2021-04-08 16:14:40 -04:00
|
|
|
|
2021-12-28 16:47:35 -05:00
|
|
|
extern Audio audio[POLYPHONY];
|
|
|
|
|
2021-12-28 20:22:40 -05:00
|
|
|
Uint8 audio_get_vu(Audio *c);
|
2021-12-28 16:47:35 -05:00
|
|
|
int audio_render(Audio *c, Sint16 *sample, Sint16 *end);
|
|
|
|
void audio_start(Audio *c, Uint16 adsr, Uint8 pitch);
|
|
|
|
void audio_finished_handler(Audio *c);
|