Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





subir y bajar volumen

Iniciado por romherz, 04 de Mayo de 2007, 08:18:35 AM

« anterior - próximo »

romherz

saludos !

eh estado usando la libreria por un buen rato, eh visto los ejemplos de la libreria anterior y ahora estoy usando la dx_lib32v21190,  pero tengo una duda que me esta matando, que es la siguiente:

Id = m_Sound.MUSIC_Load(Rse.Fields(3))  'Carga la secuencia de sonido en memoria.
Call m_Sound.MUSIC_Play(Id, Primary_Buffer) 'Comenzamos a reproducir el sonido.
                                     
Call m_Sound.MUSIC_SetVolume(Primary_Buffer, Volume)
                   
Label3.Caption = Volume
Label4.Caption = m_Sound.MUSIC_GetVolume(Primary_Buffer)

explico lo que intento hacer, en rse.fields(3) tengo la ruta del archivo completa, antes la eh filtrado y eh comprobado que exista, en id es el identificador de musica, cuando reproduzco lo hago en primary_buffer, en volume tengo un valor 40, como veran no quiero reproducirlo al 100% que maneja, sino que al cargarlo quiero que lo haga al 40%, al menos en teoria y a lo visto en el ejemplo que tengo sobre video, de la version anterior, al ponerlo asi, deberia de ajustar el audio, peeeero que creen, no lo hace, asi que me puse a ver si al cargar el valor de Volume esta al 40 y si lo esta (lo muestro en label3) y despues de pasarle el setvolume checo el valor en el que esta mi volumen y sigue al 100 !!! me dije a mi mismo, tengo que hacerlo a fuerza, y comienzo a moverle el sonido en tiempo de ejecucion (le asigne a las tecla flecha arriba y flecha abajo respectivamente) y del valor Volume al ponerse al 40, en el valor del buffer es 100, si pongo a 39, queda en 99 el del buffer y asi sucesivamente hasta llegar al 60 del buffer y en 0 el de value, mi pregunta es, que puede que este haciendo mal? estoy usando audio y video, pero o reproduzco uno o reproduzco otro, no al mismo tiempo, pero no eh sido capaz de dar con error, alguien me podria explicar? modifique el ejemplo de la version anterior y estoy por subirlo, bueno, muchas gracias ... y espero alguna respuesta ... bye

[EX3]

Esto es un bug que ya tengo noticia de el desde hace tiempo. El tema de volumen es algo que tengo que solucionar tanto en el apartado de sonido como en el de musica. Como DirectSound y DirectShow trabajan en escalas de -10000 a 10000 los rangos de valores para el volumen yo quise simplificarlo a una escala logica de 0 a 100 a modo de porcentaje. El tema es que o estoy haciendo mal o el volumen lo trabajan en valores un tanto desconcertantes por lo que pude ver en algunos tutoriales de los que me base.

La solucion que le vi hace unos meses era rebajar el rango de valores a la mitad en el caso de la musica (esto de forma transparente al usuario que seguiria trabajando en una escala de 0 a 100) ya que como has descubierto no se afecta hasta llegar a un valor por debajo de 50. En el apartado de sonido esto sucede al reves si no recuerdo mal, se queda casi o parcialmente en silencio a partir de 50 quedando habiles para modificar solo los ultimos 50 valores (de 50 a 100).

Salu2...

P.D.: Me hace gracia que no sea fiero quien me avise de un error en la clase de audio, es quien encontro la mayoria al principio de publicar la libreria :lol:
José Miguel Sánchez Fernández
.NET Developer | Game Programmer | Unity Developer

Blog | Game Portfolio | LinkedIn | Twitter | Itch.io | Gamejolt

romherz

aunque si te das cuenta, e igual el funcionamiento del isplaying tiene un error o no se como se le llame, ahorita no tengo mi codigo a la mano, pero lo que me acuerdo es que cuando quieres ejecutar otro mp3 y checas isplaying, nomas no salta a la otra cancion, es decir, que isplaying no detecta cuando termina, yo lo solucione por el momento al comparar el tiempo de recorrido de la cancion y comparandolo con el final del mp3, bueno, ahorita estoy esplicando mal, pero al rato lo redacto mas y pongo a lo que me refiero, y mientras voy a ver como bajo el volumen, muchas gracias =)

[EX3]

Cita de: "romherz"isplaying no detecta cuando termina
Acabo de hacer la prueba reproduciendo y cargando a mitad de cancion otro archivo y a mi si me detecta cuando termina de reproducir el buffer. La comprobacion de estado de MUSIC_IsPlaying() es justo la misma que haces a mano comparando la posicion de reproduccion con la duracion.

Sobre el volumen, la solucion por ahora es facil, en vez de trabajar con el rango completo de 0 a 100 trabaja solo con el rango de 0 a 40.

Cita de: "[EX3"]El tema es que o estoy haciendo mal o el volumen lo trabajan en valores un tanto desconcertantes por lo que pude ver en algunos tutoriales de los que me base.
Ya se por que falla el asunto. Como el rango real de valores es de -10000 a 10000 y yo lo trabajo en un rango de 0 a 100 los pasos en mi rango son  muy largos y por eso en los tutoriales y la primera version al configurar el volumen a 50 este ya se silenciaba casi por completo. Por esto tenia hecho una chapucilla para intentar alterar el valor final para evitar ese silenciamiento tan prematuro. Para la proxima version ya vendra corregido, pero volvera a suceder lo de antes, de 50 a 0 seguramente el volumen de la musica sea inapreciable.

Salu2...
José Miguel Sánchez Fernández
.NET Developer | Game Programmer | Unity Developer

Blog | Game Portfolio | LinkedIn | Twitter | Itch.io | Gamejolt






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.