Mercurial > repos > simple16
diff src/audio.h @ 24:4c9dbfa30a66
Implemented audio
author | Michael Pavone <pavone@retrodev.com> |
---|---|
date | Thu, 31 Mar 2016 00:07:37 -0700 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/audio.h Thu Mar 31 00:07:37 2016 -0700 @@ -0,0 +1,31 @@ +#ifndef AUDIO_H_ +#define AUDIO_H_ + +#define NUM_CHANNELS 4 + +typedef struct { + int16_t *writebuffer; + int16_t *playbuffer; + + uint64_t buffer_fraction; + uint64_t buffer_inc; + uint32_t buffer_pos; + uint32_t buffer_size; + + uint32_t cycles; + uint32_t clock_inc; + + uint16_t timer_load[NUM_CHANNELS]; + uint16_t timer_cur[NUM_CHANNELS]; + int16_t value[NUM_CHANNELS]; + uint8_t volume[NUM_CHANNELS]; + + int16_t buffer[]; +} audio; + +audio *alloc_audio(uint32_t master_clock, uint32_t clock_div, int sample_rate, int buffer_size); +void audio_run(audio *context, uint32_t target); +void audio_write_freq(audio *context, int channel, uint16_t value); +void audio_write_vol(audio *context, int pair, uint16_t value); + +#endif //AUDIO_H_