Programadores => Programación de audio => Mensaje iniciado por: [EX3] en 23 de Octubre de 2008, 11:22:28 pm

Título: Problemas al crear un buffer secundario en DirectSound8 con flag DSBCAPS_CTRLFX
Publicado por: [EX3] en 23 de Octubre de 2008, 11:22:28 pm
Wenas.

Estoy intentando crear un buffer secundario vacio para escribir el contenido de otro buffer secundario previamente modificado. El tema es que me falla con un bonito error 5 del VB6 (llamada a procedimiento o argumentos nos validos) a la hora de crearlo mediante CreateSoundBuffer(). Me he fijado que los flags que tengo configurados para los bufferes secundarios, si le quito el flag DSBCAPS_CTRLFX de los efectos de audio si crea el buffer, pero claro, yo necesito que tenga ese flag configurado en la descripcion del buffer (sobra decir que con CreateSoundBufferFromFile() si funciona).

En la doc del SDK no he visto ninguna restriccion referente a dicho flag. En concreto son estos los flags que utilizo en el resto de bufferes: DSBCAPS_CTRLPAN, DSBCAPS_CTRLVOLUME, DSBCAPS_CTRLFREQUENCY, DSBCAPS_GLOBALFOCUS y DSBCAPS_CTRLFX.

Alguna idea?

Gracias.

Salu2...
Título: Re: Problemas al crear un buffer secundario en DirectSound8 con flag DSBCAPS_CTRLFX
Publicado por: davidgf en 24 de Noviembre de 2008, 12:33:11 am
Si no usas ese flag funciona? Es un poco cap***o el DirectSound. Prueba en algun otro PC y sobre todo prueba a variar los demás parametros.
A mi me pasaban cosas así muy a menudo, y como el VB es muy "claro" con su error 5 lo mejor es buscar en google o probar y probar.

En fin, ni idea jeje

Saludos!
Título: Re: Problemas al crear un buffer secundario en DirectSound8 con flag DSBCAPS_CTRLFX
Publicado por: [EX3] en 24 de Noviembre de 2008, 01:05:46 am
Ya da igual, el tema es que esto viene a cuento de un error que da DirectSound al cargar archivos de sonido extremadamente pequeños en buferes configurados con el flag DSBCAPS_CTRLFX para los efectos FX en audio. La idea era cargar el archivo en un buffer sin ese flag, añadir silencio hasta el tamaño minimo aceptado para poder aplicar efectos, crear un buffer con el flag y volcar en el buffer modificado. Al final lo he solucionado de la forma chapucera que ha sido una vez añadido los silencios al buffer guardarlo en un archivo temporal y despues hacer la carga normal en un buffer con el flag de efectos, tal y como hago normalmente.

Lo realmente extraño del asunto no es que pete la creacion de un buffer que tenga los flags DSBCAPS_CTRLPAN y DSBCAPS_CTRLFX, mas que nada por esta documentado en el SDK, si no que si se pueda crear un buffer con esos flags a partir de un archivo. De todas formas, no es la primera funcion del wrapper de DirectX8 para Visual Basic 6.0 que falla de forma extraña, ya he tenido varios tropiezos en la parte de DirectGraphics.

Salu2...
Título: Re: Problemas al crear un buffer secundario en DirectSound8 con flag DSBCAPS_CTRLFX
Publicado por: davidgf en 30 de Noviembre de 2008, 01:13:53 am
Ciertamente, la más notable es la del CreateTextureFromMemoryEx (o algo similar), con la qual me las vi mucho tiempo hasta abandonar al hechar un google.

La verdad me extraña que nadie haya hecho un wrapper propio, he visto algunos de dx6 i 7 por ahí.

Saludos!
Título: Re: Problemas al crear un buffer secundario en DirectSound8 con flag DSBCAPS_CTRLFX
Publicado por: [EX3] en 30 de Noviembre de 2008, 01:55:09 am
Ciertamente, la más notable es la del CreateTextureFromMemoryEx (o algo similar), con la qual me las vi mucho tiempo hasta abandonar al hechar un google.
Justamente esa fue la primera funcion que me tuvo 3 meses rompiendome los cuernos y sin lograr solucion alguna. La gracia del asunto es que esta funcion si mal no recuerdo me llego a funcionar unica y correctamente con imagenes en formato PNG. Como parasara un array de bytes que contuviera otro formato de imagen, BMP o JPG por ejemplo, la funcion fallaba.

La verdad me extraña que nadie haya hecho un wrapper propio, he visto algunos de dx6 i 7 por ahí.
Hay pocos programadores zumbados y aburridos como para hacer una libreria o motor de DirectX para y en Visual Basic 6.0 imagine alguien que quiera dejarse la piel haciendo un wrapper en C++ :D Yo al final he desistido de continuar mi libreria, aunque esta ha quedado practicamente completada (despues de 6/7 años como para no estarlo :P) y me he tirado de cabeza a XNA, y quien dice XNA dice cualquier libreria o motor que ya este hecho y probado, por que sinceramente, mas que motores yo lo que llevo 7 años queriendo hacer es un puñetero juego  ^_^'

Salu2...