public final Sound getSound(String _filename)
	{
		if (_filename.toLowerCase().endsWith(".mp3"))
		{
			// make sure the file can be opened, for an immediate fail if not.
			if (!isApplet)
			{
				try {
					new FileInputStream(_filename);
				}
				catch (FileNotFoundException fnf)
				{
					logError("getSound(" + _filename + ") failed [3].");
					return null;
				}
			}
			return new SoundMP3(_filename, this);
		}

		// not an mp3, use Applet's AudioClip functionality
		AudioClip clip;
		try {
			if (isApplet)
				clip = getAudioClip(getCodeBase(), _filename);
			else
				clip = Applet.newAudioClip(
							getClass().getResource(_filename));
		}
		catch (NullPointerException npe)
		{
			logError("getSound(" + _filename + ") failed [1].");
			return null;
		}
		if (clip == null)
		{
			logError("getSound(" + _filename + ") failed [2].");
			return null;
		}
		return new SoundAudioClip(clip, this);
	}