1 /* 2 * UAE - The Un*x Amiga Emulator 3 * 4 * Sound emulation stuff 5 * 6 * Copyright 1995, 1996, 1997 Bernd Schmidt 7 */ 8 9 #ifndef _UADE_AUDIO_H_ 10 #define _UADE_AUDIO_H_ 11 12 #include "sinctable.h" 13 14 #define AUDIO_DEBUG 0 15 /* Queue length 256 implies minimum emulated period of 8. This should be 16 * sufficient for all imaginable purposes. This must be power of two. */ 17 #define SINC_QUEUE_LENGTH 256 18 19 typedef struct { 20 int time, output; 21 } sinc_queue_t; 22 23 extern struct audio_channel_data { 24 unsigned long adk_mask; 25 unsigned long evtime; 26 unsigned char dmaen, intreq2, data_written; 27 uaecptr lc, pt; 28 29 int state, wper, wlen; 30 int current_sample; 31 int sample_accum, sample_accum_time; 32 int output_state; 33 sinc_queue_t sinc_queue[SINC_QUEUE_LENGTH]; 34 int sinc_queue_time; 35 int sinc_queue_head; 36 int vol; 37 uae_u16 dat, nextdat, per, len; 38 39 /* Debug variables */ 40 uaecptr ptend, nextdatpt, nextdatptend, datpt, datptend; 41 } audio_channel[4]; 42 43 extern void AUDxDAT (int nr, uae_u16 value); 44 extern void AUDxVOL (int nr, uae_u16 value); 45 extern void AUDxPER (int nr, uae_u16 value); 46 extern void AUDxLCH (int nr, uae_u16 value); 47 extern void AUDxLCL (int nr, uae_u16 value); 48 extern void AUDxLEN (int nr, uae_u16 value); 49 50 void audio_reset (void); 51 void audio_set_filter(int filter_type, int filter_force); 52 void audio_set_rate (int rate); 53 void audio_set_resampler(char *name); 54 void audio_use_text_scope(void); 55 void update_audio (void); 56 57 #endif 58