@ferrite-audio/web-utils
Version:
Web Audio utilities for Ferrite Audio packages
35 lines • 1.04 kB
JavaScript
/**
* Audio buffer utilities
*/
let audioContext = null;
/**
* Get or create a shared audio context
*/
export function getAudioContext() {
if (!audioContext) {
audioContext = new (window.AudioContext || window.webkitAudioContext)();
}
return audioContext;
}
/**
* Create an AudioBuffer from Float32Array
*/
export function createAudioBuffer(data, sampleRate = 48000, channels = 1) {
const ctx = getAudioContext();
const frameLength = Math.floor(data.length / channels);
const buffer = ctx.createBuffer(channels, frameLength, sampleRate);
for (let channel = 0; channel < channels; channel++) {
const channelData = buffer.getChannelData(channel);
if (channels === 1) {
channelData.set(data);
}
else {
// Deinterleave for multi-channel
for (let i = 0; i < frameLength; i++) {
channelData[i] = data[i * channels + channel];
}
}
}
return buffer;
}
//# sourceMappingURL=buffer-utils.js.map