// ampler.h #include #include #include #include typedef int8_t s8; typedef int16_t s16; typedef int32_t s32; typedef uint8_t u8; typedef uint16_t u16; typedef uint32_t u32; typedef float f32; typedef double f64; #define if if( #define while while( #define for for( #define do ) #define or || #define arraylen(a) (sizeof (a) / sizeof ((a)[0])) #define SAMPLE_RATE (44100) #define CHANNELS (2) #define FRAME_SAMPLES (SAMPLE_RATE / 60) typedef struct Sound_src Sound_src; struct Sound_src { s8 *tracks[CHANNELS]; s32 len; // in samples f32 pos; // position in samples f32 speed; // in samples, per sample, can be negative enum { FREE = 0, STOPPED, PLAYING, LOOPING } state; }; typedef struct Ampler_state Ampler_state; struct Ampler_state { u32 size; // in bytes, off this struct SDL_AudioDeviceID playdev; Sound_src sounds[64]; s32 played_audio_last_frame; }; void udp_init(Ampler_state *); void udp_frame(Ampler_state *); void udp_quit(Ampler_state *);