New product
Este producto ya no está disponible
Disponible el:
Reproducir Sonido in VB.NET
Como reproducir varios sonidos al mismo tiempo en VB.NET sin utilizar bibliotecas externas. Puro NET Framework.Destinatario :
* Campos requeridos
o Cancelar
Muchas veces queremos reproducir sonidos para nuestra aplicación multimedia realizada en VB.NET. El NET, trae nativamente para sus dos sistemas de ventanas dos motores de audio que nos permiten hacer este trabajo sin usar referencias externas.
Para programas desarrollados en Windows Forms o WinForms, tenemos la clase SoundPlayer.
Para los programas desarrollados en WPF, tenemos la clase MediaPlayer.
Para la primera (Sound Player), clase nos permite reproducir sonidos guardados en archivos y en stream de datos. Algo que es muy interesante si queremos cargar sonidos en un buffer de memoria. El punto desfavorable es que no permite la reproducción simultanea de sonidos, es decir, no hace el mezclado de sonidos. Es decir que, si tenemos una voz narrando algo y queremos reproducir algún sonido de pulsación de botón, no se escuchará este último.
La segunda (MediaPlayer), clase nos permite reproducir sonidos guardados en archivos de recursos del programa WPF. No es posible cargarlos desde un stream de datos el cual es su punto desfavorable, no es compatible con WinForm. El punto favorable es que MediaPlayer nos permite la mezcla de sonidos y entonces podemos reproducir varios sonidos al mismo tiempo y todos se escucharán.
Teniendo en cuenta esto, es posible usar el MediaPlayer de WPF en el proyecto WinForms, pero sin utilizar el problemático sistema de hospedaje.
Publicidad.
Para reproducir varios sonidos al mismo tiempo en VB.NET:
1 – Creamos una biblioteca de enlace dinámico e importamos las referencias de los ensamblados: WindowsBase, System.Core
2 – Importamos los ensamblados: System.Windows.Media a una clase para el control del audio.
3 – Crear una clase que tenga la siguiente estructura:
Código:
'''
''' Controla la pieza de sonido que entra al buffer de dispositivo.
'''
'''
Public Class PiezaSnd
Private WithEvents mp As MediaPlayer
Private RecursoSnd As String
Private _Reproduciendo As Boolean
Private _Pausa As Boolean
Public Sub New(ByVal NombreSnd As String)
mp = New MediaPlayer
RecursoSnd = NombreSnd
_Reproduciendo = False
_Pausa = False
End Sub
Public ReadOnly Property Reproduciendo As Boolean
Get
Return _Reproduciendo
End Get
End Property
Public Sub Open()
Dim Path As String
Path = Directory.GetCurrentDirectory() & "sonidos" & RecursoSnd
mp.Open(New Uri(Path))
_Reproduciendo = False
_Pausa = False
End Sub
Public Sub Pause()
mp.Pause()
_Reproduciendo = False
_Pausa = True
End Sub
Public Sub Play()
If Not _Pausa Then Open()
mp.Play()
_Reproduciendo = True
_Pausa = False
End Sub
Public Sub [Stop]()
mp.Stop()
_Reproduciendo = False
_Pausa = False
End Sub
Public Sub Close()
mp.Stop()
mp.Close()
_Reproduciendo = False
_Pausa = False
End Sub
Private Sub mp_Changed(sender As Object, e As EventArgs) Handles mp.Changed
_Pausa = False
End Sub
Private Sub mp_MediaEnded(sender As Object, e As EventArgs) Handles mp.MediaEnded
_Reproduciendo = False
End Sub
Private Sub mp_MediaFailed(sender As Object, e As ExceptionEventArgs) Handles mp.MediaFailed
_Pausa = False
End Sub
Private Sub mp_MediaOpened(sender As Object, e As EventArgs) Handles mp.MediaOpened
_Pausa = False
End Sub
End Class
4 - Compilar la biblioteca y enlazarla al proyecto WinForms. Y listo.
Publicidad.
Asegurarse de abrir siempre el recurso de audio antes de ejecutarlo, por lo general al pasar a estado de Play a Stop el WPF descarga el buffer de datos para ahorrar memoria. Entonces el sonido no se reproducirá en la siguiente orden de Play.
Tenga en cuenta que cada sonido cargado consume muchísima memoria, piense en crear una biblioteca de sonidos, para que los mismos se carguen solo en la cantidad necesaria. No cargue sonidos por objetos.
Es todo por los momentos, asi que Play Sound en VB.NET usando WPF es muy simple y muy poderoso.
Excelente
Gran post
buen aporte
Muy buena tu idea del mezclador de sonidos.
No se requiere registro
1 Pregunta(s) respondidas
Si luego de leer nuestro articulo aun tiene dudas, puede hacer su pregunta utilizando el siguiente formulario.
Si el enlace de descarga redirige a otro producto que no es el descrito en el artículo o está roto, reportarlo usando nuestro