Beispiel #1
0
/* Method for starting this service */
bool SoundService::start()
{
	S_LOG_INFO("Sound Service starting");
	
	if (EmberServices::getSingleton().getConfigService().hasItem("audio", "enabled")
	    && static_cast<bool>(EmberServices::getSingleton().getConfigService().getValue("audio", "enabled")) == false) {
		S_LOG_INFO("Sound disabled.");
	} else {
	
		if (isEnabled()) {
			S_LOG_FAILURE("Can't start the sound system if it's already started.");
		} else {

		#ifndef _MSC_VER
			mEnabled = alutInit(nullptr, nullptr) == ALC_TRUE;
		#else
			mDevice = alcOpenDevice("DirectSound3D");
	
			if (!mDevice) {
				mEnabled = false;
				S_LOG_FAILURE("Sound Service failed to start, sound device not found 'DirectSound3D'");
				return false;
			}
	
			mContext = alcCreateContext(mDevice, nullptr);
			if (!mContext) {
				mEnabled = false;
				S_LOG_FAILURE("Sound Service failed to start, sound device not found 'DirectSound3D'");
				return false;
			}
			mEnabled = alcMakeContextCurrent(mContext) == ALC_TRUE;
		#endif
		
			SoundGeneral::checkAlError();
		}
	}
	
	setRunning(true);
	return true;
}
Beispiel #2
0
Sound::Sound()
{
    // Init openAL
    alutInit(0, NULL);
    // Clear Error Code (so we can catch any new errors)
    if (alGetError() != AL_NO_ERROR) std::cerr << "Error in Sound class!\n";

    alGenBuffers(NUM_SOUNDS, buffers_);
    alGenSources(NUM_SOUNDS, source_);
    if (alGetError() != AL_NO_ERROR) std::cerr << "Error in Sound class!\n";

    std::cout << "Loading sound files";
    float zeros[3] = {0.0f, 0.0f, 0.0f};
    for (unsigned int i = 0; i < NUM_SOUNDS; ++i) {
        ALenum     format;
        ALsizei    size;
        ALfloat    freq;
        ALvoid* data = alutLoadMemoryFromFile(
                SoundFiles[i].c_str(), &format, &size, &freq);
        alBufferData(buffers_[i],format,data,size,freq);
        //free(data);
        

        if (alGetError() != AL_NO_ERROR) std::cerr << "Error in Sound class!\n";
        alSourcei(source_[i], AL_BUFFER, buffers_[i]);
        alSourcefv (source_[i], AL_VELOCITY, zeros);
        alSourcefv (source_[i], AL_DIRECTION, zeros);
        std::cout << "..";
    }
    std::cout << "done." << std::endl;


    alListenerfv(AL_POSITION,zeros);
    alListenerfv(AL_VELOCITY,zeros);
    float orientation[6] = {
            1.0f, 0.0f, 1.0f,
            0.0f, 1.0f, 0.0f
            };
    alListenerfv(AL_ORIENTATION,orientation);
}
Beispiel #3
0
VALUE 
method_init_player(VALUE self) {
	VALUE tick_wav, tock_wav;
	char *tick_wav_str, *tock_wav_str;

	alutInit (NULL, NULL);

	tick_wav = rb_const_get(lolrbmet_class, rb_intern("TickFile"));
	tick_wav_str = rb_string_value_cstr(&tick_wav);

	tock_wav = rb_const_get(lolrbmet_class, rb_intern("TockFile"));
	tock_wav_str = rb_string_value_cstr(&tock_wav);

	tickBuffer = alutCreateBufferFromFile (tick_wav_str);
	tockBuffer = alutCreateBufferFromFile (tock_wav_str);

	alGenSources (1, &tickSource);
	alGenSources (1, &tockSource);

	alSourcei (tickSource, AL_BUFFER, tickBuffer);
	alSourcei (tockSource, AL_BUFFER, tockBuffer);
}
int main(int argc, char** argv) {
	glutInit(&argc, argv);
	alutInit (&argc, argv);
	glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE | GLUT_DEPTH | GLUT_MULTISAMPLE);
	glutInitWindowSize (1200, 1000);
	glutInitWindowPosition (100,100);
	glutCreateWindow ("3D-Tetris");
	glutDisplayFunc(display);
	glutReshapeFunc(reshape);
	glutKeyboardFunc(keypressed);
	glutSpecialFunc(keypressSpecial);
	glutMouseFunc(mouseButton);
	glutMotionFunc(mouseMove);
	glutTimerFunc(0,timer,0);

	init();
	glutMainLoop();

	end();

	return 0;
}
Beispiel #5
0
bool Audio::init(){
	logs().audio.write("[Audio] init");

	if(!alutInit(NULL, 0)){
		hardware.audio=false;
		return false;
	}


	ALenum error=alGetError();

	if(error != AL_NO_ERROR){
		logs().audio.write("[AudioObject] init error '"+String(alGetString(error))+"' ");
		console().write(String("audio init error '"+String(alGetString(error))+"' "));
		return false;
	}

	alDistanceModel(AL_LINEAR_DISTANCE_CLAMPED);	//NONE for none, AL_INVERSE_DISTANCE for other + //AL_INVERSE_DISTANCE_CLAMPED
	alDopplerFactor ( dopplerFactor );
	
	error=alGetError();
	
	active=true;

	//handle:play();
	//handle:volume			//default=1 (out of 1)
	//handle:range			//default=0 (no range=play everywhere)
	//handle:directional	//defaut=false
	//handle:loop			//default=true
	//handle:id		//handle id, internal

	error=alGetError();

	if(error != AL_NO_ERROR){
		return false;
	}

	return true;
}	
Beispiel #6
0
bool CSoundManager::Init()
{
	CLogManager::Instance()->LogMessage("Initializing sound manager.");

	ALenum error;
	alutInit(0, NULL);
	if ((error = alGetError()) != AL_NO_ERROR)
	{
		CLogManager::Instance()->LogMessage("Error initializing sound: alutInit : " + GetSoundError(error));
		return false;
	}

	alGenBuffers(NUM_SOUNDS, m_iBuffers);
	if ((error = alGetError()) != AL_NO_ERROR)
	{
		CLogManager::Instance()->LogMessage("Error initializing sound: alGenBuffers : " + GetSoundError(error) );
		return false;
	}

	m_iSampleSet = 0;
	m_iSoundCount = 0;
	return true;
}
Beispiel #7
0
int main(int argc, char **argv)
{
  /* Initialise ALUT and eat any ALUT-specific commandline flags. */
  if (!alutInit(&argc, argv))
  {
    ALenum error = alutGetError();

    fprintf(stderr, "%s\n", alutGetErrorString(error));
    exit(EXIT_FAILURE);
  }

  /* If everything is OK, play the sound files and exit when finished. */
  playFile("file1.wav");

  if (!alutExit())
  {
    ALenum error = alutGetError();

    fprintf(stderr, "%s\n", alutGetErrorString(error));
    exit(EXIT_FAILURE);
  }
  return EXIT_SUCCESS;
}
// virtual
bool LLAudioEngine_OpenAL::init(const S32 num_channels, void* userdata)
{
	mWindGen = NULL;
	LLAudioEngine::init(num_channels, userdata);

	if(!alutInit(NULL, NULL))
	{
		LL_WARNS("OpenAL") << "LLAudioEngine_OpenAL::init() ALUT initialization failed: " << alutGetErrorString (alutGetError ()) << LL_ENDL;
		return false;
	}

	LL_INFOS("OpenAL") << "LLAudioEngine_OpenAL::init() OpenAL successfully initialized" << LL_ENDL;

	LL_INFOS("OpenAL") << "OpenAL version: "
		<< ll_safe_string(alGetString(AL_VERSION)) << LL_ENDL;
	LL_INFOS("OpenAL") << "OpenAL vendor: "
		<< ll_safe_string(alGetString(AL_VENDOR)) << LL_ENDL;
	LL_INFOS("OpenAL") << "OpenAL renderer: "
		<< ll_safe_string(alGetString(AL_RENDERER)) << LL_ENDL;

	ALint major = alutGetMajorVersion ();
	ALint minor = alutGetMinorVersion ();
	LL_INFOS("OpenAL") << "ALUT version: " << major << "." << minor << LL_ENDL;

	ALCdevice *device = alcGetContextsDevice(alcGetCurrentContext());

	alcGetIntegerv(device, ALC_MAJOR_VERSION, 1, &major);
	alcGetIntegerv(device, ALC_MAJOR_VERSION, 1, &minor);
	LL_INFOS("OpenAL") << "ALC version: " << major << "." << minor << LL_ENDL;

	LL_INFOS("OpenAL") << "ALC default device: "
		<< ll_safe_string(alcGetString(device,
					       ALC_DEFAULT_DEVICE_SPECIFIER))
		<< LL_ENDL;

	return true;
}
Beispiel #9
0
void playSound() {
    char * sound [] = {"scale-a6.wav", "scale-c6.wav", "scale-c7.wav"
        , "scale-d6.wav", "scale-e6.wav", "scale-f6.wav",
        "scale-g6.wav", "scale-h6.wav"};
    int index = rand() % 8;
    ALuint buffer, source;
    ALuint state;

    // Initialize the environment
    alutInit(0, NULL);

    // Capture errors
    alGetError();

    // Load pcm data into buffer
    buffer = alutCreateBufferFromFile(sound[index]);

    // Create sound source (use buffer to fill source)
    alGenSources(1, &source);
    alSourcei(source, AL_BUFFER, buffer);

    // Play
    alSourcePlay(source);

    // Wait for the song to complete
    do {
        alGetSourcei(source, AL_SOURCE_STATE, &state);
    } while (state == AL_PLAYING);

    // Clean up sources and buffers
    alDeleteSources(1, &source);
    alDeleteBuffers(1, &buffer);

    // Exit everything
    alutExit();
}
SoundManager::SoundManager(QString soundDirectory)
{
    QString applicationDirectory;
    QString completeSoundDirectory;
    char cwd[PATH_MAX];

    // Initialize ALUT.
    if (alutInit(NULL, NULL) == false) {
        reportALUTError(alutGetError());
    }

    // Get the complete application directory in which we will load sounds from.
    // We convert to QString since it is more convenient when working with directories.
    getcwd(cwd, PATH_MAX);
    applicationDirectory = QString(cwd);

    // Append the assets directory and the actual sounds directory name.
    completeSoundDirectory = applicationDirectory
                            .append("/app/native/assets/")
                            .append(soundDirectory);

    // Create OpenAL buffers from all files in the sound directory.
    QDir dir(completeSoundDirectory);

    if (!dir.exists()) {
        qDebug() << "Cannot find the sounds directory." << completeSoundDirectory;
    } else {

        // Set a filter for file listing, only files should be listed.
        dir.setFilter(QDir::Files | QDir::NoSymLinks | QDir::NoDotAndDotDot);

        // Get a directory listing.
        QFileInfoList list = dir.entryInfoList();

        // Traverse and load all the audio files into buffers.
        for (int i = 0; i < list.size(); ++i) {

            // Create a file info for each audio file.
        	QFileInfo fileInfo = list.at(i);
        	const char* path = fileInfo.absoluteFilePath().toStdString().c_str();
        	ALenum error;

        	// Generate buffers to hold audio data.
			alGenBuffers(1, &mSoundBuffers[fileInfo.fileName()]);

			error = alGetError();
			if (error != AL_NO_ERROR) {
				reportOpenALError(error);
				break;
			}

			// Load sound file.
			FILE* file = fopen(path, "rb");
			if (!file) {
				qDebug() << "Failed to load audio file " << path;
				break;
			}

			// Read the file header
			char header[12];
			ALuint bufferId = mSoundBuffers[fileInfo.fileName()];
			if (fread(header, 1, 12, file) != 12) {
				qDebug() << "Invalid header for audio file " << path;
				alDeleteBuffers(1, &bufferId);
				goto cleanup;
			}

			// Check the file format & load the buffer with audio data.
			if (memcmp(header, "RIFF", 4) == 0) {
				if (!loadWav(file, bufferId)) {
					qDebug() << "Invalid wav file: " << path;
					alDeleteBuffers(1, &bufferId);
					goto cleanup;
				}
			}
			else if (memcmp(header, "OggS", 4) == 0) {
				if (!loadOgg(file, bufferId)) {
					qDebug() << "Invalid ogg file: " << path;
					alDeleteBuffers(1, &bufferId);
					goto cleanup;
				}
			}
			else {
				qDebug() << "Unsupported audio file: " << path;
				goto cleanup;
			}

		cleanup:
			if (file) {
				fclose(file);
			}
        }
    }

    // Generate a number of sources used to attach buffers and play.
    alGenSources(SOUNDMANAGER_MAX_NBR_OF_SOURCES, mSoundSources);
    ALenum error = alGetError();
    if (error != AL_NO_ERROR) {
        reportOpenALError(error);
    }
}
Beispiel #11
0
//initalize and add source of sound
int Openal::initopenal()
{
	alutInit(0, NULL);
	if (alGetError() != AL_NO_ERROR) {
		printf("ERROR: alutInit()\n");
		return 0;
	}

	alGetError();

	float vec[6] = {0.0f,0.0f,1.0f, 0.0f,1.0f,0.0f};
	alListener3f(AL_POSITION, 0.0f, 0.0f, 0.0f);
	alListenerfv(AL_ORIENTATION, vec);
	alListenerf(AL_GAIN, 1.0f);

	//load sound file into buffer 
	alBuffer0 = alutCreateBufferFromFile("./sounds/sblast.wav");
	alBuffer1 = alutCreateBufferFromFile("./sounds/50.wav");
	alBuffer2 = alutCreateBufferFromFile("./sounds/gunshot.wav");
	alBuffer3 = alutCreateBufferFromFile("./sounds/test.wav");
	alBuffer4 = alutCreateBufferFromFile("./sounds/raptor.wav");
	alBuffer5 = alutCreateBufferFromFile("./sounds/bite.wav");

	alGenSources(1, &alSource[0]);
	alGenSources(1, &alSource[1]);
	alGenSources(1, &alSource[2]);
	alGenSources(1, &alSource[3]);
	alGenSources(1, &alSource[4]);
	alGenSources(1, &alSource[5]);
	
	for (int i = 0; i < 5; i++) {
		dinoBuff[i] = alutCreateBufferFromFile("./sounds/gunshot.wav");
		alGenSources(1, &dinoSour[i]);
		alSourcei(dinoSour[i], AL_BUFFER, dinoBuff[i]);
		alSourcef(dinoSour[i], AL_GAIN, 0.75f);
		alSourcef(dinoSour[i], AL_PITCH, 1.0f);
		alSourcei(dinoSour[i], AL_LOOPING, AL_FALSE);
	}
	
	//setting for first sound 
	alSourcei(alSource[0], AL_BUFFER, alBuffer0);
	alSourcef(alSource[0], AL_GAIN, 1.0f);
	alSourcef(alSource[0], AL_PITCH, 1.0f);
	alSourcei(alSource[0], AL_LOOPING, AL_FALSE);
	
	//setting for second sound 
	alSourcei(alSource[1], AL_BUFFER, alBuffer1);
	alSourcef(alSource[1], AL_GAIN, 2.0f);
	alSourcef(alSource[1], AL_PITCH, 1.0f);
	alSourcei(alSource[1], AL_LOOPING, AL_FALSE);

	//setting for third sound
	alSourcei(alSource[2], AL_BUFFER, alBuffer2);
	alSourcef(alSource[2], AL_GAIN, 1.0f);
	alSourcef(alSource[2], AL_PITCH, 1.0f);
	alSourcei(alSource[2], AL_LOOPING, AL_FALSE);

	//setting for fourth sound
	alSourcei(alSource[3], AL_BUFFER, alBuffer3);
	alSourcef(alSource[3], AL_GAIN, 1.0f);
	alSourcef(alSource[3], AL_PITCH, 1.0f);
	alSourcei(alSource[3], AL_LOOPING, AL_FALSE);

	//setting for fourth sound
	alSourcei(alSource[4], AL_BUFFER, alBuffer4);
	alSourcef(alSource[4], AL_GAIN, 1.0f);
	alSourcef(alSource[4], AL_PITCH, 1.0f);
	alSourcei(alSource[4], AL_LOOPING, AL_FALSE);

	//setting for fourth sound
	alSourcei(alSource[5], AL_BUFFER, alBuffer5);
	alSourcef(alSource[5], AL_GAIN, 1.0f);
	alSourcef(alSource[5], AL_PITCH, 1.0f);
	alSourcei(alSource[5], AL_LOOPING, AL_FALSE);

	if (alGetError() != AL_NO_ERROR) {
		printf("ERROR: setting source\n");
		return 0;
	}
	return 0;
}
Beispiel #12
0
	bool init() {
		return alutInit(NULL, NULL);
	}
Beispiel #13
0
OpenALSampler::OpenALSampler()
{

	ALenum error;

	// Inicializar OpenAL
	alutInit(0, NULL);

	// Clear Error Code (so we can catch any new errors)
	if ((error = alGetError()) != AL_NO_ERROR)
		this->displayOpenALError("alutInit : ", error);

	// Gerar buffers
	alGenBuffers(NUM_BUFFERS, buffers);
	if ((error = alGetError()) != AL_NO_ERROR)
		printf("\nalGenBuffers : %d", error);

	// Carregar arquivos e armazená-los nos buffers
	if (!this->loadWaveBuffer("/dados/data/jabahpureza/audio_samples/sample_papa_fala.wav", buffers[0]))
		alDeleteBuffers(NUM_BUFFERS, buffers);
	if (!this->loadWaveBuffer("/dados/data/jabahpureza/audio_samples/sample_papa_brass02.wav", buffers[1]))
		alDeleteBuffers(NUM_BUFFERS, buffers);
	if (!this->loadWaveBuffer("/dados/data/jabahpureza/audio_samples/cold_sweat_01.wav", buffers[2]))
		alDeleteBuffers(NUM_BUFFERS, buffers);
	if (!this->loadWaveBuffer("/dados/data/jabahpureza/audio_samples/funky_drummer_01.wav", buffers[3]))
		alDeleteBuffers(NUM_BUFFERS, buffers);
	if (!this->loadWaveBuffer("/dados/data/jabahpureza/audio_samples/do_it_to_death_01.wav", buffers[4]))
		alDeleteBuffers(NUM_BUFFERS, buffers);
	if (!this->loadWaveBuffer("/dados/data/jabahpureza/audio_samples/make_it_funky_01.wav", buffers[5]))
        alDeleteBuffers(NUM_BUFFERS, buffers);
	if (!this->loadWaveBuffer("/dados/data/jabahpureza/audio_samples/tony_1.wav", buffers[6]))
		alDeleteBuffers(NUM_BUFFERS, buffers);
	if (!this->loadWaveBuffer("/dados/data/jabahpureza/audio_samples/tony_2.wav", buffers[7]))
		alDeleteBuffers(NUM_BUFFERS, buffers);
	if (!this->loadWaveBuffer("/dados/data/jabahpureza/audio_samples/tony_3.wav", buffers[8]))
		alDeleteBuffers(NUM_BUFFERS, buffers);
	if (!this->loadWaveBuffer("/dados/data/jabahpureza/audio_samples/tony_4.wav", buffers[9]))
        alDeleteBuffers(NUM_BUFFERS, buffers);
	if (!this->loadWaveBuffer("/dados/data/jabahpureza/audio_samples/tony_5.wav", buffers[10]))
		alDeleteBuffers(NUM_BUFFERS, buffers);
	if (!this->loadWaveBuffer("/dados/data/jabahpureza/audio_samples/tony_6.wav", buffers[11]))
		alDeleteBuffers(NUM_BUFFERS, buffers);
	if (!this->loadWaveBuffer("/dados/data/jabahpureza/audio_samples/tony_7.wav", buffers[12]))
		alDeleteBuffers(NUM_BUFFERS, buffers);
	if (!this->loadWaveBuffer("/dados/data/jabahpureza/audio_samples/tony_8.wav", buffers[13]))
		alDeleteBuffers(NUM_BUFFERS, buffers);

	// Generate the sources
	alGenSources(NUM_SOURCES, source);
	if ((error = alGetError()) != AL_NO_ERROR)
	{
		this->displayOpenALError("alGenSources : ", error);
	}

	for (int i=0; i<NUM_SOURCES; i++)
	{
		alSourcei(source[i], AL_BUFFER, buffers[i]);
		if ((error = alGetError()) != AL_NO_ERROR)
			this->displayOpenALError("alSourcei : ", error);
	}

}
Beispiel #14
0
int main()
{
	Context m;
	m.running = true;

	// Register all formats and codecs
	av_register_all();

#ifdef SOUND_OPENAL
	// signal handler
	if (signal(SIGINT, handle_sigint) == SIG_ERR) {
		fprintf(stderr, "Unable to set handler for SIGINT!\n");
		return -1;
	}

	// audio temp buffer
	m._abData = (ALbyte *)malloc(BUFFER_SIZE);
	if (!m._abData) {
		fprintf(stderr, "Out of memory allocating temp buffer!\n");
		return -1;
	}

	// Initialize ALUT with default settings 
	if (alutInit(NULL, NULL) == AL_FALSE) {
		free(m._abData);
		fprintf(stderr, "Could not initialize ALUT (%s)!\n", alutGetErrorString(alutGetError()));
		return -1;
	}
#endif

	// Event Receiver
	EventReceiver receiver;

	// start up the engine
	m.device = createDevice(video::EDT_OPENGL,
		core::dimension2d<u32>(1680,1050), 16, true, // fullscreen
//		core::dimension2d<u32>(1280,800), 16, true, // fullscreen
//		core::dimension2d<u32>(800,600), 16, false,
					 false, false, &receiver);

	m.driver = m.device->getVideoDriver();
	m.scenemgr = m.device->getSceneManager();

	// add a first person shooter style user controlled camera
	m.camera = m.scenemgr->addCameraSceneNodeFPS(0, 100.0f, .3f, -1, 0, 0, true, 3.f);

	// add terrain scene node
	TerrainSceneNode* terrain = new TerrainSceneNode(&m);

	m.origin = terrain->getTerrainCenter();
	resetCamera(&m);

	// File manager listing
	m.filemgr = new FileManagerSceneNode(&m);
	m.filemgr->drop();

	// disable mouse cursor
	m.device->getCursorControl()->setVisible(false);

	u32 frames = 0;
	// draw everything
	while(m.device->run() && m.driver && m.running)
	{
		if (receiver.IsKeyDown(KEY_KEY_Q))
			m.running = false;

		if (receiver.IsKeyDown(KEY_ESCAPE))
			resetCamera(&m);

		core::stringw caption =(L"FPS: ");
		caption += m.driver->getFPS();
		m.device->setWindowCaption(caption.c_str());
		m.driver->beginScene(true, true, video::SColor(255,133,133,133));
		m.scenemgr->drawAll();

		for (u32 i = 0; i != m.cleanup.size(); i++) {
			m.camera->removeAnimator(m.cleanup[i]->anim);
			m.cleanup[i]->anim->drop();
			m.cleanup[i]->drop();
		}
		m.cleanup.clear();

		for (u32 i = 0; i != m.videos.size(); i++) {
			if (m.videos[i]->videoPlayer->psVideostate == Playing) {  // play active 
				if (!m.videos[i]->videoPlayer->refresh()) {  // no more AV 
					m.videos[i]->videoPlayer->goToFrame(0);
				} else {
					m.videos[i]->videoPlayer->drawVideoTexture();
				}
			}
		}

		m.driver->endScene();

		terrain->shift(m.camera);
	}

	// delete device
	m.device->drop();

#ifdef SOUND_OPENAL
	alutExit();
	free(m._abData);
#endif

	return 0;
}
Beispiel #15
0
int main (int argc, char **argv){

#pragma region // --- my init ---
	float pitchnow = 1.0;
	alListener3f(AL_POSITION, 0.0, 0.0, 0.0);

#pragma endregion

#pragma region // --- al init ---
// alut の初期化
	
alutInit (&argc, argv);
  
// Hello World としゃべる音声の作成
ALuint helloBuffer = alutCreateBufferHelloWorld();
ALuint MusicBuffer = alutCreateBufferFromFile(FILENAME);
if(AL_NONE == helloBuffer){std::cerr<<"error:nofile"<<std::endl;exit(1);}
  
// ソースの作成
ALuint helloSource;
alGenSources (1, &helloSource);
ALuint MusicSource;
alGenSources (1, &MusicSource);
  

// ソースにバッファをバインド
alSourcei (helloSource, AL_BUFFER, helloBuffer);
alSourcei (MusicSource, AL_BUFFER, MusicBuffer);
#pragma endregion

  cv::namedWindow("hoge");
  alSourcePlay(MusicSource);
  
  alSource3f(MusicSource, AL_POSITION, 100.0, 0.0, 0.0);
  alSource3f(MusicSource, AL_VELOCITY, 10.0, 0.0, 0.0);

  while(1){
	
	  char key = cv::waitKey(1);
	  if(key=='s'){
		alSourcePlay(helloSource);
		//alutSleep(1);
	  }
	  if(key == 'p'){
		  int state;
		  alGetSourcei(MusicSource, AL_SOURCE_STATE, &state);
		  if(state ==AL_PAUSED)alSourcePlay(MusicSource);
			else alSourcePause(MusicSource);
	  }
	  else if(key == 'q'){
		  std::cout<<"good bye"<<std::endl;
		break;
	  }
	  else if(key == 'u'){
		  pitchnow *= 2;
		  alSourcef(MusicSource, AL_PITCH, pitchnow);
	  }
	  else if(key == 'd'){
		  pitchnow /= 2;
		  alSourcef(MusicSource, AL_PITCH, pitchnow);
	  }

	  // roop
	  int state;
	  alGetSourcei(MusicSource, AL_SOURCE_STATE, &state);
	  if(state != AL_PLAYING) alSourcePlay(MusicSource);
  
  }

  
	#pragma region --- release ---
	  // リソースを開放
	 alSourceStop(helloSource);
  alDeleteSources( 1, &helloSource );
  alDeleteBuffers( 1, &helloBuffer );
	 alSourceStop(MusicSource);
  alDeleteSources( 1, &MusicSource );
  alDeleteBuffers( 1, &MusicBuffer );
  alutExit ();
	#pragma endregion

  return 0;
}
Beispiel #16
0
void boot_init(int* argc, char** argv) {

  int error;

  fail_if(glfwInit() == false);

  // OpenGL version 3
  glfwOpenWindowHint(GLFW_OPENGL_VERSION_MAJOR, 3);
  glfwOpenWindowHint(GLFW_OPENGL_VERSION_MINOR, 0);

  // No window resize
  glfwOpenWindowHint(GLFW_WINDOW_NO_RESIZE, true);
  // 400% gameboy scale, 5 bit rgb with 1 bit alpha, 8 bit z buffer
  fail_if(glfwOpenWindow(160 * 4, 144 * 4, 5, 5, 5, 1, 8, 0, GLFW_WINDOW) == false);

  glfwSetWindowTitle("");

  glfwEnable(GLFW_AUTO_POLL_EVENTS); // Automatically poll input on swap
  glfwSwapInterval(1); // 0: vsync off, 1: vsync on 

  printf("Renderer: %s\n", glGetString(GL_RENDERER));
  printf("GL Version: %s\n", glGetString(GL_VERSION));
  printf("Using GLSL: %s\n", glGetString(GL_SHADING_LANGUAGE_VERSION));

  error = glewInit();

  if (error != GLEW_OK) {
    fprintf(stderr, "GLEW error: %s\n", glewGetErrorString(error));
  }

  printf("GL Extension Wrangler: %s\n", glewGetString(GLEW_VERSION));

  // Load audio
  fail_if(alutInit(argc, argv) == false);

  glClearColor(206.0/255.0, 230.0/255.0, 165.0/255.0, 1.0f);
  glEnable(GL_SCISSOR_TEST); // For geom culling
  
  // transparency
  glEnable(GL_BLEND);
  glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);

  // z-buffer
  glEnable(GL_DEPTH_TEST);
  glDepthFunc(GL_LEQUAL);

  // Set up perspective
  glOrtho(0, 160, 144, 0, -1.0, 1.0);
  glDepthRange(-1.0f, 1.0f);
  glViewport(0, 0, 160 * 4, 144 * 4);

  // This is where Ill put the logo thing
  unsigned logo = bitmap_load("bmp/logo.bmp");
  unsigned logo_vbo;
  float t0, t1, dt;
  float logo_x = 16, logo_y = -80;
  float logo_v[] = {
    0,     0, 0, 1.0 - 0,
    0,   128, 0, 1.0 - 1,
    128, 128, 1, 1.0 - 1,
    128,   0, 1, 1.0 - 0,
  };

  glGenBuffers(1, &logo_vbo);
  glBindBuffer(GL_ARRAY_BUFFER, logo_vbo);
  glBufferData(GL_ARRAY_BUFFER, sizeof(logo_v)*sizeof(float), logo_v, GL_STATIC_DRAW);
 
  Pipeline* logo_program = pipeline_new(
    shader_new(SHADER_VERTEX, "shader/logo.vert"),
    shader_new(SHADER_FRAGMENT, "shader/logo.frag"));

  pipeline_attribute(logo_program, "coord", 0);
  pipeline_attribute(logo_program, "st", 1);
  pipeline_uniform(logo_program, "pos", 0);
  pipeline_uniform(logo_program, "tex", 1);

  glUseProgram(logo_program->id);

  // Bind the logo to texture 0
  glActiveTexture(GL_TEXTURE0);
  glBindTexture(GL_TEXTURE_2D, logo);
  glUniform1i(logo_program->uniform[1], 0);

  // Bind logo vbo
  glBindBuffer(GL_ARRAY_BUFFER, logo_vbo);
  glEnableVertexAttribArray(logo_program->attribute[0]);
  glVertexAttribPointer(logo_program->attribute[0], 2, GL_FLOAT, false, 4*sizeof(float), (void*)0);
  glEnableVertexAttribArray(logo_program->attribute[1]);
  glVertexAttribPointer(logo_program->attribute[1], 2, GL_FLOAT, false, 4*sizeof(float), (void*)(2 * sizeof(float)));

  // load sound
  unsigned sound_source;
  alGenSources(1, &sound_source);
  Sound* ding = sound_load("sound/ding.ogg");

  alSourcei(sound_source, AL_BUFFER, ding->buffer);
  
  glClear(GL_DEPTH_BUFFER_BIT | GL_COLOR_BUFFER_BIT);
  glfwSwapBuffers();

  sleep(1);

  t0 = glfwGetTime();
  while (logo_y < 8) {
    t1 = glfwGetTime();
    dt = t1 - t0;
    t0 = t1;

    logo_y += 50 * dt;

    glClear(GL_DEPTH_BUFFER_BIT | GL_COLOR_BUFFER_BIT);

    glUniform2f(logo_program->uniform[0], roundf(logo_x), roundf(logo_y));

    // Render logo
    glDrawArrays(GL_TRIANGLE_FAN, 0, 4);

    glfwSwapBuffers();
  }

  alSourcePlay(sound_source);

  glDisableVertexAttribArray(logo_program->attribute[0]);
  glDisableVertexAttribArray(logo_program->attribute[1]);

  sleep(1);
}
Beispiel #17
0
void GLApplication::initialize() {
	if (!windowManager
			|| !windowManager->initialize(800, 700, "Window GLFW", false)) {
		this->destroy();
		exit(-1);
	}

	glViewport(0, 0, WindowManager::screenWidth, WindowManager::screenHeight);
	glClearColor(0.2f, 0.2f, 0.2f, 0.0f);

	glEnable(GL_CULL_FACE);
	glEnable(GL_DEPTH_TEST);

	shader.initialize("Shaders/lightingSpecularMap.vs",
			"Shaders/lightingSpecularMap.fs");
	sphere.init();
	sphere.load();

	textureDifuse.load();
	textureSpecular.load();

	alutInit(0, NULL);

	alListenerfv(AL_POSITION, listenerPos);
	alListenerfv(AL_VELOCITY, listenerVel);
	alListenerfv(AL_ORIENTATION, listenerOri);

	alGetError(); // clear any error messages

	if (alGetError() != AL_NO_ERROR) {
		printf("- Error creating buffers !!\n");
		exit(1);
	} else {
		printf("init() - No errors yet.");
	}

	// Generate buffers, or else no sound will happen!
	alGenBuffers(NUM_BUFFERS, buffer);

	buffer[0] = alutCreateBufferFromFile("sounds/lawyer1.wav");
	//buffer[0] = alutCreateBufferHelloWorld();

	alGetError(); /* clear error */
	alGenSources(NUM_SOURCES, source);

	if (alGetError() != AL_NO_ERROR) {
		printf("- Error creating sources !!\n");
		exit(2);
	} else {
		printf("init - no errors after alGenSources\n");
	}

	alSourcef(source[0], AL_PITCH, 1.0f);
	alSourcef(source[0], AL_GAIN, 1.0f);
	alSourcefv(source[0], AL_POSITION, source0Pos);
	alSourcefv(source[0], AL_VELOCITY, source0Vel);
	alSourcei(source[0], AL_BUFFER, buffer[0]);
	alSourcei(source[0], AL_LOOPING, AL_TRUE);
	alSourcef(source[0], AL_MAX_DISTANCE, 1200);

	objModel.loadModel("objects/nanosuit/nanosuit.obj");

	/*alSourcef(source[1], AL_PITCH, 1.0f);
	 alSourcef(source[1], AL_GAIN, 1.0f);
	 alSourcefv(source[1], AL_POSITION, source1Pos);
	 alSourcefv(source[1], AL_VELOCITY, source1Vel);
	 alSourcei(source[1], AL_BUFFER, buffer[1]);
	 alSourcei(source[1], AL_LOOPING, AL_TRUE);

	 alSourcef(source[2], AL_PITCH, 1.0f);
	 alSourcef(source[2], AL_GAIN, 1.0f);
	 alSourcefv(source[2], AL_POSITION, source2Pos);
	 alSourcefv(source[2], AL_VELOCITY, source2Vel);
	 alSourcei(source[2], AL_BUFFER, buffer[2]);
	 alSourcei(source[2], AL_LOOPING, AL_TRUE);*/

}
Beispiel #18
0
int main(int argc, char *argv[])
{
	ALuint buffer[kNumBuffers], source[kNumSources];
	ALuint freq;
	ALenum format;
	ALvoid *data;
	ALsizei i, size;


	/* listener parameters */
	ALfloat listenerOrientation[] = { 0.0f, 0.0f, 1.0f,  0.0f, 1.0f, 0.0f };
	ALfloat listenerPosition[] = { 0.0f, 0.0f, 0.0f };
	ALfloat listenerVelocity[] = { 0.0f, 0.0f, 0.0f };

	/* source parameters */
	ALfloat sourcePosition[] = { 0.0f, 0.0f, 1.0f };
	ALfloat sourceVelocity[] = { 0.0f, 0.0f, 0.0f };
	ALfloat sourcePitch = 1.0f;
	ALfloat sourceGain = 1.0f;



	/* initialize */
	alutInit(&argc, argv);

	/* create buffers and sources */
	if (alGenBuffers(kNumBuffers, buffer) != kNumBuffers)
		quit("Can't create buffers");

	if (alGenSources(kNumSources, source) != kNumSources)
		quit("Can't create sources");

	/* load buffers with data */
	alutLoadWAV(kWaveFileName, &format, &data, &size, &freq);
	for (i = 0; i < kNumBuffers; i++) {
		alBufferData(buffer[i], format, data, size, freq);
	}
	free(data);


	/* initialize listener */
	alListenerfv(AL_POSITION, listenerPosition);
	alListenerfv(AL_VELOCITY, listenerVelocity);
	alListenerfv(AL_ORIENTATION, listenerOrientation);

	/* initialize sources */
	for (i = 0; i < kNumSources; i++) {
		alSourcefv(source[i], AL_POSITION, sourcePosition);
		alSourcefv(source[i], AL_VELOCITY, sourceVelocity);

		alSourcef(source[i], AL_PITCH, sourcePitch);
		alSourcef(source[i], AL_GAIN, sourceGain);

		alSourcei(source[i], AL_BUFFER, buffer[i % kNumBuffers]);
		alSourcei(source[i], AL_LOOPING, AL_TRUE);
	}


	/* test pitch range [0.5, 2.0] */
	printf("Test range\n");
	for (sourcePitch = -1.0f; sourcePitch < 3.0f; sourcePitch += 0.1f) {
		for (i = 0; i < kNumSources; i++) {
			alSourcef(source[i], AL_PITCH, sourcePitch);
			if (alGetError() != AL_NO_ERROR) {
				if (sourcePitch >= 0.5f && sourcePitch <= 2.0f)
					quit("Pitch change failed");
			}
			else {
				if (!(sourcePitch >= 0.5f && sourcePitch <= 2.0f))
					quit("Pitch out of range accepted");
			}
		}
	}

	/* start the sources, pitch shift up, down and stop all */
	printf("Play\n");
	for (i = 0; i < kNumSources; i++) {
		alSourcePlay(source[i]);
	}

	printf("Pitch Up ");
	for (sourcePitch = 0.5f; sourcePitch < 2.0f; sourcePitch += 0.005f) {

		for (i = 0; i < kNumSources; i++)
			alSourcef(source[i], AL_PITCH, sourcePitch);

		printf(".");
		fflush(stdout);

		delay(20);
	}
	delay(2000);
	printf("\n");

	printf("Pitch Down ");
	for (sourcePitch = 2.0f; sourcePitch > 0.5f; sourcePitch -= 0.005f) {

		for (i = 0; i < kNumSources; i++)
			alSourcef(source[i], AL_PITCH, sourcePitch);

		printf(".");
		fflush(stdout);

		delay(20);
	}
	delay(2000);
	printf("\n");


	printf("Stop\n");
	for (i = 0; i < kNumSources; i++)
		alSourceStop(source[i]);


	/* delete buffers and sources */
	alDeleteSources(kNumSources, source);
	alDeleteBuffers(kNumBuffers, buffer);

	/* shutdown */
	alutExit();

	return 0;
}
Beispiel #19
0
OpenALSampler::OpenALSampler()
{

	ALenum error;

	// Inicializar OpenAL

	alutInit(0, NULL);
	// Clear Error Code (so we can catch any new errors)
	if ((error = alGetError()) != AL_NO_ERROR)
		this->displayOpenALError("alutInit : ", error);

	// Gerar buffers
	alGenBuffers(NUM_BUFFERS, buffers);
	if ((error = alGetError()) != AL_NO_ERROR)
		printf("\nalGenBuffers : %d", error);

	// Carregar arquivos e armazená-los nos buffers
	if (!this->loadWaveBuffer("/dados/jabahpureza/audio_samples/sample_papa_fala.wav", buffers[0]))
		alDeleteBuffers(NUM_BUFFERS, buffers);
	if (!this->loadWaveBuffer("/dados/jabahpureza/audio_samples/sample_papa_brass02.wav", buffers[1]))
		alDeleteBuffers(NUM_BUFFERS, buffers);
	if (!this->loadWaveBuffer("/dados/jabahpureza/audio_samples/cold_sweat_02.wav", buffers[2]))
		alDeleteBuffers(NUM_BUFFERS, buffers);
	if (!this->loadWaveBuffer("/dados/jabahpureza/audio_samples/cold_sweat_01.wav", buffers[3]))
		alDeleteBuffers(NUM_BUFFERS, buffers);
	if (!this->loadWaveBuffer("/dados/jabahpureza/audio_samples/funky_drummer_01.wav", buffers[4]))
		alDeleteBuffers(NUM_BUFFERS, buffers);
	if (!this->loadWaveBuffer("/dados/jabahpureza/audio_samples/do_it_to_death_01.wav", buffers[5]))
		alDeleteBuffers(NUM_BUFFERS, buffers);
	if (!this->loadWaveBuffer("/dados/jabahpureza/audio_samples/give_it_up_or_turnit_a_loose_01.wav", buffers[6]))
		alDeleteBuffers(NUM_BUFFERS, buffers);
	if (!this->loadWaveBuffer("/dados/jabahpureza/audio_samples/i_dont_want_nobody_to_give_me_nothing_01.wav", buffers[7]))
		alDeleteBuffers(NUM_BUFFERS, buffers);
	if (!this->loadWaveBuffer("/dados/jabahpureza/audio_samples/i_dont_want_nobody_to_give_me_nothing_03.wav", buffers[8]))
		alDeleteBuffers(NUM_BUFFERS, buffers);
	if (!this->loadWaveBuffer("/dados/jabahpureza/audio_samples/super_bad_01.wav", buffers[9]))
		alDeleteBuffers(NUM_BUFFERS, buffers);
	if (!this->loadWaveBuffer("/dados/jabahpureza/audio_samples/i_got_a_feeling_01.wav", buffers[10]))
		alDeleteBuffers(NUM_BUFFERS, buffers);
	if (!this->loadWaveBuffer("/dados/jabahpureza/audio_samples/make_it_funky_01.wav", buffers[11]))
		alDeleteBuffers(NUM_BUFFERS, buffers);
	if (!this->loadWaveBuffer("/dados/jabahpureza/audio_samples/papa_dont_take_no_mess_01.wav", buffers[12]))
		alDeleteBuffers(NUM_BUFFERS, buffers);
	if (!this->loadWaveBuffer("/dados/jabahpureza/audio_samples/bootsy_01.wav", buffers[13]))
		alDeleteBuffers(NUM_BUFFERS, buffers);
	if (!this->loadWaveBuffer("/dados/jabahpureza/audio_samples/sample_ataque_give_it_up_or_turnit_a_loose.wav", buffers[14]))
		alDeleteBuffers(NUM_BUFFERS, buffers);
	if (!this->loadWaveBuffer("/dados/jabahpureza/audio_samples/sample_clap_your_hand.wav", buffers[15]))
		alDeleteBuffers(NUM_BUFFERS, buffers);
	if (!this->loadWaveBuffer("/dados/jabahpureza/audio_samples/sample_clap_your_hand_com_batera.wav", buffers[16]))
		alDeleteBuffers(NUM_BUFFERS, buffers);

	// Generate the sources
	alGenSources(NUM_SOURCES, source);
	if ((error = alGetError()) != AL_NO_ERROR)
	{
		this->displayOpenALError("alGenSources : ", error);
	}

	for (int i=0; i<NUM_SOURCES; i++)
	{
		alSourcei(source[i], AL_BUFFER, buffers[i]);
		if ((error = alGetError()) != AL_NO_ERROR)
			this->displayOpenALError("alSourcei : ", error);
	}

}
void COpenALSoundUtility::Init()
{
	// hook into LUA
	m_LuaState = NULL;

	static DWORD msgHash_GetMasterScriptState = CHashString(_T("GetMasterScriptState")).GetUniqueID();
	if(m_ToolBox->SendMessage(msgHash_GetMasterScriptState, sizeof(lua_State *), &m_LuaState) == MSG_HANDLED)
	{
		// register our additional structures/handlers with LUA master
		tolua_OpenALLua_open(m_LuaState);
	}
	else
	{
		StdString error;
		error = _T("Error missing Master Script State Data\n");

		// log error
		EngineGetToolBox()->SetErrorValue(WARN_INVALID_OPERATION);
		EngineGetToolBox()->Log(LOGWARNING, error);
    }

	// this needs to be a message and stripped out of here....
#ifdef _WIN32
	// create invisible dummy sound window for DirectSound
	m_hWndSound = CreateWindowEx(0, "STATIC", "OpenALSoundWindow", 
		WS_OVERLAPPEDWINDOW,
		CW_USEDEFAULT,
		CW_USEDEFAULT,
		CW_USEDEFAULT,
		CW_USEDEFAULT,
		HWND_MESSAGE,
		(HMENU)NULL,
		NULL,
		NULL);

	if (m_hWndSound == NULL)
	{
		m_ToolBox->Log(LOGWARNING, _T("Unable to create sound window\n"));
	}
	else
	{
		SetForegroundWindow(m_hWndSound);
	}
#endif

	// Tell sound system to Start Up (default sound settings, so null is passed)
	ALboolean initResult = alutInit(NULL, NULL);

	if ( initResult == AL_FALSE )
	{
		// error initalizing OpenAL
		m_ToolBox->SetErrorValue(ERR_NULL_POINTER);
		m_ToolBox->Log(LOGWARNING, _T("Sound manager: error initalizing sound: %s\n"), alutGetErrorString(alutGetError()));
		return;
	}

	ALenum err;

	m_bInitialized = true;

	m_iMaxNumSources = MAX_SOURCES;
	bool bSourcesGenerated = false;

	do
	{
		m_SoundSources = new ALuint[m_iMaxNumSources];		
		
		alGenSources(m_iMaxNumSources, m_SoundSources);
		err = alGetError();
		if (err != AL_NO_ERROR)
		{
			delete [] m_SoundSources;
			m_SoundSources = NULL;

			// try decrementing the max number
			m_iMaxNumSources -= 4;
			if (m_iMaxNumSources <= 0)
			{
				m_ToolBox->SetErrorValue(ERR_NULL_POINTER);
				m_ToolBox->Log( LOGERROR, _T("Sound manager error: can't generate audio sources: %s\n"), GetALErrorString(err));						
				break;
			}
		}
		else
		{
			bSourcesGenerated = true;
		}
	}while (!bSourcesGenerated);

	// load up free sources
	if (m_SoundSources != NULL)
	{
		for (UINT i=0; i<m_iMaxNumSources; i++)
		{
			m_FreeSources.push_back(m_SoundSources[i]);
		}
	}

	// ensure default position for listener
	ALfloat position[3] = { (ALfloat)0.0f,
							(ALfloat)0.0f,
							(ALfloat)0.0f };

	ALfloat ori[] = { -1.0, 0.0, 0.0,  0.0, 0.0, 1.0 };

	alListenerfv(AL_POSITION, position);
	alListenerfv(AL_ORIENTATION, ori);

	// set distance model for 3d sounds
	alDistanceModel(AL_INVERSE_DISTANCE_CLAMPED);

	// check if init of listener and distance model threw errors
	err = alGetError();
	if (err != AL_NO_ERROR) 
	{
		m_ToolBox->SetErrorValue(ERR_NULL_POINTER);
		m_ToolBox->Log( LOGWARNING, _T("Sound manager: OpenAL problem setting up OpenAL distance model: %s\n"), GetALErrorString(err));
		return;
	}

	alSpeedOfSound(343.3f * m_fSoundScale);
	err = alGetError();
	if (err != AL_NO_ERROR) 
	{
		m_ToolBox->SetErrorValue(ERR_NULL_POINTER);
		m_ToolBox->Log( LOGWARNING, _T("Sound manager: OpenAL problem setting up OpenAL speed of sound: %s\n"), GetALErrorString(err));
		return;
	}

	alDopplerFactor(m_fGlobalDopplerFactor * m_fSoundScale);
	err = alGetError();
	if (err != AL_NO_ERROR) 
	{
		m_ToolBox->SetErrorValue(ERR_NULL_POINTER);
		m_ToolBox->Log( LOGWARNING, _T("Sound manager: OpenAL problem setting up OpenAL doppler factor: %s\n"), GetALErrorString(err));
		return;
	}	
}
/*!
 * VorbitalDlg creator
 */
VorbitalDlg::VorbitalDlg( )
{
    qDebug() << "VorbitalDlg Create.";
	_done = false;
	// OpenAL Initialization
#ifdef WIN32
	alutInit(NULL, 0);
#else
    _device = alcOpenDevice(NULL);
    _context = alcCreateContext(_device, NULL);
    alcMakeContextCurrent(_context);
#endif
	alGetError();
	// Initialize position of the Listener.
	ALfloat ListenerPos[] = { 0.0, 0.0, 0.0 };
	// Velocity of the Listener.
	ALfloat ListenerVel[] = { 0.0, 0.0, 0.0 };
	// Orientation of the Listener. (first 3 elements are "at", second 3 are "up")
	// Also note that these should be units of '1'.
	ALfloat ListenerOri[] = { 0.0, 0.0, -1.0,  0.0, 1.0, 0.0 };
	alListenerfv(AL_POSITION,    ListenerPos);
	alListenerfv(AL_VELOCITY,    ListenerVel);
	alListenerfv(AL_ORIENTATION, ListenerOri);

	_listPosition = 0;
	_musicStream = NULL;
    _btnBrowse = NULL;
    _btnBrowseFolder = NULL;
    _btnPlay = NULL;
	_btnStop = NULL;
	_btnPause = NULL;
	_btnForward = NULL;
	_btnReverse = NULL;
    _btnClear = NULL;
	_btnRemove = NULL;
	_btnSettings = NULL;
	_btnAbout = NULL;
	_btnRandomize = NULL;
    _txtSampleRate = NULL;
    _txtVersion = NULL;
    _txtBitRate = NULL;
    _txtChannels = NULL;
	_txtComment = NULL;
	_txtTime = NULL;
    _volumeSlider = NULL;
    _timeElapsed = 0;
    qDebug() << "Setting VorbitalDlg play state to STOPPED.";
	_playState = STOPPED;
	_incrementNeeded = true;
    _randomize = false;
	_menuDoubleClicked = false;
	srand((unsigned)time(0));
    CreateControls();
	LoadSettings();
    QIcon icon("vorbital.ico");
	setWindowIcon(icon);
    setWindowTitle("Vorbital Player");
	// Start up the playlist thread.
    _playlistThread = new PlaylistThread(this);
	_playlistThread->start();
}
int main( int argc, char **argv )
{
	const _SizeType population_size = 10, genome_size = 4*16, chromosome_size = 1;
	const double mutation_rate = 0.05;
	const long rand_seed = time( NULL );

	_GeneticProcess::Descriptor descriptor( population_size, mutation_rate, rand_seed, _Genome::Descriptor( genome_size, _Chromosome::Descriptor( chromosome_size ) ) );

	_GeneticProcess process( descriptor );

	process.initializePopulation();
	process.evaluatePopulation();
	process.printPopulation();

	if ( !alutInit( &argc, argv ) ) reportError();

	alGenSources( 1, &sound_source_ );

	loadPopulationIntoBuffer( process.population() );

	_SizeType generation_counter = 0;

	alSourcePlay( sound_source_ );
	int num_buffers_processed, num_buffers_queued;
	do
	{
		alGetSourcei( sound_source_, AL_BUFFERS_PROCESSED, &num_buffers_processed );
		alGetSourcei( sound_source_, AL_BUFFERS_QUEUED, &num_buffers_queued );

		printf( "%i/%i:%u\n", num_buffers_processed, num_buffers_queued, generation_counter );

		// each time we process a buffer, unqueue the most recently processed buffer
		// and queue up the buffer for the next item in the filenames list
		if ( num_buffers_processed > 0 )
		{
			// unload the front buffer
			ALuint buffer[num_buffers_processed];
			alSourceUnqueueBuffers( sound_source_, num_buffers_processed, &buffer[0] );

			// delete this buffer since we can't reuse them nicely
			alDeleteBuffers( num_buffers_processed, &buffer[0] );

			// add the next file to the queue
			// checkAndQueueBuffer( createBufferFromFile( filenames_.getFrontAdvance() ) );

			if ( num_buffers_queued <= 50 )
			{
				++generation_counter;
				process.step();
				process.evaluatePopulation();
				loadPopulationIntoBuffer( process.population() );
				process.printPopulation();
			}
		}

		alutSleep( 1 );
	}
	while ( num_buffers_queued > 0 && generation_counter < 15 );

	process.evaluatePopulation();

	process.printPopulation();

	process.evaluatePopulation();

	if ( !alutExit() )
	{
		reportError();
	}
	return EXIT_SUCCESS;
}
Beispiel #23
0
/*
 * This initialization function is just to make it easier to manually edit the 'to-be-loaded' font list.
 * In the future, FontMan should read from some kind of resource file so we don't need to specify these by
 * hand
 */
void AudioManager::init() {
  alutInit(0, NULL);
  sound_names_.push_back(std::string("res/sounds/starshipmono.wav"));
  load_sounds();
}
	SimpleAudioEngine::SimpleAudioEngine()
	{
		alutInit(0, 0);
	}
Beispiel #25
0
struct SoundManager newSoundManager(struct Settings* settings)
{
    int i;
    struct SoundManager sm;
    sm.settings = settings;
    alutInit(NULL, 0);
    if(alGetError() != AL_NO_ERROR)
    {
        printf("newSoundManager: cannot initalize ALUT");
        return sm;
    }

    alGenBuffers(SOUND_COUNT, sm.buffers);
    alGenSources(SOUND_SOURCE_COUNT, sm.sources);

    char filenames[SOUND_COUNT][256] =
    {
        "music.wav",
        "click.wav",
        "crash.wav",
        "engine.wav"
    };

    ALfloat zeroVector[3]  = {0.0, 0.0, 0.0};
    ALfloat zeroVector6[6] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0};

    for(i=0;i<SOUND_COUNT;i++)
    {
        ALenum format;
        ALsizei size;
        ALvoid* data;
        ALsizei freq;
        ALboolean loop;

        alutLoadWAVFile(filenames[i], &format, &data, &size, &freq, &loop);
        alBufferData(sm.buffers[i], format, data, size, freq);
        alutUnloadWAV(format, data, size, freq);
    }

    for(i=0;i<SOUND_SOURCE_COUNT;i++)
    {
        if(SOUND_SOURCE_ENGINE1 == i || SOUND_SOURCE_ENGINE2 == i)
            alSourcei (sm.sources[i], AL_BUFFER,   sm.buffers[SOUND_ENGINE]);
        else
            alSourcei (sm.sources[i], AL_BUFFER,   sm.buffers[i]);
        alSourcef (sm.sources[i], AL_PITCH,    1.0);
        if(SOUND_SOURCE_MUSIC == i)
            alSourcef (sm.sources[i], AL_GAIN, settings->musicVolmue / 100.0);
        else
            alSourcef (sm.sources[i], AL_GAIN, settings->fxVolmue / 100.0);
        alSourcefv(sm.sources[i], AL_POSITION, zeroVector);
        alSourcefv(sm.sources[i], AL_VELOCITY, zeroVector);
        if(SOUND_SOURCE_CLICK == i || SOUND_SOURCE_CRASH == i)
            alSourcei (sm.sources[i], AL_LOOPING,  AL_FALSE);
        else
            alSourcei (sm.sources[i], AL_LOOPING,  AL_TRUE);
    }

    alListenerfv(AL_POSITION,    zeroVector);
    alListenerfv(AL_VELOCITY,    zeroVector);
    alListenerfv(AL_ORIENTATION, zeroVector6);

    return sm;
}
Beispiel #26
0
int main(int argc, char *argv[])
{
	ALenum format;
	ALsizei size, freq;
	ALvoid *data;


	/* setup camera position and orientation */
	cameraAngle = 0.0f;
	
	cameraPosition[0] = 0.0f;
	cameraPosition[1] = 0.8f;
	cameraPosition[2] = 0.0f;

	cameraOrientation[0] = cos(2.0 * M_PI * cameraAngle / 360.0);
	cameraOrientation[1] = 0.0f;
	cameraOrientation[2] = sin(2.0 * M_PI * cameraAngle / 360.0);
	
	cameraOrientation[3] = 0.0f;
	cameraOrientation[4] = 1.0f;
	cameraOrientation[5] = 0.0f;


	/* setup radar and phase position */
	radarPosition[0] = 5.0f;
	radarPosition[1] = 0.0f;
	radarPosition[2] = 0.0f;
	
	phaserPosition[0] = 2.0f;
	phaserPosition[1] = 0.0f;
	phaserPosition[2] = 0.0f;

	radarLightAngle = 0.0f;
	phaserPlaying = AL_FALSE;


	/* initialize GLUT */
	glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE);
	glutInitWindowPosition(200, 100);
	glutInitWindowSize(320, 240);
	glutCreateWindow("XL Demo");
	
	glutDisplayFunc(display);
	glutKeyboardFunc(keyboard);
	glutSpecialFunc(special);
	glutReshapeFunc(reshape);
	glutIdleFunc(idle);

	glEnable(GL_CULL_FACE);

	
	/* initialize ALUT */
	alutInit(&argc, argv);


   	/* set up the buffers */
   	alGenBuffers(1, &radarBuffer);
   	alGenBuffers(1, &phaserBuffer);
   	
   	alutLoadWAV(kRadarFileName, &format, &data, &size, &freq);
   	alBufferData(radarBuffer, format, data, size, freq);
	free(data);

   	alutLoadWAV(kPhaserFileName, &format, &data, &size, &freq);
   	alBufferData(phaserBuffer, format, data, size, freq);
	free(data);


   	/* set up the sources */
   	alGenSources(1, &radarSource);
   	alGenSources(1, &phaserSource);

	alSourcefv(radarSource, AL_POSITION, radarPosition);
	alSourcef(radarSource, AL_GAIN, 1.0f);
	alSourcef(radarSource, AL_PITCH, 1.0f);
	alSourcei(radarSource, AL_BUFFER, radarBuffer);
	alSourcei(radarSource, AL_LOOPING, AL_TRUE);
	
	alSourcefv(phaserSource, AL_POSITION, phaserPosition);
	alSourcef(phaserSource, AL_GAIN, 1.0f);
	alSourcef(phaserSource, AL_PITCH, 1.0f);
	alSourcei(phaserSource, AL_BUFFER, phaserBuffer);
	alSourcei(phaserSource, AL_LOOPING, AL_FALSE);

	/* start the radar */
	alSourcePlay(radarSource);


	/* GLUT event loop */
	glutMainLoop();
	
	
	/* shutdown alut */
	alutExit();

	return 0;
}
// virtual
bool LLAudioEngine_OpenAL::init(const S32 num_channels, void* userdata)
{
	mWindGen = NULL;
	LLAudioEngine::init(num_channels, userdata);

	if (!alutInit(NULL, NULL))
	{
		llwarns << "LLAudioEngine_OpenAL::init() ALUT initialization failed: " << alutGetErrorString (alutGetError ()) << llendl;
		return false;
	}

	// check for extensions
	const ALCchar* device_list(NULL);
	const ALCchar* device_default(NULL);
	if (alcIsExtensionPresent(NULL, "ALC_ENUMERATION_EXT") == AL_TRUE)
	{
		device_default = alcGetString(NULL, ALC_DEFAULT_DEVICE_SPECIFIER);
		device_list = alcGetString(NULL, ALC_DEVICE_SPECIFIER);
		llinfos << "Results for ALC_ENUMERATION_EXT:\n" 
				<< ll_safe_string(device_list)
				<< llendl;

	}

	// initialize device
    ALCdevice* mDevice = alcOpenDevice(NULL); 
    if (mDevice == NULL)
	{
		llinfos << "Could not find a default device, trying to open default manually: " 
				<< ll_safe_string(device_default) 
				<< llendl;
		mDevice = alcOpenDevice(device_default);
		if (mDevice == NULL)
		{
			const ALCchar* device_list_walk = device_list;
			do
			{
				mDevice = alcOpenDevice(device_list_walk);
				if (mDevice != NULL)
				{
					break;
				}
				else
				{
					device_list_walk += strlen(device_list_walk)+1;
				}
			}
			while (device_list_walk[0] != '\0');

			if (mDevice == NULL)
			{
				llinfos << "OpenAL could not find an installed audio device. Aborting" << llendl;
				ALCenum error = alcGetError(mDevice);
				if (error != ALC_NO_ERROR)
				{
					llinfos << "ALC error: " << ll_safe_string(alcGetString(mDevice, error)) << llendl;
				}
				return false;
			}
		}
	}

	// create context
	ALCcontext* mContext = alcCreateContext(mDevice, NULL);
	if (mContext != NULL)
	{
		if (!alcMakeContextCurrent(mContext))
		{
			ALenum error = alGetError();
			if (error != AL_NO_ERROR)
			{
				llinfos << "ALC error: " << convertALErrorToString(error) << ". Could not set current context!" << llendl;
			}
			alcDestroyContext(mContext);
			return false;
		}
	}
	else
	{
		llinfos << "ALC error: could not create context from device!" << llendl;
		alcCloseDevice(mDevice);
		return false;
	}

	llinfos << "LLAudioEngine_OpenAL::init() OpenAL successfully initialized" << llendl;

	llinfos << "ALC default device: " 
			<< ll_safe_string(alcGetString(mDevice, ALC_DEFAULT_DEVICE_SPECIFIER)) 
			<< llendl;

	llinfos << "OpenAL version: "
		<< ll_safe_string(alGetString(AL_VERSION)) << llendl;
	llinfos << "OpenAL vendor: "
		<< ll_safe_string(alGetString(AL_VENDOR)) << llendl;
	llinfos << "OpenAL renderer: "
		<< ll_safe_string(alGetString(AL_RENDERER)) << llendl;

	ALint major = alutGetMajorVersion();
	ALint minor = alutGetMinorVersion();
	llinfos << "ALUT version: " << major << "." << minor << llendl;

	alcGetIntegerv(mDevice, ALC_MAJOR_VERSION, 1, &major);
	alcGetIntegerv(mDevice, ALC_MINOR_VERSION, 1, &minor);
	llinfos << "ALC version: " << major << "." << minor << llendl;

	return true;
}
Beispiel #28
0
/* ‘ункци¤ инициализации объекта анимации.
 * ј–√”ћ≈Ќ“џ:
 *   - указатель на "себ¤" - сам объект анимации:
 *       ok2UNIT_CUBE *Unit;
 *   - указатель на контекст анимации:
 *       ok2ANIM *Ani;
 * ¬ќ«¬–јўј≈ћќ≈ «Ќј„≈Ќ»≈: Ќет.
 */
static VOID CubeUnitInit( ok2UNIT_CUBE *Unit, ok2ANIM *Ani )
{
  INT format;
  UINT size, freq;
  VOID *mem;
  CHAR loop;

  alutInit(NULL, 0);
  alGetError();

  /* создаем буфера */
  alGenBuffers(2, Unit->SndBuf);

  /* загружаем звук в буфер */
  alutLoadWAVFile("a.wav", &format, &mem,
    &size, &freq, &loop);
  alBufferData(Unit->SndBuf[0], format, mem, size, freq);
  alutUnloadWAV(format, mem, size, freq);

  alutLoadWAVFile("a.wav", &format, &mem,
    &size, &freq, &loop);
  alBufferData(Unit->SndBuf[1], format, mem, size, freq);
  alutUnloadWAV(format, mem, size, freq);

  /* создаем источники звука и параметризируем их */
  alGenSources(2, Unit->SndSrc);

  alSourcei(Unit->SndSrc[0], AL_BUFFER, Unit->SndBuf[0]); /* закрепл¤ем буфер за источником */
  alSourcef(Unit->SndSrc[0], AL_PITCH, 0.5);      /* скорость воспроизведени¤: 1.0 - обычна¤*/
  alSourcef(Unit->SndSrc[0], AL_GAIN, 0.1);          /* громкость: 1.0 Ц обычна¤ */
  alSourcei(Unit->SndSrc[0], AL_LOOPING, 1);       /* флаг повтора: 0 Ц нет, 1 Ц бесконечно */

  alSourcei(Unit->SndSrc[1], AL_BUFFER, Unit->SndBuf[1]);
  alSourcef(Unit->SndSrc[1], AL_PITCH, 1.5);
  alSourcef(Unit->SndSrc[1], AL_GAIN, 0.1);
  alSourcei(Unit->SndSrc[1], AL_LOOPING, 0);
  //OK2_GeomLoad(&Unit->Geom, ".object");
  /*
  OK2_GeomLoad(&Unit->Geom[0], "imac\\imac.object");
  Unit->Scale[0] = 50.0;

  OK2_GeomLoad(&Unit->Geom[1], "Mustang\\Mustang.object"); 
  Unit->Scale[1] = 0.005;

  OK2_GeomLoad(&Unit->Geom[2], "Avent\\Avent.object");
  Unit->Scale[2] = 1.0;

  OK2_GeomLoad(&Unit->Geom[4], "Houses\\house1.object"); 
  Unit->Scale[4] = 1.0;

  OK2_GeomLoad(&Unit->Geom[5], "x6\\x6.object");  
  Unit->Scale[5] = 3.0;
  */
  OK2_GeomLoad(&Unit->Geom[3], "BMW_M3_GTR\\BMW_M3_GTR.object");    
  Unit->Scale[3] = 0.001;
  /*
  OK2_GeomLoad(&Unit->Geom[3], "MINICOOPER\\mini_obj.object");    
  Unit->Scale[3] = 0.001;
  */   
  /*
  OK2_GeomLoad(&Unit->Geom[3], "mord_fustang\\Shelby7..object");    
  Unit->Scale[3] = 0.001;
  */
} /* End of 'CubeUnitInit' function */
Beispiel #29
0
 void soundInit() {
     alutInit (NULL, NULL);
 }
Beispiel #30
0
void InitGL( void )//__BEGIN_INIT__@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
{
        //==========================================================================
        #ifdef WIN32
            #include "cpp/setPixelFormat.cpp"
            #include "headerFiles/glext_Init_B.cpp"
            alutInit(NULL, 0);
            //-------------------------------------
            SetVSyncState(true);
            //-------------------------------------
            PassMouseMovement[0]        = rotateModelWithLeftMouse[0];
            PassMouseMovement[1]        = rotateModelWithLeftMouse[1];
        

        //=================
        #endif
                   
//################################################################################################################################
/*
        #ifdef __APPLE__
        
                if(sound_API_selector == 0)
                {
                        #include "AUDIO/openAL_iOS/openAL_iOS_Init.cpp"
                }        
                if(sound_API_selector == 1)
                {        
                        //#include "AUDIO/fMod_iOS/fMod_iOS_Init.cpp" //_____found_in_EAGLView
                }
        
        #endif
        //=========================================================
        #ifdef WIN32
                
                if(sound_API_selector == 0)
                {
                        #include "AUDIO/openAL_WIN/openAL_WIN_Init.cpp"
                }
                
                if(sound_API_selector == 1)
                {    
                        #include "AUDIO/fMod_WIN/fMod_WIN_Init.cpp"
                }
        
        #endif
*/
//###########################################################################################################################################
         
#ifdef WIN32        
        //===================================================================================================
        glGenTextures(1, &m_uiShadowMapTexture);
	    glBindTexture(GL_TEXTURE_2D, m_uiShadowMapTexture);
        //-------------------------------------------------
        glTexImage2D(GL_TEXTURE_2D, 0, GL_DEPTH_COMPONENT, (GLsizei)viewWidth, (GLsizei)viewHeight, 0, GL_DEPTH_COMPONENT,  GL_UNSIGNED_INT,  NULL);
        glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
	    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
	    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
	    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
        //------------------------------------------------------------------
	    glGenFramebuffers(1, &m_uiFrameBufferObject);
	    glBindFramebuffer(GL_FRAMEBUFFER, m_uiFrameBufferObject);
        //---------------------
        glDrawBuffer(GL_NONE);//_ON_SOME_MACHINES_THIS_IS_REQUIRED / ON_SOME_IT_FAILS
        glReadBuffer(GL_NONE);//_SAME_AS_ABOVE
	    //---------------------
        glFramebufferTexture2D(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_TEXTURE_2D, m_uiShadowMapTexture, 0);     
        glBindFramebuffer(GL_FRAMEBUFFER, 0);        
        //====================================================================================================
#endif
        
//==================================================================================================================================================        

#ifdef __APPLE__
        //====================================================================================================
        glGenTextures(1, &m_uiShadowMapTexture);
	    glBindTexture(GL_TEXTURE_2D, m_uiShadowMapTexture);
        //-------------------------------------------------
	    glTexImage2D(GL_TEXTURE_2D, 0, GL_DEPTH_COMPONENT, 2000, 1000, 0, GL_DEPTH_COMPONENT, GL_UNSIGNED_INT, 0);
        glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
	    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
	    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
	    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
        //------------------------------------------------------------------
	    glGenFramebuffers(1, &m_uiFrameBufferObject);
	    glBindFramebuffer(GL_FRAMEBUFFER, m_uiFrameBufferObject);
        //---------------------
        glFramebufferTexture2D(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_TEXTURE_2D, m_uiShadowMapTexture, 0);     
        glBindFramebuffer(GL_FRAMEBUFFER, 0);        
        //====================================================================================================
 #endif

//###########################################################################################################################################        
        
      eyeposition[0] =  eyeStartPosition[0];
      eyeposition[1] =  eyeStartPosition[1];
      eyeposition[2] =  eyeStartPosition[2];



#include "INITIALIZE.cpp"

        
//====================================================================================================================================
    
#ifdef WIN32   
        atexit(KillALData);//__tell_openAL_to_run_KillALData_function_at_shutdown 
#endif    
        
        glEnable(GL_DEPTH_TEST);
    //glDepthFunc(GL_LEQUAL);
    glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
    //glAlphaFunc(GL_GREATER, 0.1);
    glEnable(GL_CULL_FACE);
    glCullFace(GL_BACK);
        
//====================================================================================================================================

    



}//__END_INIT__@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@