Pemutar Musik Pygame+Tkinter versi 6

BelajarPython - Assalamualaikum wr. wb.

Jumpa lagi temen - temen... Pada kesempatan kali ini, akan saya gunakan untuk mengajak kalian membuat aplikasi pemutar musik nih... Oke, Biar tidak penasaran langsung saja yuk kita simak sama - sama pengenalan aplikasi nya di bawah ini...

Pengenalan aplikasi yang akan kita buat.

Jadi, seperti yang sudah saya katakan di pembuka tadi, pada postingan kali ini saya akan membagikan atau mengajak kalian untuk membuat aplikasi pemutar musik...

Dan pada versi yang ke enam ini saya akan menambahkan fitur next dan fitur untuk mengembalikan file daftar putar seteleh semua pemutaran selesai..

Aplikasi ini saya posting dengan berbagai versi.. Dengan penambahan fitur di tiap versinya.. Jika kalian ingin melihat versi - versi aplikasi ini, KALIAN BISA KLIK DISINI ya temen - temen...

Rincian Lengkap Aplikasi Pemutar Musik menggunakan PyGame Versi 6.0

Aplikasi kali ini menggunakan library Pygame. Untuk menjalankannya, harus menginstallnya dulu... KLIK DISINI untuk Install Pygame.... Oke, langsung saja yuk kita simak sama - sama rincian lengkap nya di bawah ini...

Nama: mn-mp3player 6.0
Versi: 6.0 | klik disini untuk membaca versi selanjutnya.
Platform: Python 3.x
Modul: Tkinter dan Pygame. Klik disini untuk menginstallnya.
Baris Code: kurang lebih 180 baris code program.
Terdiri dari: 1 class dan 19 metode.
Fitur: Tombol Next (lagu selanjutnya).
Kelemahan: tidak ada previous (karena pemutaran dengan sistem antrian)..
syarat menjalankan: install python 3.x dan PyGame, punya editor teks atau IDE.
Cara menjalankan: install python 3 dan PyGame, copy dan paste code program pada editor atau IDE, simpan dalam file python(ekstensi .py), lalu jalankan.


Kalian juga bisa membuat code program ini menjadi file aplikasi loh.. iya file aplikasi seperti "exe" itu loh.. sehingga, nantinya kita cukup klik dua kali saja untuk menjalankan aplikasi ini... tanpa perlu repot - repot membuka nya di IDLE atau IDE python.. nah seperti apa caranya? cukup mudah kok.. dan saya juga sudah membuatkan tutorialnya.. untuk kalian yang menggunakan windows, KALIAN BISA KLIK DISINI ya temen - temen.. atau jika pada link pertama terlalu rumit, KALIAN BISA MENCOBA CARA INI ya.... dan bagi pengguna linux ? tenang saja.. bisa juga kok membuat file executable nya.. untuk melihat tutorialnya, KALIAN BISA KLIK DISINI temen - temen...

Code program aplikasi Pemutar Musik menggunakan PyGame versi 6.0

Pada segment kali ini, saya akan memberikan code program untu membuat aplikasinya.. Langsung saja yuk kita simak sama - sama code program nya di bawah ini...


import pygame
from tkinter import *
from tkinter import Tk,filedialog
import os

class PemutarMusik(Frame):
    def __init__(self,parent):
        Frame.__init__(self, parent)
        self.penampungFile=[]
        self.penampungNama=[]
        self.a = StringVar()
        self.a.set("Play")
        parent.geometry("470x250")
        self.parent = parent
        self.nama = StringVar()
        self.nama.set("Silahkan Buka file")
        self.tampungLokasi=""
        self.berakhir=True
        self.diStop=False
        self.bukaLage=True

        self.fileSudahDiputar=[]
        self.namaSudahDiputar=[]
        self.putarLagi=True


        self.KolomTeks()
        self.buatTeks()
        self.buatTombolPlay()
        self.buatTombolStop()
        self.tombolNext()
        self.buatOpen()
        self.slider()

    def insialisasiFile(self,file,path):
        self.penampungFile.append(path)
        self.penampungNama.append(file)
        self.refreshKolom()
    def refreshKolom(self):
        isi = ""
        no = 1
        for i in self.penampungNama:
            isi += str(no)+".  "+ i + "\n"
            no +=1
        self.setKolom(isi)
    def getFile(self):
        file=''
        if len(self.penampungNama)>0 :
            file = self.penampungFile.pop(0)
            nama = self.penampungNama.pop(0)

            self.fileSudahDiputar.append(file)
            self.namaSudahDiputar.append(nama)

            self.nama.set("Now playing : "+nama)
        self.refreshKolom()
        return file
    def putarMusik(self):
        self.berakhir=True
        pygame.init()
        pygame.mixer.init()
        if self.diStop:
            self.diStop = False
            pygame.mixer.music.unpause()
            self.a.set("Pause")
        else :
            self.b = pygame.mixer.music.get_busy()
            a = len(self.penampungFile)
            if self.b :
                if self.a.get()=="Play" :
                    self.a.set("Pause")
                    pygame.mixer.music.unpause()
                elif self.a.get()=="Pause" :
                    self.a.set("Play")
                    pygame.mixer.music.pause()
                    self.pauseAtauStop=True
            elif  a!=0 :
                ambilFile = self.getFile()
                pygame.mixer.music.load(ambilFile)
                pygame.mixer.music.play()
                self.putarLagi=True
                self.refreshKolom()
                self.getPosisi()
                self.a.set("Pause")

    def stopMusik(self):
        self.b = pygame.mixer.music.get_busy()
        self.diStop = True
        if self.b :
            pygame.mixer.music.play(1,-1)
            pygame.mixer.music.pause()
            self.a.set("Play")
            self.berakhir=False

    def tombolNext(self):
        next = Button(text="Next", command=self.next)
        next.pack(side=LEFT)

    def next(self):
        self.b = pygame.mixer.music.get_busy()
        if self.b :
            pygame.mixer.music.stop()
            self.putarMusik()

    def buatTeks(self):
        teks = Label(textvariable=self.nama, fg="blue", font="Verdana 10 bold")
        teks.pack()

    def buatTombolStop(self):
        tombol = Button(text="Stop", command=self.stopMusik)
        tombol.pack(side=LEFT)

    def buatOpen(self):
        tombol = Button(text="Open", command=self.bukaFile)
        tombol.pack(side=LEFT)

    def buatTombolPlay(self):
        tombol = Button(textvariable=self.a, command=self.putarMusik)
        tombol.pack(side=LEFT)

    def bukaFile(self):
        tipeFile = [('Mp3 file', '*.mp3'), ('All files', '*')]
        bukaFile = filedialog.askopenfilenames(filetypes=tipeFile)
        if bukaFile!="":
            for i in bukaFile :
                lokasi = i
                nama = os.path.basename(lokasi)
                self.insialisasiFile(nama,lokasi)
    def volume(self, nilai):
        v = float(nilai)
        pygame.init()
        pygame.mixer.init()
        pygame.mixer.music.set_volume(v)

    def slider(self):
        w1 = Scale(from_=0.00, to=1.0,resolution=0.01, command=self.volume, orient=HORIZONTAL, length=300, label='Volume :',showvalue=0)
        w1.pack()
        w1.set(0.50)

    def KolomTeks(self):
        self.T = Text(height=12, width=30)
        self.scrollBar()
        self.T.configure(state=DISABLED)
    def setKolom(self, nilai):
        self.T.config(state=NORMAL)
        self.T.delete('1.0',END)
        self.T.insert(END,nilai)
        self.T.configure(state=DISABLED)

    def scrollBar(self):
        S = Scrollbar()
        S.pack(side=RIGHT, fill=Y)
        self.T.pack(fill=X)
        S.config(command=self.T.yview)
        self.T.config(yscrollcommand=S.set)
    def getPosisi(self):

        pygame.init()
        pygame.mixer.init()
        posisi=pygame.mixer.music.get_pos()
        if posisi==-1 and self.berakhir and self.putarLagi:
            self.putarMusik()
        self.b = pygame.mixer.music.get_busy()
        if len(self.penampungFile) == 0 and self.b == False and self.diStop == False :
            self.nama.set("Pemutaran selesai")
            self.a.set("Play")
            for i in self.fileSudahDiputar :
                self.penampungFile.append(i)
            for i in self.namaSudahDiputar:
                self.penampungNama.append(i)
            self.namaSudahDiputar=[]
            self.fileSudahDiputar=[]
            self.refreshKolom()
            self.putarLagi=False
        elif (len(self.penampungFile)>0 or self.b) and self.putarLagi :
            self.timer = self.parent.after(1000, self.getPosisi)

root = Tk()
PemutarMusik(root)
mainloop()
pygame.quit()


Nah lalu, seperti apakah tampilan yang akan di hasilkan dari code program di atas? Langsung saja yuk kita simak sama - sama tampilannya di bawah ini...




Penjelasan code program untuk membuat Aplikasi Pemutar musik menggunakan PyGame versi 6.0

Sekarang saya akan mencoba untuk menjelaskan code program yang sudah saya bagikan di atas tadi.. Oke, Langsung saja yuk kita simak sama penjelasannya di bawah ini....


[NOTE : Teks berwarna MERAH pada penjelasan adalah Code tambahan yang tidak ada di versi sebelumnyaDan yang Berwarna BIRU akan di hapus di versi berikutnya. Jika Code berwarna MERAH dan komentar berwarna BIRU maka merupakan code baru dan akan di hapus di versi berikutnya]


import pygame  //mengimport pygame
from tkinter import *  //mengimport semua modul tkinter
from tkinter import Tk,END, filedialog  //mengimport Tk, END, filedialog tkinter
import os  //mengimport os untuk path file mp3

class PemutarMusik(Frame):  //membuat class ‘PemutarMusi’ menurunkan class ‘Frame’ dari tkinter
    def __init__(self,parent):  //Konstruktor class ‘PemutarMusik’
        Frame.__init__(self, parent)  //memanggil Konstruktor class ‘Frame’. Dan memasukkan class ini (self) dan nilai variabel ‘parent’ sebagai parameter
        self.penampungFile=[]  //variabel array “penampungFile” untuk menampung path/lokasi file musik
        self.penampungNama=[]  //variabel array “penampungNama” untuk menampung nama musik
        self.a = StringVar()  //memanggil dan menampung class ‘StringVar’ dari tkinter. Untuk menampilkan teks ‘pause’ atau ‘play’ di tombol.
        self.a.set("Play")  //mengubah nilai variabel ‘a’ menjadi ‘Play’
        parent.geometry("470x60")  //mengatur ukuran window
        self.parent = parent  //menampung nilai variabel parameter ‘parent’
        self.nama = StringVar()  //memanggil dan menampung class ‘StringVar’ dari tkinter. Untuk menapilkan nama musik di window..
        self.nama.set("Silahkan Buka file")  //mengubah nilai variabel ‘nama’
        self.tampungLokasi=""  //digunakan untuk menyimpan lokasi file
        self.berakhir=True  //variabel untuk menentukan pemutaran akan berakhir
        self.diStop=False  //gidunakan untuk sebagai penentu jika pemutaran di stop
        self.bukaLage=True  //sebagai penentu apakah user membuka file lagi.

        self.fileSudahDiputar=[]   //variabel array untuk menampung lokasi file yang sudah diputar
        self.namaSudahDiputar=[]   //variabel array untuk menampung nama file yang sudah diputar
        self.putarLagi=True  //membuat variabel ‘putarLagi’ untuk menentukan pemutaran seluruh file sudah selesai. (selesai = false)

        self.KolomTeks()  //memanggil metode ‘KolomTeks’
        self.buatTeks()  //memanggil metode ‘buatTeks’
        self.buatTombolPlay()  //memanggil metode ‘buatTombolPlay’
        self.buatTombolStop()  //memanggil metode ‘buatTombolStop’
        self.tombolNext()  //memanggil metode ‘tombolNext’
        self.buatOpen()  //memanggil metode ‘buatOpen’
        self.slider() //memanggil metode ‘slider’


    def insialisasiFile(self, file, path):  //membuat metode ‘inisialisasiFile’ dengan parameter ‘file’ sebagai penampung lokasi file
        self.penampungFile.append(path)  //memasukkan path file
        self.penampungNama.append(file)  //memasukkan nama file
        self.refreshKolom()  //memanggil metode ‘refreshKolom’

    def refreshKolom(self):  //membuat metode ‘refreshKolom’ untuk memperbarui tampilan nama lagu
        isi = ""  //membuat variabel ‘isi’ untuk menyusun nama file
        for i in self.penampungNama:  //melakukan perulangan sebanyak nilai di variabel array ‘penampungNama’
            isi += i + "\n"  //mengambil dan menampung nilai (nama) di variabel array ‘penampungNama’
        self.setKolom(isi)  //memanggil metode ‘setKolom’ dengan memasukkan isi variabel ‘isi’ sebagai parameter

    def getFile(self):  //membuat metode ‘getFile’ untuk mendapatkan file untuk di putar
        file=''  //membuat variabel ‘file’
        if len(self.penampungNama)>0 :  //memastikan jumlah item di variabel array ‘penampungNama’ lebih dari 0
            file = self.penampungFile.pop(0)  //mengambil item urutan terakhir di varaibel array ‘penampungFile’ dan disimpan di ‘file’.
            nama = self.penampungNama.pop(0)  //mengambil item urutan terakhir di varaibel array ‘penampungNama’ dan disimpan di ‘nama’.

            self.fileSudahDiputar.append(file)  //memasukkan lokasi file yang akan di putar
            self.namaSudahDiputar.append(nama)  //memasukkan nama ‘file yang akan di putar

            self.nama.set("Now playing : "+nama)  //mengubah teks yang di tampilkan di window menjadi nama file yang sedang di puter
        self.refreshKolom()  //memanggil metode ‘refreshKolom’
        return file  //mengembalikan lokasi file yang telah di tampung sebelumnya di ‘file’

    def putarMusik(self):  //membuat metode ‘putarMusik’.
        self.berakhir=True  //mengubah nilai ‘berakhir’ menjadi ‘true’
        pygame.init()  //memanggil metode ini di class di pygame’
        pygame.mixer.init()  //memanggil variabel ‘init’ di class mixer 
        if self.diStop:  //mengecek nilai stop apakah true
            self.diStop = False  //mengubah nilai ‘diStop’ menjadi ‘False’
            pygame.mixer.music.unpause()  //melanjutkan musik yang sedang di pause
            self.a.set("Pause")  //mengubah teks tombol play jadi ‘Pause’
        else :  //kondisi jika ‘diStop’ bernilai ‘False’
            self.b = pygame.mixer.music.get_busy()  //mengecek apakah musik sedang diputar. Diputar =True. Berhenti = False.
            a = len(self.penampungFile)  //menghitung jumlah item ‘penampungFile’ dan di tampung di ‘a’
            if self.b:  //mengecek nilai b apakah True
                if self.a.get()=="Play" :  //mengecek apakah nila ‘a’ adalah ‘Play’
                    self.a.set("Pause")  //mengubah nilai ‘a’ menjadi ‘Pause’
                    pygame.mixer.music.unpause()  //melajutkan pemutaran musik
                elif self.a.get()=="Pause" :  //mengecek apakah nila ‘a’ adalah ‘Pause’
                    self.a.set("Play")  //mengubah nilai ‘a’ menjadi ‘Play’
                    pygame.mixer.music.pause()  //menjeda pemutaran musik
                    self.pauseAtauStop=True  //mengubah nilai menjadi true
            elif  a!=0 :  //mengcek apakah a tidak bernila 0
                ambilFile = self.getFile()  //memanggil metode ‘getFile’ dan di tampung nilai kembalian nya di ‘ambilFile’
                pygame.mixer.music.load(ambilFile)  //memuat filemusik yang ada di ‘ambilFile’
                pygame.mixer.music.play()  //memutar musik
                self.file = ""  //mengosongkan lokasi file dari variabel 
                self.refreshKolom()  //memanggil metode ‘refreshKolom’
                self.getPosisi()  //memanggil metode ‘getPosisi’
                self.a.set("Pause") //mengubah tombol menjadi ‘Pause’

    def stopMusik(self)  //membuat metode ‘stopMusik’
        self.b = pygame.mixer.music.get_busy()  //mengecek apakah musik sedang di putar. Sedang diputar = True. Tidak sedang diputar = false.
        self.diStop = True  //menguba nilai ‘diStop’ jadi True
        if self.b :  //mengcek nilai ‘b’ apakah bernilai true
            pygame.mixer.music.play(1,-1)  //memutar musik
            pygame.mixer.music.pause()  //men jeda musik
            self.a.set("Play")  //mengatur teks tombol agar menjadi ‘Play’
            self.berakhir=False  //mengubah nilai ‘berakhir’ menjadi false

    def tombolNext(self):  //membuat metode
        next = Button(text="Next", command=self.next)  //membuat tombol dengan perintah menjalankan metode ‘next’
        next.pack(side=LEFT)  //memasukkan tombol

    def next(self):  //membuat metode
        self.b = pygame.mixer.music.get_busy()  //mengecek apakah musik sedang di putar (true=sedang diputar) dan disimpan ke ‘b’
        if self.b :  //memastikan ‘b’ bernilai true
            pygame.mixer.music.stop()  //menghentikan musik
            self.putarMusik()  //memanggil metode ‘putarMusik’

    def buatTeks(self):  //membuat metode ‘buatTeks’
        teks = Label(textvariable=self.nama, fg="blue", font="Verdana 10 bold")
        teks.grid(row=0, column=0, columnspan=3)

    def buatTombolStop(self):  //membuat metode ‘buatTombolStop’
        Button(text="Stop", command=self.stopMusik)  //membuat tombol ‘stop’ dengan perintah menjalankan metode ‘stopMusik’
        tombol.pack(side=LEFT)   //memasukkan tombol ke window

    def buatOpen(self):  //membuat metode ‘buatOpen’
        Button(text="Open", command=self.bukaFile)  //membuat tombol ‘Open’ dengan perintah menjalankan metode ‘bukaFile’
        tombol.pack(side=LEFT)   //memasukkan tombol ke window

    def buatTombolPlay(self):  //membuat tombol play
        Button(text="Play", command=self.putarMusik)   //membuat tombol ‘Play’ dengan perintah menjalankan metode ‘putarMusik’
        tombol.pack(side=LEFT)   //memasukkan tombol ke window

    def bukaFile(self):  //membuat metode ‘bukaFile’
        tipeFile = [('Mp3 file', '*.mp3'), ('All files', '*')]  //menentukan file yang bisa di buka
        bukaFile = filedialog.askopenfilenames(filetypes=tipeFile)  //membuka file dialog untuk memilih file. Dan yang terpilih path nya di tampung di ‘bukaFile’
        if bukaFile!="":  //memastikan ‘bukaFile’ tidak kosong (memastikan user memilih file’
            for i in bukaFile :  //melakukan perulangan sebanyak item di array ‘bukaFile’
                lokasi = i  //mengoper nilai i kedalam ‘lokasi’
                nama = os.path.basename(lokasi)  //digunakan untuk mengambil namanya saja dari file yang dipilih dan disimpan ke ‘nama’
                self.insialisasiFile(nama,lokasi)  //memanggil metode ‘inisialisasiFile’ dan memasukkan ‘nama’ dan ‘lokasi’ sebagai parameter

    def volume(self, nilai):  //membuat metode ‘volume’ dengan parameter ‘nilai’ untuk mengubah volume
        v = float(nilai)  //mengubah nilai menjadi ‘float’ dan ditampung di ‘v’
        pygame.init()  //memanggil konstruktor ‘pygame’
        pygame.mixer.init()  //memanggil konstruketor class ‘mixer’ dalam pygame
        pygame.mixer.music.set_volume(v)  //mengubah volume menjadi yang ada di ‘v’

    def slider(self):  //membuat metode ‘slider’
        w1 = Scale(from_=0.00, to=1.0,resolution=0.01, command=self.volume, orient=HORIZONTAL, length=300, label='Volume :',showvalue=0)  //digunakan untuk membuat slider. Nilainya di kirim ke metode ‘volume’ nilai dari 0.00 - 1.0. Dengan perubahan ketika di gerser sebesar : 0.01.
        w1.grid(row=1, column=3)  //memasukkan slider ke window
        w1.set(0.50)  //mengatur volume (slider) agar ada di tengah 

    def KolomTeks(self):  //membuat metode ‘KolomTeks’
        self.T = Text(height=12, width=30)  //membuat kolom teks. Disimpan di ‘T’
        self.scrollBar()  //memanggil metode ‘scrollBar’
        self.T.configure(state=DISABLED)  //agar kolom teks tidak bisa di edit

    def setKolom(self, nilai):  //membuat metode ‘setKolom’
        self.T.config(state=NORMAL)  //membuat kolom teks bisa di edit
        self.T.delete('1.0',END)  //menghapus semua isi kolom teks
        self.T.insert(END,nilai)  //memasukkan isi ‘nilai’ sebagai isi kolom
        self.T.configure(state=DISABLED)  //membuat kolom teks agar tidak bisa di edit

    def scrollBar(self):  //membuat metode ‘scrollBar’
        S = Scrollbar()  //memanggil metode ‘scrollBar’
        S.pack(side=RIGHT, fill=Y)  //memasukkan scrollbar ke window
        self.T.pack(fill=X)  //memasukkan kolom teks (T) ke dalam window
        S.config(command=self.T.yview)  //mengubungkan scrollbar ke kolom teks (T)
        self.T.config(yscrollcommand=S.set)  //mengatur perintah scroll kolom teks ke scroll

    def getPosisi(self):  //membuat metode ‘getPosisi’
        pygame.init()  //inisialisasi pygame
        pygame.mixer.init()  //inisialisasi mixer
        posisi=pygame.mixer.music.get_pos()  //mendapatkan posisi pemutaran
        if posisi==-1 and self.berakhir:  //mengecek apakah posisi nya = -1 (selesai) dan ‘berakhir’ bernilai true
            self.putarMusik()  //memanggil metode ‘putarMusik’
        self.b = pygame.mixer.music.get_busy()  //mengecek apakah musik sedang di putar. True = sedang diputar. False = tidak diputar
        if len(self.penampungFile) == 0 and self.b == False and self.diStop == False :  //mengecek apakah jumlah musik kosong (0) dan b=0 dan ‘diStop’ bernilai False. Semua harus bernilai True.
            self.nama.set("Pemutaran selesai")  //mengubah teks di window menjadi ‘Silahkan Buka file’
            self.a.set("Play")   //mengubah tombol menjadi ‘play’
            for i in self.fileSudahDiputar :  //melakukan perulangan sebanyak item di ‘fileSudahDiputar’
                self.penampungFile.append(i)  //memasukkan item di ‘fileSudahDiputar’ ke dalam ‘penampungFIle’.
            for i in self.namaSudahDiputar:  //melakukan perulangan sebanyak item di ‘namaSudahDiputar’
                self.penampungNama.append(i)  //memasukkan item di ‘namaSudahDiputar’ ke dalam ‘penampungNama’.
            self.namaSudahDiputar=[]  //mengosongkan ‘namaSudahDiputar’
            self.fileSudahDiputar=[]  //mengosongkan ‘namaSudahDiputar’
            self.refreshKolom()  //memanggil metode ‘refresKolom’
            self.putarLagi=False  //mengubah menjadi ‘false’
        elif (len(self.penampungFile)>0 or self.b) :  //memastikan jumlah musik ada atau > 0. Dan ‘b’ bernilai True. (salah satu True, maka true)
            self.timer = self.parent.after(1000, self.getPosisi)  //memanggil metode ‘getPosisi’ setiap 1 mili detik



root = Tk()  //memanggil window tkinter
PemutarMusik(root)  //memanggil class. Dan memberi variabel ‘root’ sebagai parameter.
mainloop()  //agar window tidak langsung close

pygame.quit()  //menutup ‘pygame’



Nah itu dia temen - temen penjelasan code programnya.. Mohon maaf ya apabila ada penjelasan yang kurang jelas, atau bahkan ada kekeliruan... Mohon kasi pembenaran atau pendapat kalian di kolom komentar ya temen - temen... Biar kita bisa belajar bersama - sama..

Oke terimakasih dan sampai di sini dulu ya temen - temen... Jangan lupa untuk membaca versi - versi yang lainnya... Biar ilmunya juga nambah.. Hehe.. Temikasih sekali lagi dan sekian...

Wassalamualaikum wr. wb.
Previous
Next Post »
Thanks for your comment