private void loadClip(String fnm) {
		try {
			// Acceder al archivo de audio como un stream
			AudioInputStream stream = AudioSystem.getAudioInputStream(this.getClass().getClassLoader().getResourceAsStream(fnm));
			
			// Obtener el formato del audio a partir de los datos del stream
			AudioFormat format = stream.getFormat();
			
			// Obtener informacion para crear una linea
			DataLine.Info info = new DataLine.Info(Clip.class, format);
			
			// Convertir formatos ULAW/ALAW a formato PCM
			if (	format.getEncoding() == AudioFormat.Encoding.ULAW ||
					format.getEncoding() == AudioFormat.Encoding.ALAW ) {
				AudioFormat newFormat = new AudioFormat(AudioFormat.Encoding.PCM_SIGNED,
														format.getSampleRate(),
														format.getSampleSizeInBits() * 2,
														format.getChannels(),
														format.getFrameSize() * 2,
														format.getFrameRate(), true);
				// Actualizar el stream y el formato
				stream = AudioSystem.getAudioInputStream(newFormat, stream);
				format = newFormat;
				System.out.println("Formato de audio convertido: " + newFormat);
			}
			
			// Asegurar que el sistema de sonido soporte esta linea
			if (!AudioSystem.isLineSupported(info)) {
				System.out.println("Archivo de Clip no soportado: " + fnm);
			}
			
			// Crear un Clip vacio usando la informacion de la linea
			clip = (Clip) AudioSystem.getLine(info);
			
			// Monitorear los eventos de linea del Clip
			clip.addLineListener(this);
			
			// Abrir el stream de audio como un clip, alistandolo para reproducirlo
			clip.open(stream);
			stream.close();
		}
		catch (UnsupportedAudioFileException audioException) {
			System.out.println("Archivo de audio no soportado: " + fnm);
		}
		catch (LineUnavailableException lineException) {
			System.out.println("No hay linea de audio disponible para: " + fnm);
		}
		catch (IOException ioException) {
			System.out.println("Error al leer: " + fnm);
		}
		catch (Exception ex) {
			System.out.println("Error con el archivo: " + fnm);
			ex.printStackTrace();
		}
	}