annotate src/audio.h @ 24:4c9dbfa30a66

Implemented audio
author Michael Pavone <pavone@retrodev.com>
date Thu, 31 Mar 2016 00:07:37 -0700
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
24
4c9dbfa30a66 Implemented audio
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
1 #ifndef AUDIO_H_
4c9dbfa30a66 Implemented audio
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
2 #define AUDIO_H_
4c9dbfa30a66 Implemented audio
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
3
4c9dbfa30a66 Implemented audio
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
4 #define NUM_CHANNELS 4
4c9dbfa30a66 Implemented audio
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
5
4c9dbfa30a66 Implemented audio
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
6 typedef struct {
4c9dbfa30a66 Implemented audio
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
7 int16_t *writebuffer;
4c9dbfa30a66 Implemented audio
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
8 int16_t *playbuffer;
4c9dbfa30a66 Implemented audio
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
9
4c9dbfa30a66 Implemented audio
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
10 uint64_t buffer_fraction;
4c9dbfa30a66 Implemented audio
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
11 uint64_t buffer_inc;
4c9dbfa30a66 Implemented audio
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
12 uint32_t buffer_pos;
4c9dbfa30a66 Implemented audio
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
13 uint32_t buffer_size;
4c9dbfa30a66 Implemented audio
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
14
4c9dbfa30a66 Implemented audio
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
15 uint32_t cycles;
4c9dbfa30a66 Implemented audio
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
16 uint32_t clock_inc;
4c9dbfa30a66 Implemented audio
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
17
4c9dbfa30a66 Implemented audio
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
18 uint16_t timer_load[NUM_CHANNELS];
4c9dbfa30a66 Implemented audio
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
19 uint16_t timer_cur[NUM_CHANNELS];
4c9dbfa30a66 Implemented audio
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
20 int16_t value[NUM_CHANNELS];
4c9dbfa30a66 Implemented audio
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
21 uint8_t volume[NUM_CHANNELS];
4c9dbfa30a66 Implemented audio
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
22
4c9dbfa30a66 Implemented audio
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
23 int16_t buffer[];
4c9dbfa30a66 Implemented audio
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
24 } audio;
4c9dbfa30a66 Implemented audio
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
25
4c9dbfa30a66 Implemented audio
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
26 audio *alloc_audio(uint32_t master_clock, uint32_t clock_div, int sample_rate, int buffer_size);
4c9dbfa30a66 Implemented audio
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
27 void audio_run(audio *context, uint32_t target);
4c9dbfa30a66 Implemented audio
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
28 void audio_write_freq(audio *context, int channel, uint16_t value);
4c9dbfa30a66 Implemented audio
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
29 void audio_write_vol(audio *context, int pair, uint16_t value);
4c9dbfa30a66 Implemented audio
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
30
4c9dbfa30a66 Implemented audio
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
31 #endif //AUDIO_H_