107 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			107 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
// 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.
 | 
						|
 | 
						|
using System;
 | 
						|
using IrrKlang;
 | 
						|
 | 
						|
namespace CSharp._05._Effects
 | 
						|
{
 | 
						|
	class Class1
 | 
						|
	{
 | 
						|
		[STAThread]
 | 
						|
		static void Main(string[] args)
 | 
						|
		{
 | 
						|
			// start the sound engine with default parameters
 | 
						|
			ISoundEngine engine = new ISoundEngine();
 | 
						|
 | 
						|
			// 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.
 | 
						|
 | 
						|
			ISound music = engine.Play2D("../../media/MF-W-90.XM", false,
 | 
						|
				false, StreamMode.AutoDetect, true);
 | 
						|
 | 
						|
			// Print some help text and start the display loop
 | 
						|
 | 
						|
			Console.Out.Write("\nSound effects example. Keys:\n");
 | 
						|
			Console.Out.Write("\nESCAPE: quit\n");
 | 
						|
			Console.Out.Write("w: enable/disable waves reverb\n");
 | 
						|
			Console.Out.Write("d: enable/disable distortion\n");
 | 
						|
			Console.Out.Write("e: enable/disable echo\n");
 | 
						|
			Console.Out.Write("a: disable all effects\n");
 | 
						|
 | 
						|
			while(true) // endless loop until user exits
 | 
						|
			{
 | 
						|
				int key = _getch();
 | 
						|
 | 
						|
				// Handle user input: Every time the user presses a key in the console,
 | 
						|
				// play a random sound or exit the application if he pressed ESCAPE.
 | 
						|
 | 
						|
				if (key == 27)
 | 
						|
					break; // user pressed ESCAPE key
 | 
						|
				else
 | 
						|
				{
 | 
						|
					ISoundEffectControl fx = null;
 | 
						|
					if (music != null)
 | 
						|
						fx = music.SoundEffectControl;
 | 
						|
 | 
						|
					if (fx == null)
 | 
						|
					{
 | 
						|
						// some sound devices do not support sound effects.
 | 
						|
						Console.Out.Write("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;
 | 
						|
					}
 | 
						|
				}
 | 
						|
			}
 | 
						|
		}
 | 
						|
 | 
						|
		// simple functions for reading keys from the console
 | 
						|
		[System.Runtime.InteropServices.DllImport("msvcrt")]
 | 
						|
		static extern int _kbhit();
 | 
						|
		[System.Runtime.InteropServices.DllImport("msvcrt")]
 | 
						|
		static extern int _getch();
 | 
						|
	}
 | 
						|
}
 |