int init_sim(int argc, char*argv[]) { // Initialise SDL, GL and AL init_al(); sim_init(); return 0; }
int main(int argc, char* argv[]) { /* initialize OpenAL */ init_al(); srand(time(NULL)); /* Create buffer to store samples */ ALuint buf; alGenBuffers(1, &buf); al_check_error(); /* Fill buffer with Sine-Wave */ float freq = 400.f; int seconds = 4; unsigned sample_rate = 8000; size_t buf_size = seconds * sample_rate; //os vetores de frequencia e amplitude serão recebidos //a partir da imagem de profundidade //o tamanho de frequencias eh igual ao numero de pixels int freq_size = 256; float *frequencias; frequencias = new float[freq_size]; float freq_aux; for(int i=0; i<256; ++i) { if (i == 0) frequencias[i] = 100; else frequencias[i] = frequencias[i-1] + 15; } //o tamanho de amplitudes eh igual ao numero de pixels int amp_size = 256; //igual ao de frequencias float *amplitudes; amplitudes = new float[amp_size]; for(int i=0; i<256; ++i) { amplitudes[i] = float(rand()%4) / 2; //amplitudes[i] = 1; } short *samples; samples = new short[buf_size]; for(int i=0; i<buf_size; ++i) { //samples[i] = 32760 * sin( (2.f*float(M_PI)*freq)/sample_rate * i ); samples[i] = 0; for (int j=0; j<freq_size; ++j){ samples[i] = samples[i] + 32760 * amplitudes[j] * sin( (2.f*float(M_PI)*frequencias[j])/sample_rate * i ); } //samples[i] = 32760 * sin( (2.f*float(M_PI)*float(rand()%300+100))/sample_rate * i ); } /* Download buffer to OpenAL */ alBufferData(buf, AL_FORMAT_MONO16, samples, buf_size, sample_rate); al_check_error(); /* Set-up sound source and play buffer */ ALuint src = 0; alGenSources(1, &src); alSourcei(src, AL_BUFFER, buf); alSourcePlay(src); std::cout << "dasdasdas"; /* While sound is playing, sleep */ al_check_error(); //sleep(seconds); for(int i = 0; i< 1000000000; i++); /* Dealloc OpenAL */ exit_al(); al_check_error(); return 0; }