view 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 source

#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_