Add music platform with DGDN album player
- Create /music landing page with artist grid - Add /music/Darnea artist page with album listing - Build /music/Darnea/DGDN album player with clickable tracklist - Auto-play next track on completion - Dangrubb-branded styling with cyan accent colors - FLAC player pulls from /src/audio/DGDN - Move landing page links to bottom with yellow announcement box
This commit is contained in:
71
music/Darnea/DGDN/player.js
Normal file
71
music/Darnea/DGDN/player.js
Normal file
@ -0,0 +1,71 @@
|
||||
// Album player for DGDN
|
||||
|
||||
const tracks = [
|
||||
{ title: "Dan Beat (bonus)", filename: "Dan Beat (bonus).flac" },
|
||||
{ title: "Neigh V3", filename: "Neigh V3.flac" },
|
||||
{ title: "On Ice", filename: "On Ice.flac" },
|
||||
{ title: "Otish", filename: "Otish.flac" },
|
||||
{ title: "Scan V2", filename: "Scan V2.flac" },
|
||||
{ title: "balance v2", filename: "balance v2.flac" },
|
||||
{ title: "eh ee uhn V2", filename: "eh ee uhn V2.flac" },
|
||||
{ title: "held v3", filename: "held v3.flac" }
|
||||
];
|
||||
|
||||
const audioPlayer = document.getElementById('audio-player');
|
||||
const tracksList = document.getElementById('tracks-list');
|
||||
const nowPlaying = document.getElementById('now-playing');
|
||||
|
||||
let currentTrackIndex = 0;
|
||||
|
||||
// Build tracklist
|
||||
function initTracklist() {
|
||||
tracks.forEach((track, index) => {
|
||||
const li = document.createElement('li');
|
||||
li.textContent = track.title;
|
||||
li.dataset.index = index;
|
||||
li.addEventListener('click', () => playTrack(index));
|
||||
tracksList.appendChild(li);
|
||||
});
|
||||
}
|
||||
|
||||
// Play track
|
||||
function playTrack(index) {
|
||||
currentTrackIndex = index;
|
||||
const track = tracks[index];
|
||||
|
||||
// Update audio source
|
||||
audioPlayer.src = `/src/audio/DGDN/${track.filename}`;
|
||||
audioPlayer.play();
|
||||
|
||||
// Update UI
|
||||
updateNowPlaying(track.title);
|
||||
updateActiveTrack();
|
||||
}
|
||||
|
||||
// Update now playing display
|
||||
function updateNowPlaying(title) {
|
||||
nowPlaying.classList.add('playing');
|
||||
nowPlaying.innerHTML = `<p>▶ Now playing: ${title}</p>`;
|
||||
}
|
||||
|
||||
// Update active track in list
|
||||
function updateActiveTrack() {
|
||||
document.querySelectorAll('.tracklist li').forEach((li, i) => {
|
||||
li.classList.toggle('active', i === currentTrackIndex);
|
||||
});
|
||||
}
|
||||
|
||||
// Auto-play next track when current ends
|
||||
audioPlayer.addEventListener('ended', () => {
|
||||
if (currentTrackIndex < tracks.length - 1) {
|
||||
playTrack(currentTrackIndex + 1);
|
||||
}
|
||||
});
|
||||
|
||||
// Update active track when manually seeking/playing
|
||||
audioPlayer.addEventListener('play', () => {
|
||||
updateActiveTrack();
|
||||
});
|
||||
|
||||
// Initialize
|
||||
initTracklist();
|
||||
Reference in New Issue
Block a user