|
|
|
| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
AnimAlf Forista

Registrado: 18 Ago 2008 Mensajes: 527 Ubicación: tgn
|
Publicado: Lun Ene 11, 2010 3:35 pm Asunto: Reproductor de Audio para Linux y Windows |
|
|
Hola,
he creado esta aplicación que es un reproductor simple de archivos de audio, pero puede reproducir distintos formatos, entre ellos mp3, ogg, wav, módulos musicales, ... grácias a la librería SLD_mixer que es una librería que augmenta la capacidad del subsistema de audio de las SDL.
Lo que he echo es crear una gui con las wx y aprovechar el subsistema de las SDL para interactuar con él.
El proyecto está preparado para GNU/Linux y para Windows. Para Linux además he creado el configure para que pueda compilarse del modo tradicional, ./configure, make y make install.
Lo actualizaré, de momento ha sido una primera toma de contacto con él. He dejado una carpeta con el binario para windows y las dll de SDL que hacen falta en el directorio bin.win, por si no se tienen las herramientas de desarrollo para crearlo. Si se quiere crear el ejecutable, lo podeis hacer con el wxdev c++, debeis tener instaladas las librerias SDL y SDL_mixer, que se pueden encontrar en el menú herramientas - actualizaciones.
Para compilarlo en Linux, ejecutar el script ./autogen.sh luego ./configure y make (si se quiere luego make install para instalarlo en /usr/local/bin)
He seguido los siguientes pasos para generar el sistema de autoconfiguración en Linux. Primero que nada me he situado en el directorio principal de la aplicación y ahí he creado el directorio en el que voy a crear los archivos fuente, lo he llamado src.
Luego he creado el archivo Makefile.am donde le indico que dicho directorio formará parte del proyecto, es decir con este contenido:
| Código: | AUTOMAKE_OPTIONS = foreign
EXTRA_DIST =
SUBDIRS = src |
Luego dentro del directorio src he creado otro Makefile.am dónde le indico qué archivos formarán parte del proyecto y qué se encuentran el ese directorio indicando además que los archivos de cabecera que hay en él no deben ser instaladas luego:
| Código: | SUFFIXES=.cpp .rc
bin_PROGRAMS = CphPlayer
CphPlayer_LDADD = $(WX_LIBS)
CphPlayer_SOURCES = \
CphPlayerApp.cpp CphPlayerDlg.cpp \
CphPlayerApp.h CphPlayerDlg.h
noinst_HEADERS = CphPlayerApp.h CphPlayerDlg.h |
Finalmente he regresado al directorio anterior y he creado el archivo más importante para realizar nuestro sistema de autocompilación e instalación, el configure.in (recogiendo información de cómo hacerlo de por la red. De momento tengo a medias claro cómo funciona, hace tiempo escribí una artículo sobre ello que podeis leer aquí: autoconf y automake - también configure con dev-cpp
| Código: | AC_INIT([CphPlayer],[0.1],[AnimAlf@users.sf.net])
AM_INIT_AUTOMAKE
AC_PROG_CXX
AC_PROG_LIBTOOL
AC_CYGWIN
# Comprobar que existe SDL
pkg_modules="sdl >= 1.2.7"
PKG_CHECK_MODULES(PACKAGE, [$pkg_modules])
AC_SUBST(PACKAGE_CFLAGS)
AC_SUBST(PACKAGE_LIBS)
# Comprobar que tenemos SDL_mixer
AC_CHECK_LIB(SDL_mixer, main, , AC_MSG_ERROR([
*** No se ha localizado la libreria SDL_mixer
(http://www.libsdl.org/projects/SDL_mixer)
]))
# Ahora es el turno de comprobar las wxWidgets
WXCONFIG=wx-config
AC_ARG_WITH(wx-config,
[[ --with-wx-config=FILE Use the given path to wx-config when determining
wxWidgets configuration; defaults to "wx-config"]],
[
if test "$withval" != "yes" -a "$withval" != ""; then
WXCONFIG=$withval
fi
])
AC_MSG_CHECKING([wxWidgets version])
if wxversion=`$WXCONFIG --version`; then
AC_MSG_RESULT([$wxversion])
else
AC_MSG_RESULT([not found])
AC_MSG_ERROR([wxWidgets is required. Try --with-wx-config.])
fi
WX_CPPFLAGS="`$WXCONFIG --cppflags`"
WX_CXXFLAGS="`$WXCONFIG --cxxflags | sed -e 's/-fno-exceptions//'`"
WX_LIBS="`$WXCONFIG --libs`"
CPPFLAGS="$CPPFLAGS $WX_CPPFLAGS"
CXXFLAGS="$CXXFLAGS $WX_CPPFLAGS"
AC_SUBST(WX_LIBS)
AC_OUTPUT([
Makefile
src/Makefile
]) |
Con esto utilizando aclocal, autoconf y automake, genera el resto de archivo necesarios para crear el ./configure, que es lo que he añadido al script autogen.sh.
Del código fuente, destacar la generación del evento que indica que una canción a terminado grácias a la función de SDL Mix_HookMusicFinished que indica el nombre de un puntero a función void. Ocurre que esta función no puede estar dentro de ninguna clase (o no he sabido hacerlo) y se tiene que indicar fuera del sistema de clases. Por lo que he creado una variable global ventana, para poderme comunicar desde fuera de la implementación de la clase.
Quiero actualizarlo, de momento, lo que hace es añadir tantas pistas de música como se quieran durante el tiempo de ejecución, se puede pasar a la siguiente pista pulsando el botón que hay a la izquierda del de salir (aparece si hay más de una pista).
TODO:- Crear una interfaz más guapa, una que sólo sea un dibujo y no sea de ángulos resctos, que tenga transaparencias. (Lo he intentado, pero si añado controles entonces, no se dibuja el fondo)
- Mostrar la lista de reproducción, poder interactuar con ella.
- Mostrar el progreso de la reproducción actual
- Mostrar los detalles de la pista que está cargada.
Aquí os dejo el código fuente y el binario para windows. También he añadido un directorio llamado música con varios archivos con distitos formatos musicales, para que observeis todo lo que puede reproducir.
CphPlayer.Alpha.rar
SaludOS _________________ En busca del TuXeR perdido |
|
| Volver arriba |
|
 |
|
|
Puede publicar nuevos temas en este foro No puede responder a temas en este foro No puede editar sus mensajes en este foro No puede borrar sus mensajes en este foro No puede votar en encuestas en este foro
|
La marca registrada Linux (R) se usa siguiendo la sublicensia obtenida del "Linux Mark Institute", el LICENCIATARIO exclusivo de Linus Torvalds, propietario de la marca en EEUU y otros países
The registered trademark Linux (R) is used pursuant to a sublicense from the Linux Mark Institute, the exclusive LICENSEE of Linus Torvalds, owner of the mark in the U.S. and other countries
Powered by phpBB © 2001, 2002 phpBB Group
Directorio web -
Contactos -
Doraemon Games
|