Transform Data into Sound
Data visualization charts cannot provide the same experience to non-visual users.
Now use @uturi/sonification to quickly and easily convey data changes through sound.
Interactive Demo
Pitch Variation
Volume Variation
Rhythm Variation
Melody Variation
Basic Settings
Hz
sec
Frequency Settings
Hz
Hz
Hz
Volume Settings
(0-1)
(0-1)
(0-1)
Rhythm Settings
(0-1)
(0-1)
(0-1)
Getting Started
📦 Installation
npm install @uturi/sonification🚀 Quick Start
Basic Example
import { Sonifier } from '@uturi/sonification';
// Simple array sonification
const salesData = [100, 150, 80, 200, 175, 300];
const sonifier = new Sonifier();
const result = await sonifier.sonify(salesData, 'frequency', { autoPlay: true });React Component Example
import { Sonifier } from '@uturi/sonification';
import { useState, useRef, useEffect, useCallback } from 'react';
function ChartWithSound() {
const [isPlaying, setIsPlaying] = useState(false);
const chartData = [10, 25, 15, 40, 35, 60];
const sonifierRef = useRef<Sonifier | null>(null);
// Sonifier 인스턴스 초기화
useEffect(() => {
sonifierRef.current = new Sonifier();
return () => {
sonifierRef.current?.cleanup();
};
}, []);
const handlePlaySound = useCallback(async () => {
if (!sonifierRef.current) return;
setIsPlaying(true);
try {
await sonifierRef.current.sonify(chartData, 'frequency', { autoPlay: true });
} finally {
setIsPlaying(false);
}
}, [chartData]);
return (
<div>
<button onClick={handlePlaySound} disabled={isPlaying}>
{isPlaying ? 'Playing...' : 'Play Chart Sound'}
</button>
</div>
);
}🎵 Sonification Methods
4 Different Audio Mapping Methods
// 4 different conversion methods
const data = [10, 20, 30, 40, 50];
const sonifier = new Sonifier();
// 1. Frequency variation (higher value = higher pitch)
await sonifier.sonify(data, 'frequency', { autoPlay: true });
// 2. Volume variation (higher value = louder sound)
await sonifier.sonify(data, 'volume', { autoPlay: true });
// 3. Rhythm variation (higher value = faster rhythm)
await sonifier.sonify(data, 'rhythm', { autoPlay: true });
// 4. Melody variation (musical scale: C, D, E, F, G, A, B)
await sonifier.sonify(data, 'melody', { autoPlay: true });⚙️ Custom Configuration
Detailed Audio Settings
// Fine-tuned configuration customization
const sonifier = new Sonifier({
// Basic audio settings
duration: 3.0, // 3 seconds playback
sampleRate: 44100, // CD quality
// Frequency range (Hz)
minFrequency: 200, // Lowest pitch
maxFrequency: 800, // Highest pitch
// Volume range (0-1)
minVolume: 0.1, // Minimum volume
maxVolume: 0.8, // Maximum volume
// Rhythm range (0-1)
minRhythm: 0.2, // Minimum rhythm
maxRhythm: 0.9, // Maximum rhythm
});
await sonifier.sonify(salesData, 'frequency', { autoPlay: true });