Título: Archivo de audio en C Publicado por: Baal_30 en 19 Julio 2014, 12:07 pm Buenas, hace nada hice una "alarma" en C, con temporizador. El post está por aquí ya que necesité ayuda. Ahora, me gustaría que cuando sonara, en vez del pitido ("\a"), sonase una canción o un archivo de audio que yo quiera, supongo que se podrá, y pediría que alguien me guiase un pelín o me de alguna ayuda sobre el tema.
Gracias de antemano. Título: Re: Archivo de audio en C Publicado por: leosansan en 19 Julio 2014, 14:39 pm Buenas, hace nada hice una "alarma" en C, con temporizador. El post está por aquí ya que necesité ayuda. Ahora, me gustaría que cuando sonara, en vez del pitido ("\a"), sonase una canción o un archivo de audio que yo quiera, supongo que se podrá, y pediría que alguien me guiase un pelín o me de alguna ayuda sobre el tema. Gracias de antemano. Una forma simple sería: Código
si está en la misma carpeta, si no tendrás que especificar la ruta, algo como Código
¡¡¡¡ Saluditos! ..... !!!! (http://st.forocoches.com/foro/images/smilies/aaaaa.gif) Título: Re: Archivo de audio en C Publicado por: daryo en 19 Julio 2014, 14:50 pm que sistema operativo? si es windows te puedo ayudar
Citar Una forma simple sería: esa es la mas simple pero no es la mejor xD Título: Re: Archivo de audio en C Publicado por: ivancea96 en 19 Julio 2014, 15:34 pm Tienes la opción de utilizar una librería que simplifique el tema, como por ejemplo SFML.
Título: Re: Archivo de audio en C Publicado por: Baal_30 en 19 Julio 2014, 16:59 pm Umm, esa forma simple parece muy simple, como funcione que bien :P
Sí, estoy en windows ¡! ¿Alguna otra forma más correcta? (Por lo que he leído la de system no parece la mejor, pero si sencilla) Edito: Va genial, pero, ¿no se puede abrir el archivo con C, verdad? O sea, lo que hace system, es abrir el archivo con el reproductor de windows, para que se abriera en mi programa, tendría que crear yo un reproductor de audio, ¿me equivoco? Gracias Título: Re: Archivo de audio en C Publicado por: leosansan en 19 Julio 2014, 17:23 pm .......................................... .Edito: Va genial, pero, ¿no se puede abrir el archivo con C, verdad? O sea, lo que hace system, es abrir el archivo con el reproductor de windows, para que se abriera en mi programa, tendría que crear yo un reproductor de audio, ¿me equivoco? ................................... Antes que nada, me alegro que lo simple te funcione bien. Conste que yo dije que era un método sencillo, no el mejor. Pero sin usar las API de Windows ni librerías externas no se puede pedir más. Y si no, aquí estamos todos para aprender cosas nuevas. Y sí, el archivo se abre con el reproductor que se corresponda con, en este caso, .mp3. Lo otro sería "crear" un reproductor y eso me suena a palabras mayores. ¡¡¡¡ Saluditos! ..... !!!! (http://st.forocoches.com/foro/images/smilies/aaaaa.gif) Título: Re: Archivo de audio en C Publicado por: Baal_30 en 19 Julio 2014, 17:39 pm De acuerdo ^^ Y con API de windows o alguna librería externa, como iría el tema¿?
Título: Re: Archivo de audio en C Publicado por: daryo en 19 Julio 2014, 17:58 pm Citar Lo otro sería "crear" un reproductor en realidad winapi y otras librerias tienen las herramientas para que eso no sea necesario aun asi hacer un reproductor con SFML por ejemplo tampoco seria tan complicadoCitar con API de windows ok en eso te puedo ayudar asi se reproduce dentro del mismo ejecutableel archivo tiene que ser wav en todo caso hay programas para cambiar el formato con este metodo tienes la ventaja de que no necesitaras archivos externos todo queda dentro del ejecutable. suponiendo que trabajas en code blocks creas un proyecto: luego dentro del proyecto en el menu project -> build options -> linker setings -> add seleccionas el archivo c:\program files\codeblocks\mingw\lib\libwinmm.a la direccion varia dependiendo la carpeta de instalacion de code blocks. te sale una ventana le das que no y luego ok a todo en el main pon esto: para que todo quede en el mismo exe: Código
creamos un archivo llamado res.h en code blocks es asi: dentro del proyecto file -> new -> file -> c/c++ header . dentro del archivo pones: res.h Código
y por ultimo creamos un tercer archivo file ->new->empty file el archivo se debe llamar res.rc y dentro del mismo ponemos el nombre y la ubicacion del wav en mi caso "sonido.wav" res.rc Código
Título: Re: Archivo de audio en C Publicado por: 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 :/
Título: Re: Archivo de audio en C Publicado por: daryo en 19 Julio 2014, 18:49 pm en dev creo que era era Tools->project options-> parameters y ahi pones -lwinmm
en todo caso dev ya esta algo anticuado Título: Re: Archivo de audio en C Publicado por: leosansan en 19 Julio 2014, 18:53 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! ..... !!!! (http://st.forocoches.com/foro/images/smilies/aaaaa.gif) Título: Re: Archivo de audio en C Publicado por: ivancea96 en 20 Julio 2014, 00:53 am Si no te quieres liar, simplemente pon:
Código
Así se escuchará el sonido y se detendrá el programa hasta que acabe. Título: Re: Archivo de audio en C Publicado por: leosansan en 20 Julio 2014, 12:58 pm Y otra pequeña variante: Código
¡¡¡¡ Saluditos! ..... !!!! (http://st.forocoches.com/foro/images/smilies/aaaaa.gif) Título: Re: Archivo de audio en C Publicado por: 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
Código 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 ++ :/ Título: Re: Archivo de audio en C Publicado por: leosansan en 20 Julio 2014, 13:36 pm ¿Que diferencia hay entre el código de ivancea96 y de leosansan? Ambos son muy parecidos a Código 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! ..... !!!! (http://st.forocoches.com/foro/images/smilies/aaaaa.gif) Título: Re: Archivo de audio en C Publicado por: ivancea96 en 20 Julio 2014, 13:47 pm 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 Título: Re: Archivo de audio en C Publicado por: Baal_30 en 20 Julio 2014, 15:59 pm 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 :) Título: Re: Archivo de audio en C Publicado por: ivancea96 en 20 Julio 2014, 17:13 pm Compruébalo. Si al peso del ejecutable se le suma el peso del archivo WAV o parecido, sí, se le une.
Título: Re: Archivo de audio en C Publicado por: daryo en 20 Julio 2014, 17:17 pm Cita de: Baal_30 me 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 funcionariaCita de: Baal_30 no puede abrir archivos mp3, obvio se puede pero no con playsound.Citar ¿Alguien me puede explicar palabra por palabra la función Código pues a ver el primer parametro Código
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. Código en este caso es un parametro que no nos interesa por eso se le pone NULL , es un handle. Código Le indicamos que el archivo a reproducir es un recurso , si no dara error o no lo reproducira Código mira que cambian los parametros ya no hay recursos: Código 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 Título: Re: Archivo de audio en C Publicado por: Baal_30 en 20 Julio 2014, 17:51 pm 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. Título: Re: Archivo de audio en C Publicado por: Baal_30 en 21 Julio 2014, 15:11 pm Perdonarme por continuar con el post y por mi ignorancia, pero ahora no consigo que me funciona con una canción que quiero.
El código queda así : Código
res.h Código
res.rc Código
He probado mil cosas, y buscado por google, pero no me funciona con ninguna. La primera vez, cuando me funcionó, en me salió una pestaña en el DEV++ que salían funciones y cosas que no entendía, pero relacionadas con los audios y el sonido. Ahora al crear el proyecto y linkar el libwinmm.a, no me ha salido ¿quizás sea eso? ¿Como me puede salir otra vez encontes? ¿Quizás lo haya borrado yo de la librería o algo de eso? Y una preguntita que se me olvidó preguntar, el "100" de res.h, ¿que indica? y, "SONIDO WAVE" que significa realmente ¿? Tan sólo marca el archivo de audio que se va a usar, ¿no? Y ya aprovecho... Donde y cómo se supone que se guarda el archivo de audio en el ejecutable ¿? Una vez compilado y guardado, se puede sacar el archivo de audio de alguna forma ¿? Gracias y disculpas por las molestias :/ EDITO: Comentar que el archivo de audio lo tengo en la misma carpeta del proyecto, así no hace falta poner la ruta... Título: Re: Archivo de audio en C Publicado por: leosansan en 23 Julio 2014, 07:39 am Perdonarme por continuar con el post y por mi ignorancia, pero ahora no consigo que me funciona con una canción que quiero. ....................................................... He probado mil cosas, y buscado por google, pero no me funciona con ninguna. La primera vez, cuando me funcionó, en me salió una pestaña en el DEV++ que salían funciones y cosas que no entendía, pero relacionadas con los audios y el sonido. Ahora al crear el proyecto y linkar el libwinmm.a, no me ha salido ¿quizás sea eso? ¿Como me puede salir otra vez encontes? ¿Quizás lo haya borrado yo de la librería o algo de eso? ...................................................... Prueba a añadir nuevamente la librería como ya te indiqué en un mensaje anterior. La prueba que he hecho si me funciona, linkando la librería, claro. Y aprovecho para indicarte otra manera "simple" de reproducir .mp3: Código
¡¡¡¡ Saluditos! ..... !!!! (http://st.forocoches.com/foro/images/smilies/simba2.gif) Título: Re: Archivo de audio en C Publicado por: Baal_30 en 23 Julio 2014, 13:39 pm Nada :/, la cargo igual que hice la primeza vez, pero parece que no haga nada, cuando se tendría que escuchar la canción al compilar, me da error :/
Título: Re: Archivo de audio en C Publicado por: daryo en 23 Julio 2014, 17:17 pm Nada :/, la cargo igual que hice la primeza vez, pero parece que no haga nada, cuando se tendría que escuchar la canción al compilar, me da error :/ mira si esta linkeada con direccion relativa o absoluta y en caso de que este relativa ponlo absoluto absoluta es asi: c:\direccion\libreria\archivo.a relativa es asi: ..\..\..\direccion\archivo.a Título: Re: Archivo de audio en C Publicado por: Baal_30 en 24 Julio 2014, 14:11 pm Bien, así ya me sale lo que me salía antes, la pestaña de "Makefile.win", pero ahora al compilar me da error:
[Error] C:/Program: No such file or directory [Error] Files: No such file or directory [Error] (x86)/Dev-Cpp/MinGW32/lib/libwinmm.a: No such file or directory recipe for target '"Proyecto1' failed ¿Será que borré la librería sin querer o algo así? :-\ Título: Re: Archivo de audio en C Publicado por: daryo en 24 Julio 2014, 15:30 pm Citar Será que borré la librería sin querer o algo así? puede ser pero lo bueno es que eso tendria una solucion sencilla reinstala el dev o instala code blocks :P |