#include <stdio.h>
#include <stdlib.h> // Per al 'exit'
#define GLUT_DISABLE_ATEXIT_HACK
//#include <GLUT/glut.h>
#include <GL/glut.h>
//#include <OpenAL/alut.h>
#include <AL/alut.h>
// function prototypes ---------------------------------------------
int generar();
int main (int argc, char **argv)
{
char c;
do{
printf("Elija una de las siguientes opciones: \n\n");
printf("a.Generar señales simples.\n\n");
printf("b.Obtener version openAL y ALUT.\n\n");
printf("c.Mostrar dispositivos de audio.\n\n");
printf("d.Mostrar extensiones OPENAL.\n\n");
printf("e.Modificar PITCH de cada fuente.\n\n");
printf("f.Modificar GAIN de cada fuente y del oyente.\n\n");
printf("g.Cambiar la orientación del oyente.\n\n");
printf("h.Cambiar posicion espacial y orientacion de cada fuente\n\n");
printf("i. Modificar DOPPLER de cada fuente\n\n");
printf("j.Salir.\n\n");
c = getchar();
switch ( c )
{
case 'a':
generar();
llamada a la funcion generar
break;
case 'b':
printf("Has elegido la Opción b");
break;
case 'c':
printf("Has elegido la Opción c");
break;
case 'd':
printf("Has elegido la Opción d");
break;
case 'e':
printf("Has elegido la Opción e");
break;
case 'f':
printf("Has elegido la Opción f");
break;
case 'g':
printf("Has elegido la Opción g");
break;
case 'h':
printf("Has elegido la Opción h");
break;
case 'i':
printf("Has elegido la Opción i");break;
}// switch
}while ((c != 'j') && (c != 'J'));
}
la funcion MAIN tiene que acabar aqui, puesto que el codigo de la funcion generar no puede estar dentro del main. dentro del main estara la llamada a la funcion: generar()
//return EXIT_SUCCESS;
int generar(){
int argc;
char **argv;
ALuint buffers[6], fuente;
char p;
alutInit (&argc, argv);
p = 'h';
buffers[0] = alutCreateBufferHelloWorld ();
buffers[1] = alutCreateBufferWaveform(ALUT_WAVEFORM_SINE, 440.0, 0.0, 1.0);
buffers[2] = alutCreateBufferWaveform(ALUT_WAVEFORM_SQUARE, 440.0, 0.0, 1.0);
buffers[3] = alutCreateBufferWaveform(ALUT_WAVEFORM_SAWTOOTH, 440.0, 0.0, 1.0);
buffers[4] = alutCreateBufferWaveform(ALUT_WAVEFORM_WHITENOISE, 440.0, 0.0, 1.0);
buffers[5] = alutCreateBufferWaveform(ALUT_WAVEFORM_IMPULSE, 440.0, 0.0, 1.0);
alGenSources (1, &fuente);
printf("'h'ellow, 's'ine, sq'u'are, sa'w'tooh, white'n'oise, 'i'mpulse ('q' para salir): \n");
do
{
switch ( p )
{
case 'h': alSourcei (fuente, AL_BUFFER, buffers[0]);
break;
case 's': alSourcei (fuente, AL_BUFFER, buffers[1]);
break;
case 'u': alSourcei (fuente, AL_BUFFER, buffers[2]);
break;
case 'w': alSourcei (fuente, AL_BUFFER, buffers[3]);
break;
case 'n': alSourcei (fuente, AL_BUFFER, buffers[4]);
break;
case 'i': alSourcei (fuente, AL_BUFFER, buffers[5]);
break;
}// switch
alSourcePlay (fuente);
alutSleep (1);
p = getch();
printf("%c\r", p); fflush(stdout);
} while ((p != 'q') && (p != 'Q'));
printf("\nTerminando ... \n");
alDeleteSources(1, &fuente);
alDeleteBuffers(6, buffers);
alutExit ();
return EXIT_SUCCESS;
}
aqui acaba la funcion generar
}
esta sobra
quedaria asi:
Código C:
Ver original#include <stdio.h>
#include <stdlib.h> // Per al 'exit'
#define GLUT_DISABLE_ATEXIT_HACK
//#include <GLUT/glut.h>
#include <GL/glut.h>
//#include <OpenAL/alut.h>
#include <AL/alut.h>
// function prototypes ---------------------------------------------
int generar();
int main (int argc, char **argv)
{
char c;
do{
printf("Elija una de las siguientes opciones: \n\n"); printf("a.Generar señales simples.\n\n"); printf("b.Obtener version openAL y ALUT.\n\n"); printf("c.Mostrar dispositivos de audio.\n\n"); printf("d.Mostrar extensiones OPENAL.\n\n"); printf("e.Modificar PITCH de cada fuente.\n\n"); printf("f.Modificar GAIN de cada fuente y del oyente.\n\n"); printf("g.Cambiar la orientación del oyente.\n\n"); printf("h.Cambiar posicion espacial y orientacion de cada fuente\n\n"); printf("i. Modificar DOPPLER de cada fuente\n\n");
switch ( c )
{
case 'a':
generar();
break;
case 'b':
printf("Has elegido la Opción b"); break;
case 'c':
printf("Has elegido la Opción c"); break;
case 'd':
printf("Has elegido la Opción d"); break;
case 'e':
printf("Has elegido la Opción e"); break;
case 'f':
printf("Has elegido la Opción f"); break;
case 'g':
printf("Has elegido la Opción g"); break;
case 'h':
printf("Has elegido la Opción h"); break;
case 'i':
printf("Has elegido la Opción i");break;
}// switch
}while ((c != 'j') && (c != 'J'));
}
//return EXIT_SUCCESS;
int generar()
{
int argc;
char **argv;
ALuint buffers[6], fuente;
char p;
alutInit (&argc, argv);
p = 'h';
buffers[0] = alutCreateBufferHelloWorld ();
buffers[1] = alutCreateBufferWaveform(ALUT_WAVEFORM_SINE, 440.0, 0.0, 1.0);
buffers[2] = alutCreateBufferWaveform(ALUT_WAVEFORM_SQUARE, 440.0, 0.0, 1.0);
buffers[3] = alutCreateBufferWaveform(ALUT_WAVEFORM_SAWTOOTH, 440.0, 0.0, 1.0);
buffers[4] = alutCreateBufferWaveform(ALUT_WAVEFORM_WHITENOISE, 440.0, 0.0, 1.0);
buffers[5] = alutCreateBufferWaveform(ALUT_WAVEFORM_IMPULSE, 440.0, 0.0, 1.0);
alGenSources (1, &fuente);
printf("'h'ellow, 's'ine, sq'u'are, sa'w'tooh, white'n'oise, 'i'mpulse ('q' para salir): \n");
do
{
switch ( p )
{
case 'h': alSourcei (fuente, AL_BUFFER, buffers[0]);
break;
case 's': alSourcei (fuente, AL_BUFFER, buffers[1]);
break;
case 'u': alSourcei (fuente, AL_BUFFER, buffers[2]);
break;
case 'w': alSourcei (fuente, AL_BUFFER, buffers[3]);
break;
case 'n': alSourcei (fuente, AL_BUFFER, buffers[4]);
break;
case 'i': alSourcei (fuente, AL_BUFFER, buffers[5]);
break;
}// switch
alSourcePlay (fuente);
alutSleep (1);
} while ((p != 'q') && (p != 'Q'));
printf("\nTerminando ... \n");
alDeleteSources(1, &fuente);
alDeleteBuffers(6, buffers);
alutExit ();
return EXIT_SUCCESS;
}