An audio visualizer for React. Provides separate components to visualize both live audio and audio blobs.
npm install react-audio-visualizeAudioVisualizer Component (Example)
import React, { useState, useRef } from 'react';
import { AudioVisualizer } from 'react-audio-visualize';
const Visualizer = () => {
  const [blob, setBlob] = useState<Blob>();
  const visualizerRef = useRef<HTMLCanvasElement>(null)
  // set blob somewhere in code
  return (
    <div>
      {blob && (
        <AudioVisualizer
          ref={visualizerRef}
          blob={blob}
          width={500}
          height={75}
          barWidth={1}
          gap={0}
          barColor={'#f76565'}
        />
      )}
    </div>
  )
}| Props | Description | Default | Optional | 
|---|---|---|---|
| blob | Audio blob to visualize | N/A | No | 
| width | Width of the visualizer | N/A | No | 
| height | Height of the visualizer | N/A | No | 
| barWidth | Width of each individual bar in the visualization | 2 | Yes | 
| gap | Gap between each bar in the visualization | 1 | Yes | 
| backgroundColor | BackgroundColor for the visualization | transparent | Yes | 
| barColor | Color for the bars that have not yet been played | "rgb(184, 184, 184)"" | Yes | 
| barPlayedColor | Color for the bars that have been played | "rgb(160, 198, 255)"" | Yes | 
| currentTime | Current time stamp till which the audio blob has been played. Visualized bars that fall before the current time will have barPlayerColor, while that ones that fall after will havebarColor | N/A | Yes | 
| style | Custom styles that can be passed to the visualization canvas | N/A | Yes | 
| ref | A ForwardedReffor theHTMLCanvasElement | N/A | Yes | 
LiveAudioVisualizer Component (Example)
import React, { useState } from 'react';
import { LiveAudioVisualizer } from 'react-audio-visualize';
const Visualizer = () => {
  const [mediaRecorder, setMediaRecorder] = useState<MediaRecorder>();
  // set media recorder somewhere in code
  return (
    <div>
      {mediaRecorder && (
        <LiveAudioVisualizer
          mediaRecorder={mediaRecorder}
          width={200}
          height={75}
        />
      )}
    </div>
  )
}| Props | Description | Default | Optional | 
|---|---|---|---|
| mediaRecorder | Media recorder who's stream needs to visualized | N/A | No | 
| width | Width of the visualizer | 100% | Yes | 
| height | Height of the visualizer | 100% | Yes | 
| barWidth | Width of each individual bar in the visualization | 2 | Yes | 
| gap | Gap between each bar in the visualization | 1 | Yes | 
| backgroundColor | BackgroundColor for the visualization | transparent | Yes | 
| barColor | Color for the bars that have not yet been played | "rgb(160, 198, 255)" | Yes | 
| fftSize | An unsigned integer, representing the window size of the FFT, given in number of samples. For more details | 1024 | Yes | 
| maxDecibels | A double, representing the maximum decibel value for scaling the FFT analysis data. For more details | -10 | Yes | 
| minDecibels | A double, representing the minimum decibel value for scaling the FFT analysis data, where 0 dB is the loudest possible sound. For more details | -90 | Yes | 
| smoothingTimeConstant | A double within the range 0 to 1 (0 meaning no time averaging). For more details | 0.4 | Yes | 

