Skip to main content
Deprecated 0.20.0 useAudioLevel(params) : void
useAudioLevel is deprecated. Use useAudioLevelObserver instead.
TheuseAudioLevel hook takes aMediaStreamTrack (for example, a call participant’s audio track). The second parameter, onVolumeChange, is a callback function, which runs when the track’s volume level changes. With this callback, you can respond to the track’s volume changes in whichever way you want.

Parameters

mediaTrack
MediaStreamTrack
required
The MediaStreamTrack to test.
onVolumeChange
Function
required
A callback reference to run when the track’s volume level changes.

Example

import {
  useAudioLevel,
  useAudioTrack,
  useLocalSessionId,
} from '@daily-co/daily-react';
import { useCallback, useRef } from 'react';

export const MicVolumeVisualizer = () => {
  const localSessionId = useLocalSessionId();
  const audioTrack = useAudioTrack(localSessionId);

  const volRef = useRef(null);

  useAudioLevel(
    audioTrack?.persistentTrack,
    useCallback((volume) => {
      // this volume number will be between 0 and 1
      // give it a minimum scale of 0.15 to not completely disappear 👻
      volRef.current.style.transform = `scale(${Math.max(0.15, volume)})`;
    }, [])
  );

  // Your audio track's audio volume visualized in a small circle,
  // whose size changes depending on the volume level
  return (
    <div>
      <div className="vol" ref={volRef} />
      <style jsx>{`
        .vol {
          border: 1px solid black;
          border-radius: 100%;
          height: 32px;
          transition: transform 0.1s ease;
          width: 32px;
        }
      `}</style>
    </div>
  );
};

See also