Files
audio-ui/lib/audio/effects/reverse.ts

32 lines
785 B
TypeScript
Raw Normal View History

/**
* Reverse audio effect
*/
import { getAudioContext } from '../context';
/**
* Reverse audio buffer
* @param buffer - Source audio buffer
* @returns New audio buffer with reversed audio
*/
export function reverseAudio(buffer: AudioBuffer): AudioBuffer {
const audioContext = getAudioContext();
const outputBuffer = audioContext.createBuffer(
buffer.numberOfChannels,
buffer.length,
buffer.sampleRate
);
// Reverse each channel
for (let channel = 0; channel < buffer.numberOfChannels; channel++) {
const inputData = buffer.getChannelData(channel);
const outputData = outputBuffer.getChannelData(channel);
for (let i = 0; i < buffer.length; i++) {
outputData[i] = inputData[buffer.length - 1 - i];
}
}
return outputBuffer;
}