Tutorial: Programar un sencillo reproductor de música en Python

En este tutorial vamos a programar un reproductor de música para Windows en el lenguaje Python. Utilizaremos dos librerias base para esto: PySimpleGUI para el desarrollo de la interfaz grafica y Pygame para la reproducción de audio.

Primero importamos las librerias necesarias:

Si no tienes pygame, puedes instalarlo usando pip install pygame, para pysimplegui puedes hacerlo de la misma manera, aunque no sera necesario ya que en los archivos del código incluire un archivo que contiene pysimplegui.

Ahora, vamos a desarrollar el reproductor, primero necesitamos definir una clase reproductor y dentro de ella, como primer punto desarrollar la interfaz grafica.

Definiremos nuestra interaz con 2 botones superiores, uno para seleccionar una canción individual y otro para seleccionar una carpeta completa, además añadiremos una imagen central y 3 botones para pausar la canción, retroceder y continuar a la siguiente.

También añadiremos varias variables que nos permitirán controlar el funcionamiento del reproductor.

La función principal sera la de reproducir música, en este caso usando el módulo mixer de la librería pygame sera sencillo de implementar, de esta manera:

En nuestra función, recibiremos una ruta absoluta sobre la canción a reproducir, inicializando el reproductor con parámetros predefinidos y creando los controles para pausar y continuar. La variable estado nos permitirá saber que se esta ejecutando una canción actualmente.


Ahora, vamos a añadir un par de funciones a nuestra clase, que nos permitirán seleccionar una canción o una carpeta completa:

En este caso vamos a usar hilos, lo que nos permitirá seguir reproduciendo música aunque estemos realizando otras tareas y asi evitamos que nuestro programa se bloquee. Ambas funciones son similares, la diferencia es que una de ellas solo permite reproducir una canción, y la otra una lista de varias canciones. Ambas finalizando mandando a llamar nuestra función reproducir antes creada.

Ahora vamos a definir el funcionamiento principal del reproductor, que permitirá ejecutar la interfaz grafica y controlar los procesos de selección y reproducción de canciones, el código es el siguiente:

El ciclo while se ejecutara siempre, a menos que se salga del programa, lo cual permitirá actualizar la interfaz grafica y recibir eventos de la misma.

Código fuente

Si se recibe el evento clic de que se seleciono la opción de cargar una canción, ya sea a través de una carpeta o individual, ejecutaremos un popup para permitirle al usuario seleccionar el archivo.

Una vez seleccionada la carpeta o archivo, ejecutaremos la función para cargar canción, usando los hilos, y de este modo iniciando la reproducción de la canción.

Si se selecciona una carpeta, contaremos con una lista de canciones a reproducir, con las cuales podremos adelantarlas, regresar, pausar y reproducir. Los controles se ejecutan de esta manera:

De modo que podremos controlar su ejecución al completo. Si queremos salir del programa, simplemente debemos dar clic en el icono de cerrar.

El funcionamiento final, quedara de la siguiente manera:

Para finalizar, debo aclarar que si bien podemos reproducir música de manera fácil usando pygame y los archivos mp3 son soportados, bajo ciertas codificaciones es imposible reproducir algunos archivos mp3 originando errores, donde lo ideal es reproducir únicamente archivos .ogg, aunque podemos realizar ciertos trucos convirtiendo los .mp3 a .ogg en tiempo de ejecución usando tempfiles en Python y de este modo volver el reproductor compatible completamente.

Como siempre, el código fuente puedes encontrarlo a continuación:

Código fuente

1 comentario de “Tutorial: Programar un sencillo reproductor de música en Python”

  1. Hola! Estoy empezando con Python y me ha ayudado mucho tu publicacion. Me gustaria poder usar el reproductor en una aplicacion web pero no consigo que funcione. En la consola me dan muchos errores que no consigo solucionar. Sabrias decirme si este reproductor se puede usar en una web? O que tendria que cambiarle? Gracias de antemano, un saludo!

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

13 − 3 =