PlaySound - Forum

Forum Navigation
VisualNEO Products: Web, Win and PixelNEO
You need to log in to create posts and topics.

PlaySound

Hola,

Estoy tratando de reproducir un sonido en un evento enter-page y no funciona.

¿Estoy haciendo algo mal?

PlaySound "C:\Users\roger\Documents\misaplicaciones\music.mp3" false

 

Roger

 

 

Hola @rrey,
Los sonidos no pueden activarse si no es ante una acción previa del usuario, como por ejemplo hacer click con el ratón en un botón. El navegador los bloquea automáticamente. Sucede lo mismo para poner en marcha un vídeo con sonido o hacer que la aplicación se muestre en pantalla completa. Más información aquí:
https://developers.google.com/web/updates/2017/09/autoplay-policy-changes
https://hacks.mozilla.org/2019/02/firefox-66-to-block-automatically-playing-audible-video-and-audio/

Muy interesante Luis.

Estaba haciendo un programa de sincronitzación de música con imágenes para Ed. Física.

Muchas gracias por todo.

Roger

Buenas noches luis y buenas noches roger.

Respecto a éste tópico, yo trato reproducir en su orden, y con tiempos de espera posteriores el audio con la palabra de un animal y los audios de las silabas que componen dicha palabra; a su vez, muestro el texto de palabras y silabas. y ésto mismo pretendo hacer cuando navego hacia adelante y hacia atras por los registros de la bases de datos.

Al cargar el primer registro no reproduce audio y al recorrer hacia adelante y hacia atrás se presentan falencias de audio y texto de silabas, es decir, no es consistente unas veces bien y otras mal y el problema se presenta con audio de silabas y texto de sílabas. Consultando el vinculo aportado por luis, me remite a soluciones de crome, y basado en esto busque alguna opcion por firefox y como resultado habilite la protección mejorada contra rastreo y aquí, aunque me funciona parcialmente el primer registro, los siguientes siguen con la misma intermitencia. Pueden brindarme alguna ayuda ?, éste es el codigo

 

. oculto las sílabas

HideObject "si1" "fadeOut" 13
HideObject "si2" "fadeOut" 13
HideObject "si3" "fadeOut" 13

SetVar [CurrentRecord] [CurrentRecord]+1
If [CurrentRecord] >= [total]
setvar [CurrentRecord] [CurrentRecord]-1
endif
setvar [id][arrayData([CurrentRecord]).id]
setvar [palabra][arrayData([CurrentRecord]).palabra]
setvar [image][arrayData([CurrentRecord]).image]
setvar [audio][arrayData([CurrentRecord]).audio]
setvar [si1][arrayData([CurrentRecord]).si1]
setvar [si2][arrayData([CurrentRecord]).si2]
setvar [si3][arrayData([CurrentRecord]).si3]
setvar [ssi1][arrayData([CurrentRecord]).ssi1]
setvar [ssi2][arrayData([CurrentRecord]).ssi2]
setvar [ssi3][arrayData([CurrentRecord]).ssi3]
setvar [taudio][audio]
setvar [timage][image]

PlaySound "[audio]" false
ShowObject "palabra" "fadeIn" 9
Wait 2000
ShowObject "si1" "fadeIn" 13
PlaySound "[ssi1]" false
wait 2000
ShowObject "si2" "fadeIn" 13
PlaySound "[ssi2]" false
wait 2000
ShowObject "si3" "fadeIn" 13
PlaySound "[ssi3]" false
wait 2000
SetAttribute "palabra" "color" "blue"
AnimateObject "palabra" "513" "282" 1000 "easeInQuad" ""
SetAttribute "palabra" "color" "red"
AnimateObject "palabra" "0" "282" 1000 "easeInQuad" ""
HideObject "palabra" "fadeOut" 9
Wait 1000
ShowObject "palabra" "fadeIn" 9
PlaySound "[audio]" false

 

Muchas gracias

@carlos-alberto-montoya-cano fíjate que no estás utilizando EndWait para delimitar el final de cada bloque de código que inicias con Wait. Lo que estás haciendo es incluir un bloque dentro de otro que a su vez está dentro de otro, que está dentro de otro etc. sin cerrar ningún bloque. De este modo es dificil que no aparezcan errores.

Saludos.

Buenas tardes Luis.

Seguí tus recomendaciones, cerré los Wait y lógicamente  le ordeno al sistema reproducir un audio, esperar un rato para hacer algo, reproducir el segundo, esperar otro rato, y así sucesivamente. Jugé con los tiempos, hice cambios como poner a reproducir antes del wait y dentro de wait y el sistema reproduce los audios de manera muy anormal, es decir que algunas veces los reproduce, otras no, en otras altera el orden.

Dicha situación me preocupa ya que busco convertir una aplicación terminada y probada en neobook cuya esencia es el manejo que quiero obtener con éste ejercicio.

Mi base de datos de prueba tiene 7 registros pero podran ser 70 u 80

Me voy a tomar el atrevimiento de adjuntarte un zip con la carpeta de trabajo y todos los recursos necesarios para su ejecución. Los únicos elementos a seguir son las flechas izquierda y derecha y la subrutina ParseData. Podrias darle una mirada y tratar de encontrar el problema. tambien, vuelvo y te adjunto el codigo basico.

HideObject "si1" "fadeOut" 13
HideObject "si2" "fadeOut" 13
HideObject "si3" "fadeOut" 13

SetVar [CurrentRecord] [CurrentRecord]+1
If [CurrentRecord] >= [total]
setvar [CurrentRecord] [CurrentRecord]-1
endif
setvar [id][arrayData([CurrentRecord]).id]
setvar [palabra][arrayData([CurrentRecord]).palabra]
setvar [image][arrayData([CurrentRecord]).image]
setvar [audio][arrayData([CurrentRecord]).audio]
setvar [si1][arrayData([CurrentRecord]).si1]
setvar [si2][arrayData([CurrentRecord]).si2]
setvar [si3][arrayData([CurrentRecord]).si3]
setvar [ssi1][arrayData([CurrentRecord]).ssi1]
setvar [ssi2][arrayData([CurrentRecord]).ssi2]
setvar [ssi3][arrayData([CurrentRecord]).ssi3]
setvar [taudio][audio]
setvar [timage][image]
PlaySound "[audio]" false
SetAttribute "palabra" "color" "blue"
ShowObject "palabra" "fadeIn" 9
Wait 4000
AnimateObject "palabra" "513" "282" 1000 "easeInQuad" ""
SetAttribute "palabra" "color" "red"
AnimateObject "palabra" "0" "282" 1000 "easeInQuad" ""
endwait
PlaySound "[ssi1]" false
wait 3000
ShowObject "si1" "fadeIn" 13
endwait
PlaySound "[ssi2]" false
wait 3000
ShowObject "si2" "fadeIn" 13
endwait
PlaySound "[ssi3]" false
wait 3000
ShowObject "si3" "fadeIn" 13
endwait
PlaySound "[audio]" false

 

Muchas gracias.

 

 

Uploaded files:
  • You need to login to have access to uploads.

@carlos-alberto-montoya-cano

Note that when you insert a Wait/EndWait code block in a set of script commands, the commands immediately following the Wait/EndWait code block are serviced immediately.

Try this set of commands attached to a PushButton ... setup a Container named WaitLog to view the sequence of events ...

SetVar "[waitLog]" "Start<br/>"
SetObjectHTML "WaitLog" "[waitLog]"

Wait 200
SetVar "[waitLog]" "[waitLog]A. After Wait 200<br/>"
SetObjectHTML "WaitLog" "[waitLog]"
EndWait

SetVar "[waitLog]" "[waitLog]B. After EndWait 200<br/>"
SetObjectHTML "WaitLog" "[waitLog]"

Wait 300
SetVar "[waitLog]" "[waitLog]C. After Wait 300<br/>"
SetObjectHTML "WaitLog" "[waitLog]"
EndWait

SetVar "[waitLog]" "[waitLog]D. After EndWait 300<br/>"
SetObjectHTML "WaitLog" "[waitLog]"

... you should get the following results ...

Start
B. After EndWait 200
D. After EndWait 300
A. After Wait 200
C. After Wait 300

... armed with this understanding, you can setup your subsequent commands and Wait/EndWait blocks with appropriate (cumulative) milliseconds of wait time.

If you are not getting the expected results, I suggest you (temporarily) add these [waitLog] related commands to help investigate the issues.

Buenas noches.

Sinceramente, Visualneo Web me va a "volver loco". Podrá ser por haber sido instalado, una vez comprado, sobre una versión de descarga o por haber utilizado  un codigo de registro encima de otro, ya que @luishp me envio otro codigo posterior al de la compra.

En Neobook aprendí que si quiero reproducir primero un [audio] debo de darle un tiempo de espera para que termine y eso se hacia simplemente con el wait. En VisualNeo Web con el wait/endwait.

Aplico esa lógica y espero que el sistema me ejecute en orden los wait/endwait de 15000 el primero, donde reproduzco el audio de una palabra  y de 10000 los 3 siguiente, donde reproduzco cada una de las silabas de dicha palabra, es decir, A. 15000, B. 10000, C. 10000 y D de 10000 pero se ejecutan en el orden BCDA que podrá ver en el contenedor WaitLog sugeridos en respuesta a el post anterior.

Se me presentan demasiadas anomalias, demasiadas no, muchas y las otras alternativas de audio que ofrece visualNeo Web a mí no me sirven para lograr lo que quiero. Por tal motivo, y para confrontar lo dicho, me gustaria que por favor probaran este programa en su equipo y me comenten su resultado. Así podré pensar que sigue.

  1. Preguntar a ustedes si puedo desistarlar totalmente la versión instalada y reistalarla de nuevo con el ZIP enviado por @luishp
  2. Dejar de usar VisualNeo Web ya que no progreso con él como queria hacerlo.

Les coloco el codigo que estoy utilizando, luego de obtener la información de un registro de la base de datos, en la subrutina ParseData y en las acciones de los iconos de flecha izquierda y derecha. Les recomiendo seguir las lineas de comentarios para que observe la variedad de alternativas que he buscado y problemas que me he encontrado.

 

. FAVOR LEER. la lógica me dice que quiero reproducir el [audio], que es el audio de una palabra y para que puedo hacerlo le digo que espere un rato 15000 antes de seguir
. FAVOR LEER. de igual manera, con una espera de 10000 reproduzca los audios [ssi1], [ssi2], [ssi3] que son las silabas de la palabra.
. FAVOR LEER. finalmente, quiero suspender los audios para que las acciones de los iconos me los reproduzcan de nuevo con otra palabra y silabas
. FAVOR LEER. Le coloque éste Wait 2000 para esperear que los recursos carguen haber si esto soluciona el problema.

Wait 2000
PlaySound "[audio]" false
SetAttribute "palabra" "color" "Blue"
ShowObject "palabra" "fadeIn" 15
SetVar "[waitLog]" ""
EndWait

. FAVOR LEER. Luego de sonar el audio de una palabra le digo que espere 15000 Pensando en darle tiempo a la reproduccion del sonido (Tiempo que es exagerado)
. FAVOR LEER. En un contenedor hago seguimiento y ese Wait/EndWait 15000 lo ejecuta de ultimo. El orden en que se ejecuta es B. C. D. A. y no veo el porqué

Wait 15000
AnimateObject "palabra" "513" "282" 1000 "easeInQuad" ""
SetAttribute "palabra" "color" "red"
AnimateObject "palabra" "0" "282" 1000 "easeInQuad" ""
SetVar "[waitLog]" "[waitLog] A. After Wait 15000 [audio], animacion atributos<br/>"
SetObjectHTML "WaitLog" "[waitLog]"
EndWait

. FAVOR LEER. He puesto aquí el PlaySound "[ssi1]" y tampoco funcionó. Igual con [ssi2] e [ssi3]

Wait 10000
If [ssi1] != ""
PlaySound "[ssi1]" false
ShowObject "si1" "fadeIn" 13
SetVar "[waitLog]" "[waitLog] B. Wait 10000[ssi1], animacion atributos<br/>"
Endif
EndWait

Wait 10000
If [ssi2] != ""
PlaySound "[ssi2]" false
ShowObject "si2" "fadeIn" 13
SetVar "[waitLog]" "[waitLog] C. Wait 10000 [ssi2], animacion atributos<br/>"
Endif
EndWait

Wait 10000
If [ssi2] != ""
PlaySound "[ssi3]" false
ShowObject "si3" "fadeIn" 13
SetVar "[waitLog]" "[waitLog] D. Wait 10000 [ssi3], animacion atributos<br/>"
Endif
EndWait
. FAVOR LEER. Suspendi la reproduccion de los audios uno a uno y no funciono. Y tambien todos y el asunto fue peor. No los supendi y tampoco funcionó
. FAVOR LEER. Si no los supendo, me dice que se está reproduciendo y es el anterior
. FAVOR LEER. No reproduce nunca la primera silaba
.StopSound ""
StopSound "[ssi1]"
StopSound "[ssi2]"
StopSound "[ssi3]"
StopSound "[audio]"
.PlaySound "[audio]" false
. FAVOR LEER. También intente incluir los wait 10000 dentro de wait 15000 y tampoco funciona.
.EndWait
.ShowObject "Rectangle1" "fadeIn" 15
.DrawRect "Rectangle1" "" "0" "0" "400" "50" "orange" "" "green"
.DrawCircle "Rectangle1" "circle1" "15" "25" "30" "" "0" "white"
.ShowObject "lapalabra" "rotateInDownLeft" 15

Espero que su ayuda y orientación me permita saber que decision tomar. No me rinde y así no me sirve, es más el tiempo que estoy perdiendo.

 

Muchas Gracias.

 

Uploaded files:
  • You need to login to have access to uploads.

@carlos-alberto-montoya-cano entiendo tu frustración pero creo que no has terminado de entender bien la explicaicón de @gaev. Un WAIT no espera a que el anterior WAIT haya finalizado para empezar a contar su tiempo de espera. Esto significa que si tienes varios "WAIT 10000" todos ellos se ejecutarán a la vez.

Si quieres una ejecución secuencial (que algo empiece a ejecutarse más tarde que el anterior) tienes que utilizar valores para el wait progresivamente mayores.

Además el código que hay detrás de un WAIT ... ENDWAIT se ejecuta inmediatamente, no después del código que hay dentro del bloque WAIT.

Así si pones algo como esto:

Wait 2000
  AlertBox "Mensaje 1" "Este es el primer mensaje" ""
EndWait
AlertBox "Mensaje 2" "Este es el segundo mensaje mensaje" ""

Verás el segundo mensaje antes que el primero ya que el primero tardará dos segundops en aparecer.

En VisualNEO Win, el comando Wait simplemente detiene la ejecución del programa durante un tiempo mientras que VisualNEO Web puede ejecutar varios hilos de código diferentes al mismo tiempo.

Espero haberte servido de ayuda.

Saludos.

Open chat
1
Do you need more info?
Hi, do you have any doubt?