>> Technologie Électronique >  >> Audio personnel >> Enregistreurs vocaux numériques

Comment créer une forme d'onde audio pour votre projet : Code, Outils, & Design

Une forme d'onde audio visualise l'amplitude dans le temps. Que vous ayez besoin d'une image statique pour une couverture podcast, d'un égaliseur animé pour un clip musical, ou d'un tableau de données pour un moteur de jeu, la méthode dépend de votre média de sortie et aisance technique.

1. Image statique : Zéro code (Designers/Monteurs)

Audacity (Gratuit, Win/Mac/Linux)

  1. Fichier → Importer → Audio.
  2. Sélectionnez piste → **Affichage > Spectre** (pour fréquence) ou juste visualisez forme d'onde.
  3. **Fichier > Exporter > Exporter en image** → PNG/SVG. Personnalisez : Pistes → **Forme d'onde (dB)** ou **Forme d'onde**.
  4. Pour haute résolution : **Édition > Préférences > Pistes > Affichage forme d'onde** → augmentez « Pixels par seconde » avant export.

Adobe Audition / DaVinci Resolve (Fairlight) / Reaper

Similaire : Visualisez forme d'onde → Clic droit → **Exporter image** ou Capture écran (moniteur 4K + zoom).

2. Image statique : Python (Développeurs/Data)

Idéal pour traitement par lot, dimensions exactes, contrôle style, intégration pipelines.

# waveform.py import librosa, librosa.display, matplotlib.pyplot as plt, numpy as np, sys input_file = sys.argv[1] if len(sys.argv) > 1 else "audio.wav" output_file = sys.argv[2] if len(sys.argv) > 2 else "waveform.png" y, sr = librosa.load(input_file, sr=None, mono=True) # conserve sr natif duration = len(y) / sr # Config style FIG_W, FIG_H = 1920, 600 # pixels @ 100 DPI DPI = 100 BG_COLOR = '#0a0a0a' WAVE_COLOR = '#00ff88' LINE_WIDTH = 0.6 plt.figure(figsize=(FIG_W/DPI, FIG_H/DPI), dpi=DPI, facecolor=BG_COLOR) ax = plt.gca() ax.set_facecolor(BG_COLOR) librosa.display.waveshow(y, sr=sr, ax=ax, color=WAVE_COLOR, alpha=0.9, linewidth=LINE_WIDTH) ax.axis('off') plt.subplots_adjust(left=0, right=1, top=1, bottom=0) plt.savefig(output_file, dpi=DPI, facecolor=BG_COLOR, bbox_inches='tight', pad_inches=0) plt.close() print(f"Sauvé {output_file} ({FIG_W}x{FIG_H})") 

Exécution : `python waveform.py input.wav output.png`

Installation : `pip install librosa matplotlib numpy`

3. Forme d'onde animée : Web (p5.js / Canvas API)

Pour sites web, composants React, ou sources navigateur OBS.

 // waveform-visualizer.js (Vanilla Canvas - sans deps) const canvas = document.getElementById('waveform'); const ctx = canvas.getContext('2d'); const audioCtx = new AudioContext(); let analyser, dataArray, bufferLength, source; async function init(audioUrl) { const resp = await fetch(audioUrl); const arrayBuffer = await resp.arrayBuffer(); const audioBuffer = await audioCtx.decodeAudioData(arrayBuffer); // Dessine forme d'onde statique depuis buffer décodé const channelData = audioBuffer.getChannelData(0); // Float32Array [-1,1] const step = Math.ceil(channelData.length / canvas.width); ctx.fillStyle = '#000'; ctx.fillRect(0,0,canvas.width,canvas.height); ctx.strokeStyle = '#00ff88'; ctx.lineWidth = 1; ctx.beginPath(); for (let x = 0; x < canvas.width; x++) { let min = 1, max = -1; for (let i = 0; i < step; i++) { const val = channelData[x * step + i] || 0; if (val < min) min = val; if (val > max) max = val; } const yMin = (1 + min) * canvas.height / 2; const yMax = (1 + max) * canvas.height / 2; ctx.moveTo(x, yMin); ctx.lineTo(x, yMax); } ctx.stroke(); } init('audio.mp3'); 

4. Forme d'onde animée : After Effects (Motion Designers)

  1. Importez audio → Glissez dans compo.
  2. Calque → Nouveau → **Solide** → Nommez « Forme d'onde ».
  3. Effets → **Générer > Spectre audio** (ou **Forme d'onde audio**).
  4. Calque audio : Sélectionnez votre calque audio.
  5. Personnalisez : **Point début/fin** (position), **Bandes fréquences** (64–128), **Hauteur max**, **Couleur**, **Options côtés** (A/B pour miroir).
  6. Pour circulaire : **Chemin** → Masque (Ellipse) → Propriété **Chemin** → Pickwhip vers Chemin Masque.

5. Temps réel / Moteur de jeu (Unity / Unreal / Godot)

  • Unity : `AudioSource.GetSpectrumData(float[] samples, int channel, FFTWindow.BlackmanHarris)` → Mise à jour LineRenderer ou positions sommets Shader par frame.
  • Unreal : Plugin **Visualisation Audio** (FFT) → Particules Niagara ou Material Parameter Collection piloté par `GetFrequencyData`.
  • Godot : `AudioServer.get_bus_fft_frequency(0)` → Dessin dans `_draw()` ou mise à jour points `Line2D`.

Choisir votre voie

BesoinOutilSortie
Couverture podcast one-shotAudacity / CanvaPNG/SVG
Lot 1000 épisodesPython (librosa/matplotlib)PNG/WebP
Animation hero site webp5.js / Canvas API / WebGLJS Interactif
Clip musical / Lyric videoAfter Effects (Spectre audio)MP4/MOV
UI Jeu / VJingUnity/Unreal/Godot + FFTTemps réel GPU
Enregistreurs vocaux numériques