How to build an MP3 Music Player with Python | by Papa Moryba Kouate | Towards Data Science

In this article, I will show you how you can create your own music player using python.
Yes, I know I am a data analyst, but sometimes when I work with data I like listening to music. Data Analysis with music can be a very interesting mix of inspiration and concentration for a data analyst or a data scientist. And building your own music player is an amazing way to learn more about python and its potential. Maybe some modules that I will use in this article could be helpful in the deployment of your next machine learning model.
If you follow each step in this article, the final output will be like this!
So, let’s get started!
The first step is to create a directory called environments where to store all your virtual Environments and install the python modules. In this way the program is available only within the set environment and not throughout my computer.
So, open your terminal and create a directory as below.
mkdir Environments
And be sure to be into the directory ‘Environments’.
cd C:\Users\moryb\Environments
The second step is to use a module virtualenv to create isolated virtual environments.
pip install virtualenv
Now, we can create a virtual environment named myenv. If you have installed python 3 you can easily digit:
virtualenv myenv
Inside the directory myenv there is a copy of Python interpreter, the standard library and the various supporting files.
We can activate the environment with the following command:
myenv\Scripts\activate.bat
out:
(myenv) C:\Users\moryb\Environments>
Then, we need to install Pygame. Pygame is a module that is used for creating videogames. For creating our MP3 Music Player we will use the sound component.
pip install pygame
In this second phase, I will use Atom as python editor.
So I will import the following modules.
import pygame #used to create video gamesimport tkinter as tkr #used to develop GUIfrom tkinter.filedialog import askdirectory #it permit to select dirimport os #it permits to interact with the operating system
After we have imported the modules, we need to create the interface and establish the interaction with our operating system.
So to create the interface, we will write the following code that permits to create the interface, add the title of the interface and set the dimension of the interface.
music_player = tkr.Tk() music_player.title(“Life In Music”) music_player.geometry(“450x350”)
Now, it is time to create a directory that prompts the user to choose the folder where the music files are listed. To do that the OS module will help us to create interaction between the interface and our operating system.
directory = askdirectory()os.chdir(directory) #it permits to chenge the current dirsong_list = os.listdir() #it returns the list of files song
Instead, the following code presents a variable called play_list which brings the interface to display the items to the user. In addition, we create a for loop in order to push the program to select each item from the song_list and insert them into the Listbox.
play_list = tkr.Listbox(music_player, font=”Helvetica 12 bold”, bg=”yellow”, selectmode=tkr.SINGLE)for item in song_list:    pos = 0    play_list.insert(pos, item)    pos += 1
For what concerns loading and playing sounds, we use pygame as below.
pygame.init()pygame.mixer.init()
In this last part, we will see how to create commands such as play, stop, pause and unpause in order to control the music player. To create these commands we will build some functions and we will use tkinter to create the button in the interface.
def play():    pygame.mixer.music.load(play_list.get(tkr.ACTIVE))    var.set(play_list.get(tkr.ACTIVE))    pygame.mixer.music.play()def stop():    pygame.mixer.music.stop()def pause():    pygame.mixer.music.pause()def unpause():    pygame.mixer.music.unpause()
Then we can create the buttons for the interface of our music player.
Button1 = tkr.Button(music_player, width=5, height=3, font=”Helvetica 12 bold”, text=”PLAY”, command=play, bg=”blue”, fg=”white”)Button2 = tkr.Button(music_player, width=5, height=3, font=”Helvetica 12 bold”, text=”STOP”, command=stop, bg=”red”, fg=”white”)Button3 = tkr.Button(music_player, width=5, height=3, font=”Helvetica 12 bold”, text=”PAUSE”, command=pause, bg=”purple”, fg=”white”)Button4 = tkr.Button(music_player, width=5, height=3, font=”Helvetica 12 bold”, text=”UNPAUSE”, command=unpause, bg=”orange”, fg=”white”)
Now, we create some variables that permit us to see the song that is running on the top of the application.
var = tkr.StringVar() song_title = tkr.Label(music_player, font=”Helvetica 12 bold”, textvariable=var)
With the pack method, we can arrange our button in a horizontal way. The last code music_player.mainloop() helps us to run the application.
song_title.pack()Button1.pack(fill=”x”)Button2.pack(fill=”x”)Button3.pack(fill=”x”)Button4.pack(fill=”x”)play_list.pack(fill=”both”, expand=”yes”)music_player.mainloop()
Finally, to run the music player, go to your terminal, activate the environment and run the program that we have saved as MyPlayer.
C:\Users\moryb\Environments>myenv\Scripts\activate.bat(myenv) C:\Users\moryb\Environments>MyPlayer.py
Now, you have your own music player and you can listen to songs when you work with data. Sometimes working with data could be very challenging and having your own mp3 music player is very helpful.
In addition, I think that building an mp3 music player or other applications can really help you to know new Python modules and at the same time learn more about Python programming.
I always say that the better way to improve your programming skills is building something or automating a process. That permits you to have more confidence with programming and it is very useful for your personal portfolio. All these aspects can become your points of strength as a Data Analyst or Data Scientist.
Thanks for reading this. There are some other ways you can keep in touch with me and follow my work:
Subscribe to my newsletter.
You can also get in touch via my Telegram group, Data Science for Beginners.