import React, { useMemo, useEffect } from 'react'; import { blobFromAudioBuffer } from '../utils/utils'; interface AudioPlayerProps { audioBuffer: AudioBuffer; } export const AudioPlayer: React.FC = ({ audioBuffer }) => { // Create a Blob URL from the audioBuffer. const blobUrl = useMemo(() => { const wavBlob = blobFromAudioBuffer(audioBuffer); return URL.createObjectURL(wavBlob); }, [audioBuffer]); const downloadUrl = useMemo(() => { const wavBlob = blobFromAudioBuffer(audioBuffer); return URL.createObjectURL(wavBlob); }, [audioBuffer]); // Clean up the object URL when the component unmounts or audioBuffer changes. useEffect(() => { return () => { URL.revokeObjectURL(blobUrl); URL.revokeObjectURL(downloadUrl); }; }, [blobUrl]); return (
Download
); };