Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: Eleкtro en 13 Julio 2013, 05:46 am



Título: [SOLUCIONADO] ¿Como modificar el nivel de audio (ganancia) de un archivo wav?
Publicado por: Eleкtro en 13 Julio 2013, 05:46 am
Pues eso, si alguien me puede explicar como puedo modificar la ganancia de un Wav...

En un form reproduzco un Wav que lo tengo como archivo de Recurso (my.resources.wave), lo que quiero es poder ajustar el nivel de audio de este Recurso para reproducirlo con un nivel más bajo del máximo (1.000f = Máximo).

Se supone que con la librería NAudio se puede conseguir esto, pero sólo he llegado hasta aquí:
Código
  1. Public wavefile As New NAudio.Wave.WaveFileReader("C:\Archivo.wav")

la class tiene miles de métodos y no son nada claros para mi, no sé como hacerlo.

Si alguien conoce otro método para conseguir esto no tiene importancia, no dependo de dicha librería, sólo es que ...es lo único que he encontrado sobre el tema.





Aquí tienen la Lib, por si alguien puede ayudar echándole un vistazo:
http://naudio.codeplex.com/
PD: Los ejemplos son en C#,
hay una "demoApp" que hace exáctamente lo que quiero, pero todo el code es demasiado Pro para mi nivel a la hora de intentar trasladar lo que necesito a VB.

(http://img607.imageshack.us/img607/2847/2as.png)

Creo que la parte interesante del source de la Demo está aquí:

Código
  1.        namespace NAudioDemo.AudioPlaybackDemo
  2.  
  3.        this.fileWaveStream = plugin.CreateWaveStream(fileName);
  4.        var waveChannel =  new SampleChannel(this.fileWaveStream, true);
  5.        this.setVolumeDelegate = (vol) => waveChannel.Volume = vol;
  6.        waveChannel.PreVolumeMeter += OnPreVolumeMeter;
  7.  
  8.        var postVolumeMeter = new MeteringSampleProvider(waveChannel);
  9.        postVolumeMeter.StreamVolume += OnPostVolumeMeter;
...Obviamente falta mucho más código necesario, pero es que es muy, muy, muy extensa.

Saludos


Título: Re: ¿Como modificar el nivel de audio (ganancia) de un archivo wav?
Publicado por: OmarHack en 13 Julio 2013, 06:57 am
No es justo lo que buscas pero te ayudará:
http://stackoverflow.com/questions/12609782/play-audio-files-wav-in-vb-net-w-volume-control



Título: Re: ¿Como modificar el nivel de audio (ganancia) de un archivo wav?
Publicado por: Eleкtro en 13 Julio 2013, 09:00 am
No es justo lo que buscas pero te ayudará:

Era justo lo que necesitaba :), Gracias @OmarHack.


Título: Re: [SOLUCIONADO] ¿Como modificar el nivel de audio (ganancia) de un archivo wav?
Publicado por: Eleкtro en 13 Julio 2013, 10:18 am
Listo:

Código
  1. Play_Sound(my.resources.WavFile)

Código
  1.    ' Play Sound
  2.    Private Sub Play_Sound(ByVal Sound As IO.UnmanagedMemoryStream)
  3.        Dim Wave1 As New NAudio.Wave.WaveOut
  4.        Wave1.Init(New NAudio.Wave.BlockAlignReductionStream(NAudio.Wave.WaveFormatConversionStream.CreatePcmStream(New NAudio.Wave.WaveFileReader(Sound))))
  5.        Wave1.Volume = Soundvolume ' Single num
  6.        Wave1.Play()
  7.    End Sub


Título: Re: [SOLUCIONADO] ¿Como modificar el nivel de audio (ganancia) de un archivo wav?
Publicado por: OmarHack en 13 Julio 2013, 16:30 pm
Por si te interesa la clase volumen alterna los valores normales de entre 0 y 100 con  0 y 1. Es decir: Soundvolume = 1; 'valor máximo normal
Soundvolume = 0; 'valor mínimo

Lo que no sé es si pones: Soundvolume = 2; 'Te doblará el sonido o se ajustará al máximo normal?

Me alegro de que sirva. :)


Título: Re: [SOLUCIONADO] ¿Como modificar el nivel de audio (ganancia) de un archivo wav?
Publicado por: Eleкtro en 13 Julio 2013, 17:38 pm
Lo que no sé es si pones: Soundvolume = 2; 'Te doblará el sonido o se ajustará al máximo normal?

No se puede doblar el volumen :P, al menos no con la Class de los Waves, con la Class de los MP3 no lo sé, aunque me imagino que será igual.

Saludos


Título: Re: [SOLUCIONADO] ¿Como modificar el nivel de audio (ganancia) de un archivo wav?
Publicado por: OmarHack en 13 Julio 2013, 18:56 pm
Intenta buscar el ecualizador del vcl a ver si lo encuentras entre tanto código.
http://download.videolan.org/pub/videolan/vlc/2.0.7/vlc-2.0.7.tar.xz

Seguramente mirando su funcionamiento puedas recrear algo similar.
Suerte!