Sounddd
Sounddd
HOla tengo la isguiente situacion.. y keria ver si alguno se le ocurre alguna ideaa
Abro con _soundopen() X archivo..
Mas tarde lo llamo a reproducir. con _soundplay.. digamos k tarda 10 seg y yo antes de k akabe.. digamos por los 4 segundos deseo volver a reproducirlo SIN que se apague o pausee o deje de escucharse el primeroo.. y asii. tantas veces lo fuera necesario...
Pense.. hacer...
If _SoundStatus($sonido) Playing Then
_soundplay($sonido2) ..
Else
_soundplay($sonido1)
endfi
pero en no iria abrir miles de copias :O
alguna idea??
Salu2
Abro con _soundopen() X archivo..
Mas tarde lo llamo a reproducir. con _soundplay.. digamos k tarda 10 seg y yo antes de k akabe.. digamos por los 4 segundos deseo volver a reproducirlo SIN que se apague o pausee o deje de escucharse el primeroo.. y asii. tantas veces lo fuera necesario...
Pense.. hacer...
If _SoundStatus($sonido) Playing Then
_soundplay($sonido2) ..
Else
_soundplay($sonido1)
endfi
pero en no iria abrir miles de copias :O
alguna idea??
Salu2
Aunk no m Buskes, Seguro m enkontras!
- Chefito
- Profesional del Autoit
- Mensajes: 2035
- Registrado: 21 Feb 2008, 18:42
- Ubicación: Albacete/Cuenca (España)
Re: Sounddd
Para hacer eso tienes que sacar primero la duración del archivo de sonido con _SoundLength.
Una vez que sabes esto, compara en un bucle o un AdlibRegister, etc cada poco tiempo la posición actual del sonido que se está reproduciendo (_SoundPos) con la duración total del sonido que has sacado al principio menos 4 segundos. Cuando se cumpla esta condición (que la posición de la canción que se está reproduciendo es mayor o igual que la duración total de la canción menos 4 sg.), le dices que reproduzca el segundo archivo de sonido y ya está .
Si quieres que esto se haga continuamente entre dos archivos de sonido, pues antes de cualquier cosa cargas los dos archivos con _soundopen.
Dentro de la última condición que te dije antes, la que se cumple cuando faltan 4 segundos, pones otra condición comparando el estado con _SoundStatus de las dos canciones (puedes comparar o que está parada (stopped) o que se está reproduciendo (playing)....a elegir). Sabiendo cual está parada.....ya sabes que esa es la siguiente que debes reproducir . Lo mismo si lo haces con la que se está reproduciendo. También puedes hacerlo comparando la posición de la canción. Si una está en la posición 0, pues ya sabes que esta es la que se tiene que reproducir.
Saludos.
Una vez que sabes esto, compara en un bucle o un AdlibRegister, etc cada poco tiempo la posición actual del sonido que se está reproduciendo (_SoundPos) con la duración total del sonido que has sacado al principio menos 4 segundos. Cuando se cumpla esta condición (que la posición de la canción que se está reproduciendo es mayor o igual que la duración total de la canción menos 4 sg.), le dices que reproduzca el segundo archivo de sonido y ya está .
Si quieres que esto se haga continuamente entre dos archivos de sonido, pues antes de cualquier cosa cargas los dos archivos con _soundopen.
Dentro de la última condición que te dije antes, la que se cumple cuando faltan 4 segundos, pones otra condición comparando el estado con _SoundStatus de las dos canciones (puedes comparar o que está parada (stopped) o que se está reproduciendo (playing)....a elegir). Sabiendo cual está parada.....ya sabes que esa es la siguiente que debes reproducir . Lo mismo si lo haces con la que se está reproduciendo. También puedes hacerlo comparando la posición de la canción. Si una está en la posición 0, pues ya sabes que esta es la que se tiene que reproducir.
Saludos.
Cita vista en algún lugar de la red: En este mundo hay 10 tipos de personas, los que saben binario y los que no ;).
Re: Sounddd
Claroo. es lo k hice.. el tema es k tengo un solo sonido... pero yo no kiero k se pare.. kiero k el mismo se escuche y a los 4 seg otra ves sin k el primero s e pare.. PERO siempre y cuando sea el mismo...Chefito escribió:Si quieres que esto se haga continuamente entre dos archivos de sonido, pues antes de cualquier cosa cargas los dos archivos con _soundopen.
Dentro de la última condición que te dije antes, la que se cumple cuando faltan 4 segundos, pones otra condición comparando el estado con _SoundStatus de las dos canciones (puedes comparar o que está parada (stopped) o que se está reproduciendo (playing)....a elegir). Sabiendo cual está parada.....ya sabes que esa es la siguiente que debes reproducir . Lo mismo si lo haces con la que se está reproduciendo. También puedes hacerlo comparando la posición de la canción. Si una está en la posición 0, pues ya sabes que esta es la que se tiene que reproducir.
Saludos.
osea.. tenia algo con
$sonido1 = _soundopen("sonido1")
$sonido2 = _soundopen("sonido1")
$sonido3 = _soundopen("sonido1")
osea. es el mismo el sonido.. solo k habierto multiples veces.. el tema es k digamos k es impredecible la cantidad de veces k llamaria al sonido a reproducir... osea. k no puedo determinar. X cantidad de soundopen para un solo sonido..
a lo mejor pense llamarlo y k se reprodusca ilimitada mente.. pero parece k nose puede :O
Aunk no m Buskes, Seguro m enkontras!
- Chefito
- Profesional del Autoit
- Mensajes: 2035
- Registrado: 21 Feb 2008, 18:42
- Ubicación: Albacete/Cuenca (España)
Re: Sounddd
Hombre, el método que te explico al principio vale igual para un mismo sonido que para dos sonidos distintos.
No tienes que abrir el sonido muchas veces, con que solo la abras dos y luego trabajes con los IDs que te devuelve la función _soundopen te sirve.
Si no sabes lo que te estoy diciendo dimelo y te pongo un ejemplo de lo que quieres.
Saludos.
No tienes que abrir el sonido muchas veces, con que solo la abras dos y luego trabajes con los IDs que te devuelve la función _soundopen te sirve.
Si no sabes lo que te estoy diciendo dimelo y te pongo un ejemplo de lo que quieres.
Saludos.
Cita vista en algún lugar de la red: En este mundo hay 10 tipos de personas, los que saben binario y los que no ;).
Re: Sounddd
sii haber.. lo del tiempo es lo de menos. pork mi idea es pasar esto al teclado.. osea.. cuando presione X empieza a reproducir.. y bueno pasa un tiempo y aun no se detuvo el anterior. vuelvo a presionar X y el mismo sonido. solamente k desde el principio.. y siguen ambos escuchandose. solo k en distinta posicion.. y asi tantas veces kisiera. (no demasiadas k digamos )
Ok ponme un ejemplo xq kreo k no cazo tu idea..
Ok ponme un ejemplo xq kreo k no cazo tu idea..
Aunk no m Buskes, Seguro m enkontras!
- Chefito
- Profesional del Autoit
- Mensajes: 2035
- Registrado: 21 Feb 2008, 18:42
- Ubicación: Albacete/Cuenca (España)
Re: Sounddd
Marchando un ejemplillo:
He cambiado lo de la segunda condición y he utilizado una variable auxiliar ($sonidoActual) para saber cual se está reproduciendo actualmente.
Lo he dejado más o menos comentado.
El código reproduce una misma canción continuamente. Se van alternando 4 sg. antes de que se acabe la que se está reproduciendo actualmente. Y así de continuo.
Se pueden solapar las canciones sin problemas. También se puede hacer con dos canciones diferentes, cargandolas.
Saludos.
Código: Seleccionar todo
#include <sound.au3>
$sonido1=_SoundOpen(@scriptdir & "\b.mp3") ;cargamos el sonido para que nos de un identificador.
$sonido2=_SoundOpen(@scriptdir & "\b.mp3") ;cargamos el mismo sonido para que nos de un identificador distinto.
$duracion=_SoundLength($sonido1,2)-4000 ;almacenamos la duración del sonido en milisg. menos 4 sg.
$sonidoActual=$sonido1[0]
_SoundPlay($sonido1)
While 1
Sleep(10)
If $sonidoActual=$sonido1[0] Then ;si el id del sonido es el que se está ejecutando, almacenado en $sonidoActual, entra en la condición.
If _SoundPos($sonido1,2)>=$duracion Then ;si la posición actual del sonido en milisegundos es mayor o igual a la duración del sonido menos 4 sg. entra aquí.
$sonidoActual=$sonido2[0] ;asignamos el 2º id del sonido a $sonidoActual para que entre en el else.
_SoundPlay($sonido2)
EndIf
Else
If _SoundPos($sonido2,2)>=$duracion Then
$sonidoActual=$sonido1[0]
_SoundPlay($sonido1)
EndIf
EndIf
WEnd
Lo he dejado más o menos comentado.
El código reproduce una misma canción continuamente. Se van alternando 4 sg. antes de que se acabe la que se está reproduciendo actualmente. Y así de continuo.
Se pueden solapar las canciones sin problemas. También se puede hacer con dos canciones diferentes, cargandolas.
Saludos.
Cita vista en algún lugar de la red: En este mundo hay 10 tipos de personas, los que saben binario y los que no ;).
Re: Sounddd
emmm. yesss funciona perfectoo.. y eslo k probe antes :O.. pero entonces para ver si me kedo claro tu idea.. habria k abrir tantas veces ccon SundOpen para obtener otros ID como sean necesario???
pork ahi esta the problem :O ,m porque hasta kisas necesite k en lugar de 2 a la ves en algun momento vallan 3, o cuatro, y si kisas se mezclee pero eso no seria nada..
P/D: creo k no se puede como digo. tendra un limite con tantos SounOpen k le ponga... pork en flash vi se podia :O
Saludooos
pork ahi esta the problem :O ,m porque hasta kisas necesite k en lugar de 2 a la ves en algun momento vallan 3, o cuatro, y si kisas se mezclee pero eso no seria nada..
P/D: creo k no se puede como digo. tendra un limite con tantos SounOpen k le ponga... pork en flash vi se podia :O
Saludooos
Aunk no m Buskes, Seguro m enkontras!
- Chefito
- Profesional del Autoit
- Mensajes: 2035
- Registrado: 21 Feb 2008, 18:42
- Ubicación: Albacete/Cuenca (España)
Re: Sounddd
Sí, si quieres manejar independientemente esos ficheros de sonido tienes que abrirlos con soundopen cada uno. Pero no hay ningún problema con esto. Incluso si no sabes exactamente cuantos sonidos tienes que reproducir en tiempo de diseño, puedes hacer una función que los haga en tiempo de ejecución, asignando el valor de los soundopen a una variable tipo matriz que se vaya redimensionando según vayas necesitando abrir archivos de sonido. Eso sí, el nombre y ubicación del fichero se lo tendrías que pasar de alguna forma.gna08 escribió:habria k abrir tantas veces ccon SundOpen para obtener otros ID como sean necesario???
Pues no se cual será el límite de sonidos que se pueden reproducir al mismo tiempo, pero supongo que sean muchos (hasta que pete el ordenata ). Yo para probar, he reproducido 8 al mismo tiempo y parece que ha ido bien. Eso sí, no se entendia nada de la mezcla de canciones que había .gna08 escribió:pork ahi esta the problem :O ,m porque hasta kisas necesite k en lugar de 2 a la ves en algun momento vallan 3, o cuatro, y si kisas se mezclee pero eso no seria nada..
Se puede hacer casi todo, y yo creo que el caso que espones se podría hacer perfectamente. Supongo que el límite siempre lo ponga los componentes del ordenador (micro, memoria, tarjeta de sonido). Yo he probado los 8 en un p4 a 1600 mhz con 768 mb de memoria ram (sdram creo ). Como ves bastante bastante antiguo .gna08 escribió:P/D: creo k no se puede como digo. tendra un limite con tantos SounOpen k le ponga... pork en flash vi se podia :O
Yo creo que se podría hacer un pequeño programa editor y creador de sonido pudiendo añadir bastantes pistas . Aunque si quieres hacer cosas más serias, recomiendo mirar alguna librería para esto, como por ejemplo directx (directsound, directmusic, directshow). Hay otras librerías y otros componentes para estas cosas. Ejemplo: Simple DirectMedia Layer (libSDL) puede que se pueda utilizar en AutoIt . Un control con el que yo hice algo en vb6 (año 2002 o por ahí) un poco antiguo (no se si habrán sacado alguna versión más) pero que estaba chulo y creo que era gratuíto es el DMC2. Puedes mirar en la red que seguro que lo encuentras.
Y seguro que hay muchas más librería y controles para el manejo de sonido. Es cuestión de buscar y probar.
Saludos.
Cita vista en algún lugar de la red: En este mundo hay 10 tipos de personas, los que saben binario y los que no ;).