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
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...
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
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.
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 !
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...
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.-
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...
Gracias por todo!!.
Creo que solucione el problema.
despues te cuento !!!
Sebastian