116 lines
2.4 KiB
JavaScript
116 lines
2.4 KiB
JavaScript
class Music extends Window {
|
|
constructor() {
|
|
super('music')
|
|
this.albumCoverElem = document.getElementById("album-art")
|
|
this.currentlyPlayingElem = document.getElementById("currently-playing")
|
|
this.currentSong = null
|
|
|
|
this.songOrder = [
|
|
'Down Polypore Wood',
|
|
'Sneaking Out Alone',
|
|
'Ritual Dance of The Cavern Walls Cult',
|
|
'Tatari',
|
|
'Buranko',
|
|
'New Jersey Again',
|
|
'Asteroids'
|
|
]
|
|
|
|
this.songMap = {
|
|
'Down Polypore Wood': {
|
|
'audio': 'Down Polypore Wood.mp3',
|
|
'thumb': 'shrinkinminkin.jpg'
|
|
},
|
|
'Sneaking Out Alone': {
|
|
'audio': 'Sneaking Out Alone.mp3',
|
|
'thumb': 'shrinkinminkin.jpg'
|
|
},
|
|
'Ritual Dance of The Cavern Walls Cult': {
|
|
'audio': 'Ritual Dance of The Cavern Walls Cult.mp3',
|
|
'thumb': 'shrinkinminkin.jpg'
|
|
},
|
|
'Tatari': {
|
|
'audio': 'Tatari.mp3',
|
|
'thumb': 'tatari.jpg'
|
|
},
|
|
'Buranko': {
|
|
'audio': 'buranko.mp3',
|
|
'thumb': 'tatari.jpg'
|
|
},
|
|
'New Jersey Again': {
|
|
'audio': 'new jersey again.mp3',
|
|
'thumb': 'nj.jpg'
|
|
},
|
|
'Asteroids': {
|
|
'audio': 'Asteroids.mp3',
|
|
'thumb': 'amphi.jpg'
|
|
},
|
|
}
|
|
}
|
|
|
|
resume() {
|
|
if (!this.currentSong) {
|
|
this.play(this.songOrder[0])
|
|
}
|
|
audio.play()
|
|
}
|
|
|
|
play(songName=null) {
|
|
if (this.currentSong) {
|
|
audio.pause()
|
|
}
|
|
|
|
if (!songName && !this.currentSong) {
|
|
songName = this.songOrder[0]
|
|
}
|
|
|
|
this.currentSong = songName
|
|
audio = new Audio(this.getSongFilepath(songName))
|
|
audio.play()
|
|
|
|
var self = this
|
|
audio.addEventListener('ended', function() {
|
|
self.next(self.currentSong)
|
|
})
|
|
|
|
this.albumCoverElem.src = this.getAlbumArtFilepath(songName)
|
|
this.currentlyPlayingElem.innerHTML = this.currentSong
|
|
}
|
|
|
|
getSongFilepath(songName) {
|
|
return `./assets/audio/${this.songMap[songName]['audio']}`
|
|
}
|
|
|
|
getAlbumArtFilepath(songName) {
|
|
return `./assets/img/thumbnails/${this.songMap[songName]['thumb']}`
|
|
}
|
|
|
|
next() {
|
|
if (this.currentSong) {
|
|
var currentSongIndex = this.songOrder.indexOf(this.currentSong)
|
|
var nextSongIndex = currentSongIndex + 1
|
|
|
|
if (nextSongIndex > this.songOrder.length - 1) {
|
|
nextSongIndex = 0
|
|
}
|
|
|
|
this.play(this.songOrder[nextSongIndex])
|
|
}
|
|
}
|
|
|
|
prev() {
|
|
if (this.currentSong) {
|
|
var currentSongIndex = this.songOrder.indexOf(this.currentSong)
|
|
var nextSongIndex = currentSongIndex - 1
|
|
|
|
if (nextSongIndex < 0) {
|
|
nextSongIndex = this.songOrder.length - 1
|
|
}
|
|
|
|
this.play(this.songOrder[nextSongIndex])
|
|
}
|
|
}
|
|
|
|
pause() {
|
|
audio.pause()
|
|
}
|
|
}
|