Foros del Web » Programación para mayores de 30 ;) » .NET »

Core Audio VB .NET

Estas en el tema de Core Audio VB .NET en el foro de .NET en Foros del Web. Hola, estoy haciendo un programa tipo teclado de sonidos, con el que estoy empezando a calentarme demasiado la cabeza. Estoy usando Visual Studio Express 2012, ...
  #1 (permalink)  
Antiguo 21/05/2013, 14:25
 
Fecha de Ingreso: noviembre-2009
Mensajes: 67
Antigüedad: 14 años, 5 meses
Puntos: 2
Core Audio VB .NET

Hola, estoy haciendo un programa tipo teclado de sonidos, con el que estoy empezando a calentarme demasiado la cabeza.

Estoy usando Visual Studio Express 2012, la versión para escritorio, Visual Basic con Windows Forms (WPF se me hace un mundo).

El problema que tengo, es que necesito reproducir varios sonidos a la vez, y en bucle perfecto. Me explico:

Al abrir el programa, debe haber un sonido reproduciéndose en bucle, y no se debe notar cuándo termina y empieza de nuevo.

Fácil: My.Computer.Audio.Play(Application.StartupPath & "\media\ambient.wav", AudioPlayMode.BackgroundLoop)

Luego, cuando el usuario pulse una tecla, debe reproducirse otro sonido (sin detener el primero) también en bucle.

No puedo usar el mismo método, ya que no permite varios sonidos a la vez.

Luego está el MCI Send String, el cual también tiene la opción de bucle, pero hay una pequeña pausa entre que termina y empieza de nuevo, de modo que no me sirve en absoluto.

Después de probar muchas otras cosas, sin éxito (ayuda bastante que no soy programador, sólo un aficionado) encuentro Core Audio:

http://msdn.microsoft.com/es-ES/library/windows/desktop/dd370802(v=vs.85).aspx

Pero todos los ejemplos que veo son demasiados complejos, ejemplos de reproductores completos. Difícilmente podría aislar el código en concreto para lo que necesito.

¿Alguien tiene idea sobre estas APIs?
  #2 (permalink)  
Antiguo 21/05/2013, 15:45
 
Fecha de Ingreso: abril-2011
Mensajes: 1.342
Antigüedad: 13 años
Puntos: 344
Respuesta: Core Audio VB .NET

Hola,

Existe una clase en el framework llamada SoundPlayer: http://msdn.microsoft.com/en-us/libr...undplayer.aspx

Esta clase sólo permite reproducir archivos .wav pero puedes reproducir varios archivos.

Un saludo.
  #3 (permalink)  
Antiguo 21/05/2013, 19:35
 
Fecha de Ingreso: noviembre-2009
Mensajes: 67
Antigüedad: 14 años, 5 meses
Puntos: 2
Respuesta: Core Audio VB .NET

Hola, tras un buen rato trasteando con el código de ejemplo que se puede ver aquí: http://msdn.microsoft.com/en-us/library/tbx06asw.aspx

Creo que he llegado al código principal para reproducir varios sonidos en bucle al mismo tiempo. Tal y como entiendo el código, primero creamos varios reproductores, y luego le decimos a cada reproductor qué tiene que reproducir, y así es como se supone que esta clase permite reproducir varios sonidos a la vez. Pero me debo en equivocar en algo, porque no me funciona.

Este es todo el código en Form1. Al abrirse, Player reproduce ambiente.wav en bucle. Luego Button1 hace que Player2 reproduzca motor.wav en bucle, pero Player se detiene. ¿Qué estoy haciendo mal?
Código vb:
Ver original
  1. Imports System
  2. Imports System.Media
  3. Imports System.Windows.Forms
  4.  
  5.  
  6. Public Class Form1
  7.     Private Player As New SoundPlayer
  8.     Private Player2 As New SoundPlayer
  9.  
  10.     Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
  11.        
  12.     End Sub
  13.  
  14.     Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
  15.         Me.Player.SoundLocation = Application.StartupPath & "\media\ambiente.wav"
  16.         Me.Player.PlayLooping()
  17.     End Sub
  18.  
  19.     Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
  20.         Me.Player2.SoundLocation = Application.StartupPath & "\media\motor.wav"
  21.         Me.Player2.PlayLooping()
  22.     End Sub
  23.  
  24.     Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
  25.         Me.Player.Stop()
  26.     End Sub
  27. End Class

Edito: Por más que busco sobre SoundPlayer en Google, en todos lados dicen que esta clase no permite reproducir varios archivos a la vez. ¿Por qué decías que sí se puede?

Última edición por vistaero; 22/05/2013 a las 11:01
  #4 (permalink)  
Antiguo 22/05/2013, 14:30
 
Fecha de Ingreso: abril-2011
Mensajes: 1.342
Antigüedad: 13 años
Puntos: 344
Respuesta: Core Audio VB .NET

Buenas,

Perdón por la información incorrecta. Efectivamente no puede reproducir más de un sonido a la vez.

Hay una librería (http://naudio.codeplex.com/documentation) llamada NAudio que parece que sí permite reproducir varios archivos a la vez. Te sugiero que le eches un vistazo, porque viene con ejemplos bastante descriptivos.

Un saludo y perdona las molestias.
  #5 (permalink)  
Antiguo 25/05/2013, 17:57
 
Fecha de Ingreso: noviembre-2009
Mensajes: 67
Antigüedad: 14 años, 5 meses
Puntos: 2
Respuesta: Core Audio VB .NET

Hola, perdón por la tardanza en responder. Me temo que NAudio es un viejo intento que abandoné porque toda la ayuda que encontraba era en C#, lenguaje en el que intenté hacer mi aplicación sólo por usar NAudio, pero al final me rendí. Luego probé más cosas y finalmente acabé en este foro.

Ahora, por lo que veo, NAudio es mi última opción, abriré un nuevo hilo, ya que tiene poco sentido hablar sobre esta librería en un hilo con este nombre.

Nos vemos allí ;) http://www.forosdelweb.com/f29/naudio-visual-basic-net-1053338/

Última edición por vistaero; 25/05/2013 a las 18:08

Etiquetas: audio, basic, core, net, vb, visual
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:57.