UNPKG

@ferrite-audio/web-utils

Version:

Web Audio utilities for Ferrite Audio packages

35 lines 1.04 kB
/** * 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