Ver Mensaje Individual
  #1 (permalink)  
Antiguo 03/06/2013, 14:54
vistaero
 
Fecha de Ingreso: noviembre-2009
Mensajes: 67
Antigüedad: 15 años, 1 mes
Puntos: 2
NAudio: Ajuste de volumen

Hola, estoy haciendo un programa que usa NAudio (http://naudio.codeplex.com/) para reproducir sonidos.

Pues bien, me gustaría que cada sonido se pudiera reproducir a volumen diferente, pero sólo consigo cambiar el volumen a todos los sonidos a la vez, aquí va todo el código:

Código vb:
Ver original
  1. Imports NAudio.Wave
  2.  
  3. Public Class Form1
  4.  
  5.     Private Sound1 As WaveOut
  6.     Private Sound2 As WaveOut
  7.  
  8.  
  9.     Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
  10.         Label3.Text = Val(Volume1.Value) / 10
  11.         Label4.Text = Val(Volume2.Value) / 10
  12.     End Sub
  13.  
  14.     Private Sub Volume1_Scroll(sender As Object, e As EventArgs) Handles Volume1.Scroll
  15.         Label3.Text = Val(Volume1.Value) / 10
  16.         Sound1.Volume = Val(Volume1.Value) / 10
  17.  
  18.     End Sub
  19.  
  20.     Private Sub Volume2_Scroll(sender As Object, e As EventArgs) Handles Volume2.Scroll
  21.         Label4.Text = Val(Volume2.Value) / 10
  22.         Sound2.Volume = Val(Volume2.Value) / 10
  23.  
  24.     End Sub
  25.  
  26.     Private Sub Play1_Click(sender As Object, e As EventArgs) Handles Play1.Click
  27.         Dim inputStream As WaveChannel32
  28.         Dim readerhum As New WaveFileReader(Application.StartupPath & "\media\2010Hum.wav")
  29.         inputStream = New WaveChannel32(readerhum)
  30.         Sound1 = New WaveOut()
  31.         Sound1.Init(readerhum)
  32.         ' Aquí determinamos el volumen en concreto de Hum, pero afecta también a
  33.        Sound1.Volume = Volume1.Value
  34.         Sound1.Play()
  35.         ' Activar el deslizador ahora porque usarlo antes de iniciar el sonido provoca un error.
  36.        Volume1.Enabled = True
  37.     End Sub
  38.  
  39.     Private Sub Play2_Click(sender As Object, e As EventArgs) Handles Play2.Click
  40.         Dim inputStream As WaveChannel32
  41.         Dim reader As New WaveFileReader(Application.StartupPath & "\media\Drum.wav")
  42.         inputStream = New WaveChannel32(reader)
  43.         Sound2 = New WaveOut
  44.         Sound2.Init(reader)
  45.         Sound2.Volume = Volume2.Value
  46.         Sound2.Play()
  47.         ' Activar el deslizador ahora porque usarlo antes de iniciar el sonido provoca un error.
  48.        Volume2.Enabled = True
  49.     End Sub
  50. End Class

Me explico un poco mejor, el resultado debe ser este: dos botones, cada uno reproduce un sonido diferente, y dos trackbars, cada una controla el volumen de un solo sonido. Eso es lo que hecho (obviamente sin lograr que los controles de volumen sean independientes) en el código fuente anterior como podéis ver en el proyecto del que pongo el enlace a continuación:

Enlace al proyecto entero de ejemplo: https://www.dropbox.com/s/zhynzq3xgaw1cyd/Pruebas.zip

Última edición por vistaero; 03/06/2013 a las 17:51