Skip to content

API Sonify

Entendre une série de données comme une hauteur de son dans le temps - une aide à l'accessibilité ("entendre la tendance") : les valeurs basses correspondent à des notes graves, les valeurs hautes à des notes aiguës, de sorte qu'une série croissante sonne comme si elle montait. Pour la démo avec un bouton de lecture, voir le guide Insights.

Essayez-le - appuyez sur play pour entendre la tendance (les barres sont la sortie pure de valuesToTones()) :

sonify · hear the trend

Each value becomes a pitch - low value, low note (220 Hz) up to a high note (880 Hz). A rising series sweeps up; a dip dips. sonify() is a graceful no-op without Web Audio, and valuesToTones() (the bars) is pure and testable. An accessibility win: the trend is now audible.

Import

ts
import { sonify, valuesToTones } from "@michi-vz/insights/sonify";
// also re-exported from the package root: import { sonify } from "@michi-vz/insights";

sonify - jouer une série

ts
await sonify(values, { duration: 3, minFreq: 220, maxFreq: 880 });

Planifie une tonalité par valeur via l'API Web Audio. C'est un no-op silencieux là où il n'y a pas d'AudioContext (SSR / jsdom / navigateurs non pris en charge), donc il est sûr de l'appeler n'importe où.

valuesToTones - le mappage pur

ts
const tones = valuesToTones(values, { duration: 3 });
// → [{ time, duration, freq, value }, ...]

Déterministe et testable - la même entrée produit toujours les mêmes tonalités (la démo les dessine comme des barres). Les valeurs non finies sont ignorées lors du calcul de la plage min/max.

OptionTypeDéfautCe que ça fait
durationnumber3Durée totale de lecture, en secondes.
minFreqnumber220Hauteur (Hz) associée à la valeur minimale.
maxFreqnumber880Hauteur (Hz) associée à la valeur maximale.

Chaque Tone est { time, duration, freq, value } (secondes / secondes / Hz / valeur source).

guide Insights