Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Para Ex3

Iniciado por sebastianarroyo, 07 de Enero de 2006, 12:58:48 AM

« anterior - próximo »

sebastianarroyo

 Gracias por responder...
te comento que Probe de todo.
comentame como haces vos para recetear el canal y el buffer.
mi metodo es ... channel = 0

yo lo que note es que por cada nuevo titulo que reproduce el numero de canal se incrementa.
empieza con 4096 y suma de a uno por cada nuevo mp3.-

Gracias y saludos.
Sebastian  

[EX3]

 Como te dije la otra vez, sobrescribiendo. Simplemente cargo el sonido en la misma variable donde tengo cargado en anterior. El canal no se resetea, simplemente se reutiliza ya que solo precisas un canal. No se como lo estaras haciendo pero con una simple variable para guardar el sonido y utilizar el mismo canal para reproducir te basta para hacer el reproductor. Te remito como otras veces al codigo de los ejemplos que trae el ZIP de la FMod, que de por si son lo mas parecido a un sencillo reproductor de musica.

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

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

sebastianarroyo

 ok. te cpmento que estoy utilizando el mismo codigo que viene en los ejemplos.
yo trabajo con mezclas pre marcadas en los temas.
y utilizo 2 timer y dentro de los mismos un rerproducor.
ejemplo

Timer1 = si tiempo marcado = al tiempo transcurrido, pongo en marcha el timer2.
Vuelvo a preguntar !! ( pero con el otro timer)

Timer2 = si tiempo marcado = al tiempo transcurrido, pongo en marcha el timer1.

cuando esto sucede mas o menos 400 veces el reproductor FMOD se queda sin memoria.

Por logica por cada condicion el archivo nuevo subscribe el anterior !!!

espero que me entiendas .
Gracias
 

[EX3]

 Creo que tuve un pequeño lapsus (y releyendo los mensajes ahora cai en un ligero detalle). Te comente la otra vez que simplemente sobreescribiendo reciclabas la memoria de esa variable (la instancia del sonido en la libreria) y creo que se me paso un detalle importante. No se si estas cargando los sonidos como Samples o como Streams (supongo que lo primero) pero para liberar la memoria de un sonido cargado hay que llamar a la funcion FSOUND_Sample_Free() pasandole el valor de la instancia del sonido que es el valor que te devuelve la funcion de carga. Seguramente con esto ya no deberias tener problemas de falta de memoria.

Salu2...

P.D.: Mirate la doc de la FMod, vienen las funciones con breves explicaciones de lo que hacen y la sintaxis de sus llamadas.
José Miguel Sánchez Fernández
.NET Developer | Game Programmer | Unity Developer

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

sebastianarroyo

 nuevamnete gracias ....
Entiendo perfecto tu ejemplo , el problema es que en mi caso tengo que utilizar "Stream", porque "sample" primero descomprime el archivo y lo carga en memoria y lo hace un poco lemto en respuesta al click de play.
"Stream" lo descomprime en pedazos, con esto logra mas rapidez en el momento de reproducir.
El problema que tengo es que en "Stream" no tengo "FSOUND_Stream_Free().

Al mirar los ejemplos en el sip. en ningun momento liberan memoria. utilize ese mismo ejemplo y lo puese a reproducir y cuando llego a las 400 veces adivina lo que paso....... SE PARO TOTODO !!!!
Le envie un mail a FMOD y me digieron que es imposible que este pasando eso !!!.-
QUE HAGO ???? ME SUICIODO ?????.-
Gracias.-

Haa mandame los datos del IRC donde estas vos???
Sebastian !    

[EX3]

 
Cita de: "sebastianarroyo"El problema que tengo es que en "Stream" no tengo "FSOUND_Stream_Free().
Pues entonces usa FSOUND_Stream_Close(). Amos, que podiamos mirar un poco la documentacion, no te parece? No te pienso buscar ninguna funcion mas en la doc, so vago :P

Cita de: "sebastianarroyo"Al mirar los ejemplos en el sip. en ningun momento liberan memoria. utilize ese mismo ejemplo y lo puese a reproducir y cuando llego a las 400 veces adivina lo que paso....... SE PARO TOTODO !!!!
Le envie un mail a FMOD y me digieron que es imposible que este pasando eso !!!.-
QUE HAGO ???? ME SUICIODO ?????.-
Gracias.-
Revisa mejor el codigo por que que yo recuerde cada vez que cargas un nuevo archivo de musica en el ejemplo descargan de la memoria el anterior antes de la nueva carga.

Cita de: "sebastianarroyo"Haa mandame los datos del IRC donde estas vos???
Sebastian !
Si lo dices por el comentario sobre mi nick del IRC en mi firma aclaro que me conecto cada 1000 años al IRC asi que es dificil que me encuentres, pero de hacerlo me veras por estos dos canales como mucho: #ayuda_programacion y #visualbasic. El comentario de la firma iba referido a que me robaron el nick y lo registraron ya que de la falta de uso perdi el registro del mismo. Ahora no pasa dia que no me logge como minimo en el IRC, pero chatear dificil, poco tiempo para programar menos aun para chatear. Sin duda sera en los foros donde me encuentres seguro ;)

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

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

sebastianarroyo

 Heee
tan vago no soy, utilize FSOUND_Stream_Close(). e igualmente no tuve resultados positivos.
me quedo picando lo que me dijiste que en los ejemplos liberan memoria. no encuentro nada referido a eso. estas seguro que en los ejemplos de visual existe ?.
pasame si queres por mail si tenes alguna cuenta en hotmail par joderte por el MSN.
10000 gracias.
Sebatsian.-


[EX3]

 
Cita de: "sebastianarroyo"tan vago no soy, utilize FSOUND_Stream_Close(). e igualmente no tuve resultados positivos.
me quedo picando lo que me dijiste que en los ejemplos liberan memoria. no encuentro nada referido a eso. estas seguro que en los ejemplos de visual existe ?
Extracto del ejemplo para VB incluido en la version 3.74 de FMod:
Private Sub cmdCloseStream_Click()
FSOUND_Stream_Close streamHandle
'You should manually set the handle to 0 after closing the song
'This way, you can see if the song is loaded or not
streamHandle = 0

cmdCloseStream.Enabled = False
cmdOpenStream.Enabled = True
cmdPlayStream.Enabled = False
cmdStopStream.Enabled = False
End Sub


Extracto del ejemplo para VB incluido en la version 3.60:
Private Sub Command1_Click()

CommonDialog1.CancelError = True
CommonDialog1.Filter = "Streaming Sound Files (*.mp3;*.wav;*.ogg;*.mid)|*.mp3;*.wav;*.ogg;*.mid"
On Error GoTo errh
CommonDialog1.ShowOpen

'Stop the song that was playing
If channel1 <> 0 Then
   FSOUND_Stream_Stop stream1
   channel1 = 0
End If
'Free DSP
If dsp1 <> 0 Then
   FSOUND_DSP_Free dsp1
   If USE_EFFECTS Then
       dsp_LowPassClose 0
   End If
End If
'Close any opened file
If stream1 <> 0 Then
   FSOUND_Stream_Close stream1
   stream1 = 0
End If

'Open the new stream
stream1 = FSOUND_Stream_OpenFile(CommonDialog1.filename, FSOUND_2D, 0)
If stream1 = 0 Then
   MsgBox "Error while opening file" & vbCrLf & FSOUND_GetErrorString(FSOUND_GetError)
   lblFile = "No File Opened"
Else
   lblFile = CommonDialog1.filename
End If

'Create the effect
If USE_EFFECTS Then
   dsp1 = dsp_lowpass_create(stream1, 1, 0)
End If

Exit Sub
errh:

End Sub

Ambos ejemplos trabajan los sonidos como streams y utilizan FSOUND_Stream_Close() para descargar el archivo de la memoria.

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

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

sebastianarroyo

 Gracias por todo!!.
Creo que solucione el problema.
despues te cuento !!!
Sebastian






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.