Foros del Web » Programación para mayores de 30 ;) » Programación General »

como correr .wavs en c++ ?

Estas en el tema de como correr .wavs en c++ ? en el foro de Programación General en Foros del Web. Hola Ando trabajando en un programa muy simple. pero tengo problemas a la hora de meterle sonido. estoy tratando de correr #include<stdio.h> #include<conio.h> #include<stdlib.h> #include<Windows.h> ...
  #1 (permalink)  
Antiguo 08/01/2005, 21:53
 
Fecha de Ingreso: enero-2004
Mensajes: 6
Antigüedad: 20 años, 3 meses
Puntos: 0
como correr .wavs en c++ ?

Hola

Ando trabajando en un programa muy simple. pero tengo problemas a la hora de meterle sonido. estoy tratando de correr

#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<Windows.h>

void main()
{
PlaySound("main.wav", NULL, SND_FILENAME | SND_ASYNC);
getch();
getch();
}


Segun he investigado la funcion playsound() se encuentra en la libreria winmm.lib y he aqui donde tengo mi problema no logro incluirla.

Estoy usando Borland C++ 5.02

alguien me podria ayudar diciendome como agregar esta libreria a mi programa ?

o si alguien tiene un programa que haya hecho que haga esto que quiero (reproducir wavs) se los agradeceria mucho

Muchas gracias de antemano a todos
  #2 (permalink)  
Antiguo 09/01/2005, 03:15
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 19 años, 11 meses
Puntos: 74
Borland no usa COFF para las librerias sino OMF creo que deberías usar un programa que viene con Borland llamado implib para generar la winmm.lib a partir de la winmm.dll (que es donde realmente estan las funciones) el winmm.lib es utilizado para enlazar las funciones.

Como no tengo Borland (afortunadamente) te voy a dar otra solución que es la siguiente:

Código:
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <Windows.h>

typedef BOOL (*PlaySoundA_ptr) (char*, HMODULE, DWORD); 
PlaySoundA_ptr fn_PlaySound = 0;

void main()
{
  HMODULE Lib = LoadLibrary("winmm.dll");
  if (Lib)
  {
    fn_PlaySound =  (PlaySoundA_ptr)GetProcAddress(Lib, "PlaySoundA");
    if (fn_PlaySound)
    {
      fn_PlaySound("main.wav", NULL, SND_FILENAME | SND_ASYNC);
    }
    else
    {
      MessageBox(0, "Error", "No se encontro la función PlaySoundA", 0);
    }
    getch();
    getch();
    FreeLibrary(Lib);
  }
  else
  {
    MessageBox(0, "Error", "No se pudo cargar winmm.dll", 0);
  }
}
El chiste es cargar la libreria dinamicamente y así no tener que enlazarla con la libreria de importación.
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO

Última edición por Eternal Idol; 09/01/2005 a las 03:27
  #3 (permalink)  
Antiguo 09/01/2005, 09:02
Avatar de Instru  
Fecha de Ingreso: noviembre-2002
Ubicación: Mexico
Mensajes: 2.751
Antigüedad: 21 años, 5 meses
Puntos: 52
Si quieres algo que maneje el sonido totalmente manual, usa una libreria grafica o de sonido a parte.
SDL tiene mal sonido, pero es facil de usar, tiene una funcion para cargar wavs y reproducirlos y mpararlos.
Allegro tiene buen sonido, tambien puedes cargar wavs y midis.
DirectX es mucho mas dificil de usar, pero tine muy buen sonido,
Y pues te quedaria tambien fmod que segun se es la mejor libreria de sonido que existe. Con ella creo que no puedes cargar wavs, pero si puedes leerlos manualmente.

Saludos
  #4 (permalink)  
Antiguo 09/01/2005, 10:25
 
Fecha de Ingreso: enero-2004
Mensajes: 6
Antigüedad: 20 años, 3 meses
Puntos: 0
Hola, gracias por la pronta respuesta, se les agradece mucho.

lamentablemente no me funciono ese codigo, me marco que no puede cargar el winmm.dll :

No se encuentra el punto de entrada del procedimiento mciSendCommandA en la biblioteca de vinculos dinamicos winmm.dll.

alguna idea de como cargar el winmmdll ??? o hay algun paso que yo este omitiendo por alli ?

gracias
  #5 (permalink)  
Antiguo 09/01/2005, 10:44
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 19 años, 11 meses
Puntos: 74
¿mciSendCommandA? ¿Lo estas usando en tu código en algún momento?
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO

Última edición por Eternal Idol; 09/01/2005 a las 10:49
  #6 (permalink)  
Antiguo 09/01/2005, 10:46
 
Fecha de Ingreso: enero-2004
Mensajes: 6
Antigüedad: 20 años, 3 meses
Puntos: 0
no para nada eso es lo qu eme extraña, usel el codigo tal cual de aca arriba el que me dieron uds
  #7 (permalink)  
Antiguo 09/01/2005, 10:49
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 19 años, 11 meses
Puntos: 74
¿Que Sistema Operativo tenes?
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
  #8 (permalink)  
Antiguo 09/01/2005, 10:51
 
Fecha de Ingreso: enero-2004
Mensajes: 6
Antigüedad: 20 años, 3 meses
Puntos: 0
windows xp
y estoy usando borland c++ version 5.02
  #9 (permalink)  
Antiguo 09/01/2005, 10:53
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 19 años, 11 meses
Puntos: 74
Proba cambiando a:

fn_PlaySound = (PlaySoundA_ptr)GetProcAddress(Lib, "PlaySound");
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
  #10 (permalink)  
Antiguo 09/01/2005, 10:57
 
Fecha de Ingreso: enero-2004
Mensajes: 6
Antigüedad: 20 años, 3 meses
Puntos: 0
me sigue marcando el mismo error,
una pregunta esto lo puedo correr desde text edit o tiene que ser como proyecto afuerzas ?

una pregunat mas (con la pena) tienes msn ? para no andar haciendote esperar con una respuesta ?
  #11 (permalink)  
Antiguo 09/01/2005, 11:01
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 19 años, 11 meses
Puntos: 74
Si, te lo mando en un msg.
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
  #12 (permalink)  
Antiguo 09/01/2005, 13:59
 
Fecha de Ingreso: enero-2004
Mensajes: 6
Antigüedad: 20 años, 3 meses
Puntos: 0
listo hemos logrado hacerlo funcionar, muchisimas gracias a todos por su ayuda y tiempo y en especial a Eternal Idol quien em ayudo excesivamente, muchas gracias
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:34.