Buenos días, en primer lugar muchas gracias Elektro, eres todo un genio. Si funciona el formato URI en el control WMP. La verdad estoy un poco perdido en tema de ficheros, pero veo que es la solución a los formatos de audio que no son WAV.
Visual Basic 2013 al añadir cualquier formato que no sea WAV toma como fichero como bien dices en My.Resources, pero ya veo una forma de poder utilizarlos y asi compilar un único archivo. Comentarte que lo que estoy realizando no es un Reproductor, sino un juego de naves y globos con dosis educativa (operaciones matemáticas para niños), donde tenía una música de fondo con WMP y utilizaba sonidos WAV con My.Computer.Audio.Play, que solo me dejaba reproducir uno a la vez. De esta forma podía combinar más sonidos puesto que el WMP puedes añadir más (realmente con el sonido de fondo y 2 sonidos más a la vez, disparo de nave y explosión me basta para no saturar, no empleo nada de DirectX y tampoco sé).
Respecto a tu código he añadido una línea para cambiar la extensión, puesto que el archivo temporal que te crea al reproducir te salta un mensaje que es una extensión .TMP y tienes que contestar y naturalmente eso no quiero que salga en el programa cada vez que reproduce el sonido o aunque sea 1 sola vez marcando el Checkbox.
He probado con archivo MID (son los que utilizaré puesto que apenas ocupan), MP3 y archivos WAV (hay que quitarles extensión al añadir a My.Resources para que te lo añada como archivo) y funcionan todos perfectamente.
Implementaré esto en el código de mi juego y tan solo sera ver si no demora con el funcionamiento, puesto que antes solo utilizaba estas instrucciones para llamar a los sonidos
En el código además de la nave, muevo unos cuantos objetos, Globos, disparos, fondo con un pequeño Scroll horizontal y comprobare que no se pare, aunque hoy día los ordenadores son muy rápidos, pero estoy utilizando Net.Framework 3.5 para que otros ordenadores más lentos y con XP también sea compatible.
Gracias por tu librería y muy currada. Yo soy un simple aficionado que más bien programo por hobby. Los programas y juegos que realizó intento que sean en un único archivo (utilizando las NET que ya tiene los ordeandores instalado). En este proyecto me será imposible porque Windows Media Player trae consigo dos librerías (AxInterop.WMPLib.dll e Interop.WMPLib.dll) aunque apenas ocupan, pero ya por lo menos todos los sonidos los tendré compilados con el ejecutable.
Sino es mucha molestia, pero a modo consulta no hace falta que me pongas código, con Windows Presentation Foundation (WPF) puesto que dicen que es más visual, que incluye animaciones, video, sonidos, 3D; se podría añadir recursos de audio que no sean WAV, en My.Resources o bien lo que tenga. Desconozco completamente WPF y cuando instale VB.net ya adapté el entorno a la programación con Windows Forms, puesto que yo venía de VB6.
Muchas gracias
Saludos
Visual Basic 2013 al añadir cualquier formato que no sea WAV toma como fichero como bien dices en My.Resources, pero ya veo una forma de poder utilizarlos y asi compilar un único archivo. Comentarte que lo que estoy realizando no es un Reproductor, sino un juego de naves y globos con dosis educativa (operaciones matemáticas para niños), donde tenía una música de fondo con WMP y utilizaba sonidos WAV con My.Computer.Audio.Play, que solo me dejaba reproducir uno a la vez. De esta forma podía combinar más sonidos puesto que el WMP puedes añadir más (realmente con el sonido de fondo y 2 sonidos más a la vez, disparo de nave y explosión me basta para no saturar, no empleo nada de DirectX y tampoco sé).
Respecto a tu código he añadido una línea para cambiar la extensión, puesto que el archivo temporal que te crea al reproducir te salta un mensaje que es una extensión .TMP y tienes que contestar y naturalmente eso no quiero que salga en el programa cada vez que reproduce el sonido o aunque sea 1 sola vez marcando el Checkbox.
Código (vbnet) [Seleccionar]
Dim filepath As String = Path.GetTempFileName()
filepath = Path.ChangeExtension(filepath, ".mid")
Dim fileUri As New Uri(String.Format("file:///{0}", filepath))
ExtractResourceToDisk(My.Resources.Sonido, filepath, overwrite:=True)
AxWindowsMediaPlayer1.URL = fileUri.AbsoluteUri
He probado con archivo MID (son los que utilizaré puesto que apenas ocupan), MP3 y archivos WAV (hay que quitarles extensión al añadir a My.Resources para que te lo añada como archivo) y funcionan todos perfectamente.
Implementaré esto en el código de mi juego y tan solo sera ver si no demora con el funcionamiento, puesto que antes solo utilizaba estas instrucciones para llamar a los sonidos
Código (vbnet) [Seleccionar]
My.Computer.Audio.Play(My.Resources.Sonido1, AudioPlayMode.Background)
AxWindowsMediaPlayer1.URL = "Sonido.mid"
En el código además de la nave, muevo unos cuantos objetos, Globos, disparos, fondo con un pequeño Scroll horizontal y comprobare que no se pare, aunque hoy día los ordenadores son muy rápidos, pero estoy utilizando Net.Framework 3.5 para que otros ordenadores más lentos y con XP también sea compatible.
Gracias por tu librería y muy currada. Yo soy un simple aficionado que más bien programo por hobby. Los programas y juegos que realizó intento que sean en un único archivo (utilizando las NET que ya tiene los ordeandores instalado). En este proyecto me será imposible porque Windows Media Player trae consigo dos librerías (AxInterop.WMPLib.dll e Interop.WMPLib.dll) aunque apenas ocupan, pero ya por lo menos todos los sonidos los tendré compilados con el ejecutable.
Sino es mucha molestia, pero a modo consulta no hace falta que me pongas código, con Windows Presentation Foundation (WPF) puesto que dicen que es más visual, que incluye animaciones, video, sonidos, 3D; se podría añadir recursos de audio que no sean WAV, en My.Resources o bien lo que tenga. Desconozco completamente WPF y cuando instale VB.net ya adapté el entorno a la programación con Windows Forms, puesto que yo venía de VB6.
Muchas gracias
Saludos