Launch-Aktion: Die Pläne Creator und Business sind für begrenzte Zeit rabattiert. Preise ansehen

Wellenform

Sie bauen einen eigenen Player, möchten aber eine produktionsreife Wellenform-Visualisierung? Die Wellenform ist als eigenständige Komponente verfügbar — laden Sie nur, was Sie brauchen, gestalten Sie sie ganz nach Ihren Wünschen und binden Sie sie in Ihre eigene Wiedergabelogik ein.

Verwendung

Installieren Sie das Paket über npm, importieren Sie die eigenständige Waveform-Komponente und setzen Sie anschließend die Eigenschaft levels mit den Amplitudendaten aus der API-Antwort der Wiedergabesession unter first_track.levels.

npm install @audiodn/components
import '@audiodn/components/waveform'
<audiodn-waveform
variant="vertical"
height="100"
line-width="2"
gap="3"
progress="0.6"
></audiodn-waveform>

Lieber ohne Build-Schritt? Laden Sie die Komponente stattdessen direkt von einem CDN:

<script type="module" src="https://unpkg.com/@audiodn/components@latest/dist/waveform.js"></script>
// Create a play session; its response includes the first track's level data.
const res = await fetch('https://api.audiodelivery.net/v1/play_session/track', {
method: 'POST',
headers: {
  'Authorization': 'Bearer YOUR_API_KEY',
  'Content-Type': 'application/json'
},
body: JSON.stringify({ track_id: 'TRACK_ID' })
});
const { first_track } = await res.json();

const waveform = document.querySelector('audiodn-waveform');
waveform.levels = first_track.levels.levels;

Attribute

AttributTypStandardBeschreibung
levelsnumber[][]Array von Amplitudenwerten zwischen 0 und 1 (wird per JS-Eigenschaft gesetzt)
variantstring”vertical”Darstellungsstil: “vertical”-Balken, “wavy”-Kurven oder “reflection”-Balken mit geneigter Spiegelreflexion
heightnumber120Höhe des Canvas in Pixeln
line-widthnumber2Breite jedes Wellenform-Balkens bzw. der Wellenlinie
line-colorstring”#888888”Linienfarbe (wird durch die CSS-Variable —adn-waveform-color-fg überschrieben)
gapnumber3Abstand zwischen den Balken in der vertikalen Variante
scale-strengthnumber0.4Steuert die Amplitudenskalierung — niedrigere Werte stauchen den leisen/lauten Bereich
reflection-anglenumber45Nur reflection: maximale Neigung der Reflexion in Grad, erreicht bei 0 % / 100 % Fortschritt
reflection-sizenumber0.25Nur reflection: Höhe der Reflexion als Anteil der Hauptwellenform-Höhe
reflection-opacitynumber0.55Nur reflection: Deckkraft der Reflexion an der Grundlinie (nimmt nach unten hin auf 0 ab)
progressnumber0Wiedergabefortschritt (0–1)
durationnumber0Track-Dauer in Sekunden

Vertikal

Standardmäßiger vertikaler Balkenstil. line-width, gap und height lassen sich über Attribute konfigurieren.

<audiodn-waveform
variant="vertical"
height="100"
line-width="2"
gap="3"
progress="0.6"
></audiodn-waveform>
// Level data is returned by the play session API:
// POST /v1/play_session/:scope
// Response: { first_track: { levels: { levels: [...], min, max, avg } } }

const { levels } = response.first_track;

const waveform = document.querySelector('audiodn-waveform');
waveform.levels = levels.levels; // array of 0–1 amplitude values

// Frameworks with property bindings (Vue, React, Svelte, Angular, etc.)
// can pass levels directly — no querySelector needed:
//   Vue:    <audiodn-waveform :levels="levels.levels" />
//   React:  <audiodn-waveform ref={r => r && (r.levels = data)} />

Wavy

Sanft geschwungener Wellenstil mit variant=“wavy”.

<audiodn-waveform
variant="wavy"
height="100"
line-width="2"
gap="3"
progress="0.35"
></audiodn-waveform>
const { levels } = response.first_track;

const waveform = document.querySelector('audiodn-waveform');
waveform.levels = levels.levels;

Reflection

Balken mit flachem Fuß und einem kürzeren, verblassenden Spiegelbild darunter, festgelegt mit variant=“reflection”. Die Reflexion neigt sich abhängig von progress — sie schwenkt von rechts nach links, während die Wiedergabe vom Anfang (0) zum Ende (1) fortschreitet, was der Wellenform ein subtiles Gefühl von Bewegung verleiht. Feinabstimmung erfolgt über reflection-angle, reflection-size und reflection-opacity.

<audiodn-waveform
variant="reflection"
height="100"
line-width="2"
gap="3"
progress="0.3"
reflection-angle="45"
reflection-size="0.25"
reflection-opacity="0.55"
></audiodn-waveform>
const { levels } = response.first_track;

const waveform = document.querySelector('audiodn-waveform');
waveform.levels = levels.levels;

// Update progress as the track plays — the reflection leans with it:
waveform.progress = currentTime / duration;

Dünne Linien

Schmale Balken mit engem Abstand: line-width=“1”, gap=“1”. Kein progress gesetzt — die Wellenform wird mit halber Deckkraft ohne Abspielposition dargestellt.

<audiodn-waveform
variant="vertical"
height="80"
line-width="1"
gap="1"
></audiodn-waveform>

Dickes Wavy

Breite wellenförmige Kurven mit großzügigem Abstand: line-width=“4”, gap=“6”. Kein progress gesetzt — die Wellenform wird mit halber Deckkraft ohne Abspielposition dargestellt.

<audiodn-waveform
variant="wavy"
height="80"
line-width="4"
gap="6"
></audiodn-waveform>

Abspielposition

Zeigt eine Abspielposition bei 40 % mit einer Hervorhebungs-Überlagerung.

<audiodn-waveform
variant="vertical"
height="100"
line-width="2"
gap="3"
progress="0.4"
></audiodn-waveform>

Themes

Überschreiben Sie CSS-Custom-Properties am Host-Element, um die Wellenform neu zu gestalten. Alle Eigenschaften verwenden das Präfix —adn-waveform-*, mit —adn-color-accent als gemeinsamem Fallback für die Linienfarbe.

Hell / Dunkel (Systemeinstellung)

.theme-wf-lightdark {
--adn-waveform-color-fg: light-dark(#333, #ccc);
--adn-waveform-color-playhead: light-dark(#333, #eee);
--adn-waveform-playhead-width: 2px;
--adn-waveform-bg: light-dark(#f5f5f5, #1a1a1a);
--adn-waveform-border: 1px solid light-dark(#ddd, #333);
--adn-waveform-radius: 8px;
--adn-waveform-padding: 8px;
}

Midnight

.theme-wf-midnight {
--adn-waveform-color-fg: #7c3aed;
--adn-waveform-color-playhead: #a78bfa;
--adn-waveform-playhead-width: 2px;
--adn-waveform-bg: #1a1a2e;
--adn-waveform-border: 1px solid #3a3a5e;
--adn-waveform-radius: 12px;
--adn-waveform-padding: 12px;
}

Electric

.theme-wf-electric {
--adn-waveform-color-fg: #00d4ff;
--adn-waveform-color-playhead: #e040fb;
--adn-waveform-playhead-width: 3px;
--adn-waveform-bg: #0a0a0f;
--adn-waveform-border: 1px solid #00d4ff33;
--adn-waveform-radius: 4px;
--adn-waveform-padding: 8px;
}