Skip to content

Sonify API

Nghe một chuỗi dữ liệu dưới dạng cao độ theo thời gian - một hỗ trợ tiếp cận ("nghe xu hướng"): giá trị thấp ánh xạ với nốt nhạc thấp, giá trị cao ánh xạ với nốt nhạc cao, để một chuỗi tăng dần nghe như thể nó đang tăng. Xem demo kèm nút phát tại Hướng dẫn Insights.

Thử ngay - nhấn phát để nghe xu hướng (các cột chính là đầu ra thuần túy của 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 - phát một chuỗi dữ liệu

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

Lên lịch phát một nốt nhạc cho mỗi giá trị thông qua Web Audio API. Đây là một no-op an toàn ở nơi không có AudioContext (SSR / jsdom / trình duyệt không hỗ trợ), nên có thể gọi ở bất cứ đâu một cách an toàn.

valuesToTones - phép ánh xạ thuần túy

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

Tất định và có thể kiểm thử - cùng một đầu vào luôn cho ra cùng các nốt nhạc (demo vẽ chúng dưới dạng các cột). Các giá trị không hữu hạn (non-finite) bị bỏ qua khi tính khoảng min/max.

Tùy chọnKiểuMặc địnhChức năng
durationnumber3Tổng thời lượng phát, tính bằng giây.
minFreqnumber220Cao độ (Hz) ánh xạ với giá trị nhỏ nhất.
maxFreqnumber880Cao độ (Hz) ánh xạ với giá trị lớn nhất.

Mỗi Tone{ time, duration, freq, value } (giây / giây / Hz / giá trị nguồn).

Hướng dẫn Insights