A synchronized YouTube music player module for FoundryVTT that lets Game Masters and players share a musical experience during tabletop sessions. Features DJ controls, queue management, and real-time synchronization across all connected players.
Features
Synchronized Playback
- Real-time YouTube video synchronization across all players
- Automatic drift correction ensures everyone stays in sync
- Late-joiner support - new players automatically sync to current playback
DJ Management System
- Single DJ controls playback for all users
- DJ role can be claimed, released, or handed off
- Request system for players to ask for DJ privileges
- GM override capabilities for ultimate control
Queue Management
- Add unlimited YouTube videos to the queue
- Reorder queue items with up/down controls
- Remove videos from queue
- Automatic loop - restarts from beginning when queue ends
- Queue persists across sessions
Usage
Getting Started
1. Enable the Module
- Navigate to Game Settings → Manage Modules
- Find "Bardic Inspiration" and check the box to enable it
- Click Save Module Settings
- The YouTube player widget will automatically appear above the player list
2. Join the Music Session
- Look for the widget above the player list on the left side of the screen
- Click the "Join Session" button (play icon) in the widget
- This connects you to synchronized playback with all other players
- The YouTube player will become visible once you've joined
3. Open DJ Controls
- After joining the session, click the "Open DJ Controls" button (sliders icon) in the widget
- This opens the full DJ application window where you can manage the queue and control playback
- Only the DJ can control playback, but all users can view the queue
Becoming the DJ
1. Claim DJ Control
- In the DJ Controls window, click "Become DJ" to take control
- Only one person can be DJ at a time
- The current DJ's name is displayed at the top of the DJ Controls window
2. DJ Indicators
- The widget shows who is currently the DJ
- A crown icon appears next to the DJ's name in the session members list
DJ Controls (DJ Only)
Managing the Queue
- Add Videos:
- Copy any YouTube video URL (e.g., `https://youtube.com/watch?v=...`)
- Paste it into the "Add YouTube URL" field
- Press **Enter** or click **"Add to Queue"**
- Videos are added to the bottom of the queue
- Reorder Queue:
- Use the ↑ and ↓ arrow buttons to move songs up or down
- The currently playing video is highlighted in blue
- Remove Videos:
- Click the ✕ button next to any video to remove it from the queue
Playback Controls
- Play/Pause: Toggle playback for all connected users
- Next: Skip to the next video in the queue
- Seek: Click anywhere on the progress bar to jump to that position
- Loop Queue: When the queue ends, it automatically restarts from the beginning
Player Controls (All Users)
- Volume: Adjust your own volume using the slider in the widget
- Mute/Unmute: Toggle audio on/off locally without affecting others (speaker icon in widget)
- Leave Session: Click the exit icon in the widget to disconnect from synchronized playback
- Request DJ: In the DJ Controls window, click to notify the current DJ that you'd like control
DJ Management
Handing Off DJ Role
1. Current DJ clicks "Release DJ"
2. Another player clicks "Become DJ" to claim control
3. Alternatively, DJ can directly hand off to a specific player
GM Override
- Game Masters can always override and claim DJ control
- GM can forcibly release DJ role from any player
Tips for Best Experience
- Stable Connection: Ensure all players have a stable internet connection for synchronized playback
- Prepare Playlists: Add multiple videos to the queue before starting for uninterrupted music
- Volume Balance: Start with lower volume and adjust up to avoid startling players
- Session Persistence: The queue and current playback position persist between sessions
- Late Joiners: Players who join mid-session automatically sync to current playback
Troubleshooting
- Widget Not Visible: Make sure the module is enabled and refresh the page
- Player Not Loading: Ensure you've clicked "Join Session" in the widget first
- Videos Not Playing: Check that YouTube isn't blocked by browser extensions or network filters
- Out of Sync: The module automatically corrects drift, but you can leave and rejoin the session to force a resync
- No Sound: Check the volume slider in the widget, ensure you're not muted, and verify system volume
- Can't Find DJ Controls: After joining the session, click the sliders icon in the widget to open the DJ Controls window