Embed your tracklist on the web
The dlp-player widget lets you embed a synchronised tracklist on any website. Viewers see the current track highlighted as the recording plays back.
Prerequisites
- A playlist JSON exported from DJ Live Playlist (with a recorded session)
- A web page with a
<video>,<audio>or YouTube/SoundCloud<iframe>
Installation
Via npm
bash
npm install dlp-playerjs
import 'dlp-player/style.css'
import 'dlp-player'Via CDN
html
<link rel="stylesheet" href="https://unpkg.com/dlp-player/dist/dlp-player.css">
<script src="https://unpkg.com/dlp-player/dist/dlp-player.umd.js"></script>Quick start
Add the dlp class and a data-dlp-src attribute pointing to your playlist JSON on any media element:
html
<!-- With a video file -->
<video class="dlp" data-dlp-src="/playlist.json" src="my-mix.mp4" controls></video>
<!-- With an audio file -->
<audio class="dlp" data-dlp-src="/playlist.json" src="my-mix.mp3" controls></audio>
<!-- With a YouTube video -->
<iframe class="dlp" data-dlp-src="/playlist.json"
src="https://www.youtube.com/embed/VIDEO_ID"
allow="autoplay; encrypted-media" allowfullscreen></iframe>The widget auto-initialises on page load — no JavaScript needed.
Display modes
List mode (default)
The tracklist appears beside the player. The current track is highlighted and auto-scrolled into view.
html
<video class="dlp" data-dlp-src="/playlist.json" data-dlp-mode="list"
src="mix.mp4" controls></video>Overlay mode
The tracklist is superimposed at the bottom of the player with fade-in/fade-out animations.
html
<video class="dlp" data-dlp-src="/playlist.json" data-dlp-mode="overlay"
src="mix.mp4" controls></video>How it works
- The widget reads the playlist JSON exported from DLP
- It uses the
recordingStartTimeand each track'splayHistoryto compute offsets - As the media plays, the SyncEngine matches
currentTimeto the active track(s) - The display updates in real time
Supported players
| Element | Auto-detection |
|---|---|
<video> | Native timeupdate event |
<audio> | Native timeupdate event |
YouTube <iframe> | YouTube IFrame API (auto-loaded) |
SoundCloud <iframe> | SoundCloud Widget API |
CSS customisation
Override CSS variables to match your site's design:
css
.dlp-wrapper {
--dlp-bg: #1a1a2e;
--dlp-text-color: #eee;
--dlp-highlight-bg: rgba(14, 165, 233, 0.2);
--dlp-title-size: 1rem;
--dlp-artist-size: 0.85rem;
}JavaScript API
UMD (global)
js
// Auto-init happens on DOMContentLoaded
// Access instances:
DLP.instances // Array of DlpInstance
DLP.init() // Re-scan the page for new elementsESM (import)
js
import { DlpInstance, SyncEngine, loadPlaylist } from 'dlp-player'
const playlist = await loadPlaylist('/path/playlist.json')
const sync = new SyncEngine(playlist)
const activeIds = sync.getActiveTrackIds(currentTimeInSeconds)
