Audio manager
A simple Howler wrapper.
Dependencies
Installation
npm install @cher-ami/audio-manager
Usage
Create new AudioManager instance:
import { AudioManager } from "@cher-ami/audio-manager"
const sound = new AudioManager("sound.mp3")
sound.play()
sound.pause()
sound.stop()
sound.replay()
sound.mute()
sound.unmute()
sound.fade()
sound.fadeIn()
sound.fadeOut()
sound.destroy()
Multiples instances can be created together:
import { AudioManager } from "@cher-ami/audio-manager"
const sound1 = new AudioManager("sound.mp3")
const sound2 = new AudioManager("sound.mp3")
sound1.play()
sound2.play()
API
AudioManager
AudioManager(audioFileUrl: string, options: {
volume?: number;
loop?: boolean;
})
play
play():Promise<void>
Play the sound.
await sound.play()
pause
pause(): void
Pause the sound.
sound.pause()
stop
stop(): void
Stop the sound. It will be reset to the beginning.
sound.stop()
replay
replay(): void
Will simply stop and play the sound.
sound.replay()
mute
mute(): void
Mute the sound.
sound.mute()
unmute
unmute(): void
Unmute the sound if he is muted.
sound.unmute()
fade
fade(from: number, to: number, duration = 1, ease = "none"): Promise<any>
Process fade between 2 points:
from
1 = 100%, 0 = 0%to
1 = 100%, 0 = 0%duration
: default is 1
ease
: default is none
, this is gsap easing string.
this.fade(0, 0.6)
await this.fade(0, 0.6)
fadeIn
fadeIn(duration = 1, ease = "none"): Promise<void>
FadeIn from the current volum to 100%.
this.fadeIn()
await this.fadeIn()
fadeOut
fadeOut(duration = 1, ease = "none"): Promise<void>
FadeOut from the current volum to 0%.
this.fadeOut()
await this.fadeOut()
destroy
destroy(): void
Destroy current instance
this.destroy()
Golbal mute
It's possible to mute all the paying sounds with global event emitter.
import { MUTE_AUDIO_SIGNAL } from "@cher-ami/audio-manager"
MUTE_AUDIO_SIGNAL.dispatch(true)
MUTE_AUDIO_SIGNAL.dispatch(false)
React usage
Audio manager come with react hooks to use it in react components.
useAudio
const App = () => {
const sound = useAudio("audio.mp3", { loop: true, volume: 0.5 })
return (
<div>
<button onClick={sound.play}>Play</button>
<button onClick={sound.pause}>Pause</button>
</div>
)
}
useMuteAllAudio
Mute all sounds with useMuteAllAudio
const [isMuted, setIsMuted] = useMuteAllAudio()
useEffect(() => {
}, [isMuted])
return (
<div>
<button onClick={setIsMuted(true)}>mute</button>
<button onClick={setIsMuted(false)}>unmute</button>
</div>
)
Example
Start example
npm run dev:example
Credits
cher-ami