#include <allegro.h>
#include <winalleg.h>
#include <windows.h>
#include <mmsystem.h>
#include <stdio.h>
#include <math.h>
#include <time.h>
#define BUFFER 880
#define FREC 44100
#define NOTAS 30
#define TIEMPO 10
#define TAMNOTA0 5400
WAVEFORMATEX WaveFormat;
HWAVEOUT HWaveOut;
DWORD WaveBufSize;
WAVEHDR WaveHeader[3];
int posbuffer=0;
unsigned char onda[NOTAS][TAMNOTA0*2];
int spc[NOTAS];//Samples por ciclo
unsigned char nota=5;
int volumen=0;
void CALLBACK WaveOutProc(HWAVEOUT waveOut, UINT uMsg, DWORD dwInstance, DWORD dwParam1, DWORD dwParam2)
{
if(uMsg==MM_WOM_DONE)
{
(*(WAVEHDR *)dwParam1).lpData=(char *)onda[nota]+posbuffer;
waveOutWrite(HWaveOut, (WAVEHDR *)dwParam1, sizeof(WAVEHDR));
waveOutSetVolume(HWaveOut,volumen);
posbuffer=(BUFFER+posbuffer)%spc[nota];
}
}
int main()
{
allegro_init();
install_keyboard();
set_color_depth(32);
set_gfx_mode(GFX_AUTODETECT_WINDOWED, 1024, 256, 0, 0);
BITMAP *buffer = create_bitmap(1024, 256);
clear_to_color(buffer, makecol(0,0,0));
blit(buffer, screen, 0, 0, 0, 0,1024, 256);
readkey();
destroy_bitmap(buffer);
return 0;
}
END_OF_MAIN();