Ver Mensaje Individual
  #2 (permalink)  
Antiguo 06/06/2013, 17:36
alexg88
 
Fecha de Ingreso: abril-2011
Mensajes: 1.342
Antigüedad: 13 años
Puntos: 344
Respuesta: NAudio: Ajuste de volumen

Hola de nuevo,

Investigando un poco (no tengo mucha experiencia trabajando con audio) he visto que hay dos conceptos distintos: el audio del dispositivo (device level) y el audio del archivo (sample level).

Como estás usando WaveOut para reproducir distintos archivos .wav, todos están usando el mismo dispositivo (a no ser que le indicases que usasen otros, en caso de haberlos) y al cambiar el volumen de uno de los objetos en realidad está afectando al volumen del dispositivo.

Una forma que he visto de solucionarlo (hay más creo) es usar AudioFileReader en vez de WaveFileReader, puesto que el primero tiene la propiedad Volume que permite cambiar el volumen de reproducción de sólo ese archivo.

Ejemplo:

Código vb:
Ver original
  1. Dim Noise As WaveOut
  2.  Dim NoiseReader As AudioFileReader
  3.  
  4. NoiseReader = New AudioFileReader(Application.StartupPath & "\media\2010\Noise.wav")
  5. Dim looping As New LoopStream(NoiseReader)        '  
  6.  
  7. Noise = New WaveOut()
  8. Noise.Init(looping)
  9. Noise.Play()

Ahora en todos los sitios donde quieras cambiar el volumen tendrás que usar el NoiseReader


Código vb:
Ver original
  1. NoiseReader.Volume = 'Lo que sea

He estado probandolo y funciona, pero hay que mirar un poco sobre como funciona el valor del volumen, puesto que creo que depende del volumen del dispositivo y del volumen del sample.

Espero que te sirva y estamos aquí para cualquier cosa.

Un saludo.