Ajouts de musique et irrKlang.
This commit is contained in:
		
							
								
								
									
										135
									
								
								SQCSim2021/external/irrKlang-1.6.0/examples/05.Effects/main.cpp
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										135
									
								
								SQCSim2021/external/irrKlang-1.6.0/examples/05.Effects/main.cpp
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,135 @@ | ||||
| // This example will show how to use sound effects such as echo, reverb and distortion. | ||||
| // irrKlang supports the effects Chorus, Compressor, Distortion, Echo, Flanger | ||||
| // Gargle, 3DL2Reverb, ParamEq and WavesReverb. | ||||
|  | ||||
| // Lets start: include the irrKlang headers and other input/output stuff | ||||
| // needed to print and get user input from the console. And as exlained | ||||
| // in the first tutorial, we use the namespace irr and audio and | ||||
| // link to the irrKlang.dll file. | ||||
| #if defined(WIN32) | ||||
| 	#include <conio.h> | ||||
| #else | ||||
| 	#include "../common/conio.h" | ||||
| #endif | ||||
|  | ||||
| #include <stdio.h> | ||||
| #include <stdlib.h> | ||||
| #include <irrKlang.h> | ||||
| using namespace irrklang; | ||||
|  | ||||
| #pragma comment(lib, "irrKlang.lib") // link with irrKlang.dll | ||||
|  | ||||
|  | ||||
| // Now let's start with the irrKlang 3D sound engine example 05, | ||||
| // demonstrating sound effects. Simply startup the engine using | ||||
| // using createIrrKlangDevice() with default options/parameters. | ||||
| int main(int argc, const char** argv) | ||||
| { | ||||
| 	// start the sound engine with default parameters | ||||
| 	ISoundEngine* engine = createIrrKlangDevice(); | ||||
|  | ||||
| 	if (!engine) | ||||
| 		return 0; // error starting up the engine | ||||
|  | ||||
| 	// we play a .xm file as music here. Note that the last parameter  | ||||
| 	// named 'enableSoundEffects' has been set to 'true' here. If this | ||||
| 	// is not done, sound effects cannot be used with this sound. | ||||
| 	// After this, we print some help text and start a loop which reads | ||||
| 	// user keyboard input. | ||||
| 	 | ||||
| 	const char* filename = "../../media/MF-W-90.XM"; | ||||
|  | ||||
| 	#ifdef __BIG_ENDIAN__ | ||||
| 		filename = "../../media/ophelia.mp3"; // no xm playback on power pcs currently | ||||
| 	#endif | ||||
| 	 | ||||
| 	ISound* music = engine->play2D(filename, | ||||
| 		true, false, true, ESM_AUTO_DETECT, true); | ||||
|  | ||||
| 	// Print some help text and start the display loop | ||||
|  | ||||
| 	printf("\nSound effects example. Keys:\n"); | ||||
| 	printf("\nESCAPE: quit\n"); | ||||
| 	printf("w: enable/disable waves reverb\n"); | ||||
| 	printf("d: enable/disable distortion\n"); | ||||
| 	printf("e: enable/disable echo\n"); | ||||
| 	printf("a: disable all effects\n"); | ||||
|  | ||||
| 	while(true) // endless loop until user exits | ||||
| 	{ | ||||
| 		int key = getch(); | ||||
|  | ||||
| 		if (key == 27) | ||||
| 			break; // user pressed ESCAPE key | ||||
| 		else | ||||
| 		{ | ||||
| 			// user maybe pressed an effects key, | ||||
| 			// now enable or disable a sound effect. | ||||
|  | ||||
| 			// We get a pointer to the ISoundEffectControl interface, | ||||
| 			// but this only exists if the sound driver supports sound effects | ||||
| 			// and if the sound was started setting the 'enableSoundeffects' flag | ||||
| 			// to 'true' as we did above. This pointer is only valid as long as | ||||
| 			// we don't call music->drop() and delete the music with this. | ||||
|  | ||||
| 			ISoundEffectControl* fx = 0; | ||||
| 			if (music) | ||||
| 				fx = music->getSoundEffectControl(); | ||||
|  | ||||
| 			if (!fx) | ||||
| 			{ | ||||
| 				// some sound devices do not support sound effects. | ||||
| 				printf("This device or sound does not support sound effects.\n"); | ||||
| 				continue; | ||||
| 			}	 | ||||
|  | ||||
| 			// here we disable or enable the sound effects of the music depending | ||||
| 			// on what key the user pressed. Note that every enableXXXSoundEffect() | ||||
| 			// method also accepts a lot of parameters, so it is easily possible | ||||
| 			// to influence the details of the effect. If the sound effect is  | ||||
| 			// already active, it is also possible to simply call the  | ||||
| 			// enableXXXSoundEffect() method again to just change the effect parameters, | ||||
| 			// although we aren't doing this here. | ||||
|  | ||||
| 			if (key < 'a') // make key lower | ||||
| 				key += 'a' - 'A'; | ||||
|  | ||||
| 			switch(key) | ||||
| 			{ | ||||
| 			case 'd': | ||||
| 				if (fx->isDistortionSoundEffectEnabled()) | ||||
| 					fx->disableDistortionSoundEffect(); | ||||
| 				else | ||||
| 					fx->enableDistortionSoundEffect(); | ||||
| 				break; | ||||
|  | ||||
| 			case 'e': | ||||
| 				if (fx->isEchoSoundEffectEnabled()) | ||||
| 					fx->disableEchoSoundEffect(); | ||||
| 				else | ||||
| 					fx->enableEchoSoundEffect(); | ||||
| 				break; | ||||
|  | ||||
| 			case 'w': | ||||
| 				if (fx->isWavesReverbSoundEffectEnabled()) | ||||
| 					fx->disableWavesReverbSoundEffect(); | ||||
| 				else | ||||
| 					fx->enableWavesReverbSoundEffect(); | ||||
| 				break; | ||||
|  | ||||
| 			case 'a': | ||||
| 				fx->disableAllEffects();  | ||||
| 				break; | ||||
| 			} | ||||
| 		}			 | ||||
| 	} | ||||
|  | ||||
| 	// don't forget to release the resources | ||||
|  | ||||
| 	if (music) | ||||
| 		music->drop(); // release music stream. | ||||
|  | ||||
| 	engine->drop(); // delete Engine | ||||
|  | ||||
| 	return 0; | ||||
| } | ||||
		Reference in New Issue
	
	Block a user