Offre de lancement : Les forfaits Creator et Business sont réduits pour une durée limitée. Voir les tarifs

Waveform

Vous construisez un lecteur personnalisé mais voulez une visualisation de forme d’onde prête pour la production ? La forme d’onde est disponible comme composant autonome — chargez uniquement ce dont vous avez besoin, stylisez-la comme vous voulez, et branchez-la dans votre propre logique de lecture.

Utilisation

Installez depuis npm et importez le composant waveform autonome, puis définissez la propriété levels avec les données d’amplitude de la réponse API de la session de lecture à 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>

Vous préférez sans étape de build ? Chargez-le directement depuis un CDN à la place :

<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;

Attributs

AttributTypeDéfautDescription
levelsnumber[][]Tableau de valeurs d’amplitude 0–1 (défini via propriété JS)
variantstring”vertical”Style de rendu : barres “vertical”, courbes “wavy”, ou barres “reflection” avec une réflexion miroir inclinée
heightnumber120Hauteur du canvas en pixels
line-widthnumber2Largeur de chaque barre de forme d’onde ou du trait de l’onde
line-colorstring”#888888”Couleur du trait (remplacée par la variable CSS —adn-waveform-color-fg)
gapnumber3Espacement entre les barres dans la variante verticale
scale-strengthnumber0.4Contrôle la mise à l’échelle de l’amplitude — des valeurs plus basses compressent la plage calme/forte
reflection-anglenumber45reflection uniquement : inclinaison max de la réflexion en degrés, atteinte à 0 % / 100 % de progression
reflection-sizenumber0.25reflection uniquement : hauteur de la réflexion comme fraction de la hauteur de la forme d’onde principale
reflection-opacitynumber0.55reflection uniquement : opacité de la réflexion à la ligne de base (s’estompe vers 0 vers le bas)
progressnumber0Position de progression de la lecture (0–1)
durationnumber0Durée de la piste en secondes

Vertical

Style de barres verticales par défaut. line-width, gap et height configurables via attributs.

<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

Style d’onde courbe lisse avec 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

Barres à fond plat avec une image miroir plus courte et estompée en dessous, définies avec variant=“reflection”. La réflexion s’incline selon progress — elle balaye de droite à gauche à mesure que la lecture passe du début (0) à la fin (1), donnant à la forme d’onde une subtile sensation de mouvement. Réglez-la avec reflection-angle, reflection-size et 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;

Lignes fines

Barres étroites avec espacement serré : line-width=“1”, gap=“1”. Pas de progress défini — la forme d’onde s’affiche à mi-opacité sans tête de lecture.

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

Wavy épais

Courbes ondulées larges avec espacement généreux : line-width=“4”, gap=“6”. Pas de progress défini — la forme d’onde s’affiche à mi-opacité sans tête de lecture.

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

Tête de lecture

Affiche une position de tête de lecture à 40 % avec une superposition de surbrillance.

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

Thèmes

Remplacez les propriétés CSS personnalisées sur l’hôte pour restyler la forme d’onde. Toutes les propriétés utilisent le préfixe —adn-waveform-*, avec —adn-color-accent comme repli partagé pour la couleur de ligne.

Clair / Sombre (préférence système)

.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;
}