UNPKG

@pankajparashar/react-voice-visualizer

Version:

React library for audio recording and visualization using Web Audio API

120 lines (119 loc) 3.49 kB
import { Dispatch, MutableRefObject, SetStateAction } from 'react'; export interface BarItem { startY: number; barHeight: number; } export interface Controls { audioRef: MutableRefObject<HTMLAudioElement | null>; isRecordingInProgress: boolean; isPausedRecording: boolean; audioData: Uint8Array; recordingTime: number; mediaRecorder: MediaRecorder | null; duration: number; currentAudioTime: number; audioSrc: string; isPausedRecordedAudio: boolean; isProcessingRecordedAudio: boolean; isCleared: boolean; isAvailableRecordedAudio: boolean; recordedBlob: Blob | null; bufferFromRecordedBlob: AudioBuffer | null; formattedDuration: string; formattedRecordingTime: string; formattedRecordedAudioCurrentTime: string; startRecording: () => void; togglePauseResume: () => void; startAudioPlayback: () => void; stopAudioPlayback: () => void; stopRecording: () => void; saveAudioFile: () => void; clearCanvas: () => void; setCurrentAudioTime: Dispatch<SetStateAction<number>>; error: Error | null; isProcessingOnResize: boolean; isProcessingStartRecording: boolean; isPreloadedBlob: boolean; setPreloadedAudioBlob: (blob: Blob) => void; _setIsProcessingAudioOnComplete: Dispatch<SetStateAction<boolean>>; _setIsProcessingOnResize: Dispatch<SetStateAction<boolean>>; } export interface BarsData { max: number; } export interface DrawByLiveStreamParams { audioData: Uint8Array; unit: number; index: MutableRefObject<number>; index2: MutableRefObject<number>; canvas: HTMLCanvasElement; isRecordingInProgress: boolean; isPausedRecording: boolean; picks: Array<BarItem | null>; backgroundColor: string; barWidth: number; mainBarColor: string; secondaryBarColor: string; rounded: number; animateCurrentPick: boolean; fullscreen: boolean; } export interface DrawByBlob { barsData: BarsData[]; canvas: HTMLCanvasElement; barWidth: number; gap: number; backgroundColor: string; mainBarColor: string; secondaryBarColor: string; currentAudioTime?: number; rounded: number; duration: number; } export interface PaintLineFromCenterToRightParams { context: CanvasRenderingContext2D; color: string; rounded: number; width: number; height: number; barWidth: number; } export interface GetDataForCanvasParams { canvas: HTMLCanvasElement; backgroundColor: string; } export interface PaintLineParams { context: CanvasRenderingContext2D; color: string; rounded: number | number[]; x: number; y: number; w: number; h: number; } export type GetBarsDataParams = { bufferData: Float32Array; height: number; width: number; barWidth: number; gap: number; }; export interface useVoiceVisualizerParams { onStartRecording?: () => void; onStopRecording?: () => void; onPausedRecording?: () => void; onResumedRecording?: () => void; onClearCanvas?: () => void; onEndAudioPlayback?: () => void; onStartAudioPlayback?: () => void; onPausedAudioPlayback?: () => void; onResumedAudioPlayback?: () => void; onErrorPlayingAudio?: (error: Error) => void; shouldHandleBeforeUnload?: boolean; } export interface UseWebWorkerParams<T> { fn: AnyFunction; initialValue: T; onMessageReceived?: () => void; } export type AnyFunction = (...args: any[]) => any;