UI Music Player
Membangun antarmuka pemutar musik: playlist, play/pause, next/prev, dan progress bar.
Kenapa Music Player?
Music player mengajarkan state machine: aplikasi punya status (bermain/berhenti), daftar antrean, dan posisi waktu yang terus berubah. Pola ini dipakai di pemutar video, podcast, dan presentasi slide.
Langkah Membangun
HTML: Kartu player: cover album, judul lagu, artis, progress bar (bisa diklik untuk seek), kontrol (prev, play/pause, next), kontrol volume, dan daftar playlist.
CSS: Tampilan seperti Spotify mini: background gelap, cover membulat dengan shadow, tombol play besar di tengah. Progress bar tipis yang terisi sesuai posisi.
JS: Karena tidak ada file audio asli, kita simulasikan dengan timer:
- Array playlist:
{ judul, artis, durasi (detik), cover }. - State:
indeksLagu,sedangMain,posisiDetik. setIntervaltiap 1 detik menambah posisi jika sedang main. Jika posisi >= durasi, otomatis next.- Klik progress bar: hitung rasio klik untuk melompat (seek).
- Klik lagu di playlist: langsung putar lagu itu.
Untuk audio sungguhan, pola ini sama persis hanya timer diganti event timeupdate dari elemen <audio>.
Kesalahan Umum
- Interval tidak dihentikan saat pause sehingga posisi terus bertambah (clearInterval saat pause).
- Seek menghitung dari posisi yang salah (pakai getBoundingClientRect untuk posisi akurat).
- Lagu terakhir tidak loop kembali ke awal (pakai modulo).
export default function App(): JSX.Element { return <h1>Hello world</h1> }
Tantangan
Tantangan: Mode Shuffle & Repeat
Tambahkan tombol shuffle (๐) yang memutar lagu acak saat lagu selesai, dan tombol repeat (๐) yang mengulang lagu yang sama.