24
|
1 #ifndef AUDIO_H_
|
|
2 #define AUDIO_H_
|
|
3
|
|
4 #define NUM_CHANNELS 4
|
|
5
|
|
6 typedef struct {
|
|
7 int16_t *writebuffer;
|
|
8 int16_t *playbuffer;
|
|
9
|
|
10 uint64_t buffer_fraction;
|
|
11 uint64_t buffer_inc;
|
|
12 uint32_t buffer_pos;
|
|
13 uint32_t buffer_size;
|
|
14
|
|
15 uint32_t cycles;
|
|
16 uint32_t clock_inc;
|
|
17
|
|
18 uint16_t timer_load[NUM_CHANNELS];
|
|
19 uint16_t timer_cur[NUM_CHANNELS];
|
|
20 int16_t value[NUM_CHANNELS];
|
|
21 uint8_t volume[NUM_CHANNELS];
|
|
22
|
|
23 int16_t buffer[];
|
|
24 } audio;
|
|
25
|
|
26 audio *alloc_audio(uint32_t master_clock, uint32_t clock_div, int sample_rate, int buffer_size);
|
|
27 void audio_run(audio *context, uint32_t target);
|
|
28 void audio_write_freq(audio *context, int channel, uint16_t value);
|
|
29 void audio_write_vol(audio *context, int pair, uint16_t value);
|
|
30
|
|
31 #endif //AUDIO_H_
|