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_