Archivo de audio en C

Iniciado por Baal_30, 19 Julio 2014, 12:07 PM

0 Miembros y 1 Visitante están viendo este tema.

leosansan

Cita de: Baal_30 en 19 Julio 2014, 18:41 PM
Bien explicado, lo malo es que yo uso Dev++, y estoy mirando en "proyecto" pero no me deja escoger ninguna opción :/

"Creo" que en DeV++, una vez que creas un nuevo proyecto, vas a Project y en el mismo a Project Options y en la pestaña Parameters te sitúas en la columna Linker y ahí usas el botón Add Library Object y en la ventanita que se abre seleccionas el libwinmm.a o el que sea.

¡¡¡¡ Saluditos! ..... !!!!



ivancea96

Si no te quieres liar, simplemente pon:

Código (cpp) [Seleccionar]
#include <windows.h>

int main(){
    PlaySound("ruta/archivo.wav",NULL,SND_FILENAME);
    return 0;
}


Así se escuchará el sonido y se detendrá el programa hasta que acabe.

leosansan


Y otra pequeña variante:

Código (cpp) [Seleccionar]
#include <windows.h>

int main(void){
  sndPlaySound("C:/WINDOWS/Media/notify.wav",0);
  return 0;
}


¡¡¡¡ Saluditos! ..... !!!!



Baal_30

¿Que diferencia hay entre el código de ivancea96 y de leosansan? Ambos son muy parecidos a system("MiCancion.mp3"); Lo que pasa que con "system" sólo se puede usar con windows. ¿O estoy equivocado?

Y respecto a la otra manera, ya he añadido el libwinmm.a al proyecto, pero no se como crear el res.h y res.rc de la forma que dice daryo, no lo encuentro en Dev ++ :/
«La suerte es el cuidado de los detalles». -Winston Churchill

leosansan

Cita de: Baal_30 en 20 Julio 2014, 13:15 PM
¿Que diferencia hay entre el código de ivancea96 y de leosansan? Ambos son muy parecidos a system("MiCancion.mp3"); Lo que pasa que con "system" sólo se puede usar con windows. ¿O estoy equivocado?

Y respecto a la otra manera, ya he añadido el libwinmm.a al proyecto, pero no se como crear el res.h y res.rc de la forma que dice daryo, no lo encuentro en Dev ++ :/

Creo que todos los que te hemos puesto son para Windows.

Y respecto a lo segundo, una vez que has creado el proyecto y añadido la librería le das a File y en él a New y a su vez a Source File. Te preguntará si añadir al proyecto y le dices que sí y lo guardas como res.rc. Y análogamente con el otro fichero.


¡¡¡¡ Saluditos! ..... !!!!



ivancea96

System no reproduce el archivo de audio.
system("comando") es como escribir "comando" en la consola.
Al abrirlo con al consola, se abre el archivo con el programa predeterminado para su extensión

Baal_30

Genial, ya he probado todas las formas y todas funcionan correctamente, y con la de "PlaySound(MAKEINTRESOURCE(SONIDO),NULL,SND_RESOURCE);" me funciona hasta cambiando el archivo de carpeta, no se si esto es lo normal xD

¿Alguien me puede explicar palabra por palabra la función "PlaySound(MAKEINTRESOURCE(SONIDO),NULL,SND_RESOURCE);"? Se lo agradecería bastante.

También me surje la duda de que, C entonces no puede abrir archivos mp3, pero si .wav, y para todos los códigos que me habéis dicho, el archivo de audio tiene que estar en la misma carpeta del proyecto, o bien añadir su ruta.

En cambio con la función que he usado aquí arriba, el archivo se une directamente al proyecto, por lo que me parece. ¿No?

Gracias a todos :)
«La suerte es el cuidado de los detalles». -Winston Churchill

ivancea96

Compruébalo. Si al peso del ejecutable se le suma el peso del archivo WAV o parecido, sí, se le une.

daryo

#18
Cita de: Baal_30me funciona hasta cambiando el archivo de carpeta, no se si esto es lo normal xD
como te decia queda dentro del ejecutable por eso hasta borrando el sonido una vez compilado te funcionaria

Cita de: Baal_30no puede abrir archivos mp3,
obvio se puede pero no con playsound.

Citar¿Alguien me puede explicar palabra por palabra la función
PlaySound(MAKEINTRESOURCE(SONIDO),NULL,SND_RESOURCE);
pues a ver el primer parametro

MAKEINTRESOURCE(SONIDO)

aca le digo que seleccione el archivo que se llama SONIDO.el nombre(SONIDO) lo declaramos en resource.rc y resource.h gracias a estos archivos todo queda dentro del mismo ejecutable es lo que se llama resource(recurso) al igual que los iconos que estan en el mismo ejecutable o en algunos casos  las imagenes.

NULL
en este caso es un parametro que no nos interesa por eso se le pone NULL , es un handle.

SND_RESOURCE Le indicamos que el archivo a reproducir es un recurso , si no dara error o no lo reproducira


PlaySound("ruta/archivo.wav",NULL,SND_FILENAME);
mira que cambian los parametros ya no hay recursos:
SND_FILENAME
aca se le dice que no es un recurso si no un archivo asi que lo unico que hace es buscar el archivo y reproducirlo
http://msdn.microsoft.com/en-us/library/windows/desktop/dd743680%28v=vs.85%29.aspx
buenas

Baal_30

Gracias a todos por responder, y daryo genial explicación, muchas gracias ^^

Así que, al crear el resource.rc y resource.h, el archivo de audio se mete dentro del ejecutable, guardandose en él ¿? Genial.

«La suerte es el cuidado de los detalles». -Winston Churchill