A Lavalink v4 plugin that pre-calculates spectrogram data for audio tracks, perfect for TUI visualizers or web-based bars.
- Download: Get the latest
.jarfrom the GitHub Releases page. - Install: Drop the
.jarinto your Lavalinkplugins/folder. - Restart: Start Lavalink. The plugin will be active.
GET /v4/plugins/spectrogram/{trackId}
- trackId: The base64 encoded track string from Lavalink.
- Returns: A 2D JSON array
number[][]. - Inner arrays contain 64 frequency bands (0-255).
- Each frame represents ~42ms of audio.
The plugin is hosted via JitPack, allowing for easy integration without needing GitHub personal access tokens.
To use the official stable release:
lavalink:
plugins:
- dependency: "team.firefly.lavalink.lavaspectro:lavaspectro-plugin:1.0.0"
repository: "https://maven.xserv.pp.ua/releases"
To use the latest development build generated on every push:
lavalink:
plugins:
- dependency: "team.firefly.lavalink.lavaspectro:lavaspectro-plugin:1.0.0-SNAPSHOT"
repository: "https://maven.xserv.pp.ua/snapshots"
snapshot: true
import axios from 'axios';
async function getSpectrogram(node: any, trackEncoded: string) {
const url = `http://${node.host}:${node.port}/v4/plugins/spectrogram/${encodeURIComponent(trackEncoded)}`;
try {
const response = await axios.get(url, {
headers: {
Authorization: node.password
}
});
return response.data; // number[][]
} catch (err) {
console.error("Failed to fetch spectrogram:", err);
}
}Requires JDK 21.
# Standard build
./gradlew build
# Snapshot build
./gradlew build -Psnapshot
Output jar is located in build/libs/.