Skip to content
This repository has been archived by the owner on May 29, 2020. It is now read-only.

miguelmota/audio-director

Repository files navigation


logo


audio-director

Manage browser audio sources and playback

License Build Status dependencies Status NPM version

Install

npm install audio-director

Documentation

https://lab.miguelmota.com/audio-director

Classes

Player

Objects

Player : object

Class reprensenting a Player

Player

Kind: global class

new Player()

Create a Player

player.on(eventName, callback)

Listen for player events

Kind: instance method of Player

Param Type Description
eventName String name of even
callback function called when the event occurs

Example

player.on(Player.EventTypes.PLAY, () => {

})

Example

player.on(Player.EventTypes.PLAYBACK_RATE, () => {

})

player.getCurrentUrl() ⇒ String

Get currently playing audio source url

Kind: instance method of Player Example

const url = player.getCurrentUrl()

player.emptyQueue() ⇒ Promise

Empties queue

Kind: instance method of Player Example

player.emptyQueue()

player.enqueue(source) ⇒ Promise

Enqueues an audio source to play

Kind: instance method of Player

Param Type Description
source DataView | Uint8Array | AudioBuffer | ArrayBuffer | String an audio source to play

Example

const url = 'https://example.com/audio.mp3'

player.enqueue(url)

Example

player.enqueue(audioBuffer)

Example

player.enqueue(arrayBuffer)

Example

player.enqueue(blob)

player.deque() ⇒ Promise

Deques an audio source from queue

Kind: instance method of Player Example

player.deque()

player.play() ⇒ Promise

Plays current audio source in queue

Kind: instance method of Player Example

player.play()

player.playQueue() ⇒ Promise

Start playing audio sources in queue

Kind: instance method of Player Example

player.playQueue()

player.stop() ⇒ Promise

Stop playing current audio source

Kind: instance method of Player Example

player.stop()

player.pause() ⇒ Promise

Pause playing current audio source

Kind: instance method of Player Example

player.pause()

player.replay() ⇒ Promise

Replay current audio source

Kind: instance method of Player Example

player.replay()

player.playBlob(blob) ⇒ Promise

Play an audio Blob

Kind: instance method of Player

Param Type Description
blob Blob audio blob

Example

const blob = new Blob([dataView], {
  type: 'audio/wav'
})

player.playBlob(blob)

player.playAudioBuffer(audioBuffer) ⇒ Promise

Play an AudioBuffer

Kind: instance method of Player

Param Type Description
audioBuffer AudioBuffer an AudioBuffer

Example

player.playAudioBuffer(audioBuffer)

player.getCurrentAudioBuffer() ⇒ AudioBuffer

Return current audio buffer playing

Kind: instance method of Player Example

player.getCurrentAudioBuffer()

player.playUrl(url) ⇒ Promise

Play an MP3 url

Kind: instance method of Player

Param Type Description
url String MP3 url

Example

const url = 'https://example.com/audio.mp3'

player.playUrl(url)

player.getAudioDataFromUrl(url) ⇒ Promise

Get the binary audio data from an audio source url in ArrayBuffer form

Kind: instance method of Player Returns: Promise - arrayBuffer

Param Type Description
url String audio source url

Example

const url = 'https://example.com/audio.mp3'

player.getAudioDataFromUrl()
.then(arrayBuffer => {

})

player.next() ⇒ Promise

Play next audio source in queue

Kind: instance method of Player Example

player.next()

player.previous() ⇒ Promise

Play previous audio source in queue

Kind: instance method of Player Example

player.previous()

player.setRandom(enabled) ⇒ Promise

Enable to disable random playback

Kind: instance method of Player

Param Type Description
enabled Boolean boolean to enable random playback

Example

player.setRandom(true)

player.setRepeat(enabled) ⇒ Promise

Enable to disable repeat mode. Repeat mode replays the audio sources once the entire queue has finished playing.

Kind: instance method of Player

Param Type Description
enabled Boolean boolean to enable repeat mode

Example

player.setRepeat(true)

player.hasNext() ⇒ Boolean

Return true if there's an audio source to play next in queue

Kind: instance method of Player Returns: Boolean - hasNext Example

const hasNext = player.hasNext()

player.hasPrevious() ⇒ Boolean

Return true if there's a previous audio source in queue

Kind: instance method of Player Returns: Boolean - hasPrevious Example

const hasPrevious = player.hasPrevious()

player.setPlaybackRate(playbackRate) ⇒ Promise

Set the plaback rate speed, range 0.75-2

Kind: instance method of Player

Param Type Description
playbackRate Number new playback rate

Example

player.setPlaybackRate(2)

player.getPlaybackRate() ⇒ Number

Get the current plaback rate speed

Kind: instance method of Player Returns: Number - playback rate speed Example

const playbackRate = player.getPlaybackRate()

player.setVolume(volume) ⇒ Promise

Set volume, range 0-1

Kind: instance method of Player

Param Type Description
volume Number volume value

Example

player.setVolume(0.9)

player.getVolume() ⇒ Number

Get current volume value

Kind: instance method of Player Returns: Number - volume - current volume value Example

player.getVolume()

player.setMaxVolume(maxVolume) ⇒ Promise

Set the maximum volume limit. For example if max volume is set to 0.6, then when volume is scaled from 0-0.6, meaning that volume level at 1 will play at 0.6

Kind: instance method of Player

Param Type Description
maxVolume Number max volume, range 0-1

Example

player.setMaxVolume(0.8)

player.getMaxVolume() ⇒ Number

Get max volume value

Kind: instance method of Player Returns: Number - maxVolume - max volume value Example

player.getMaxVolume()

player.setMuted(enabled) ⇒ Promise

Set volume level to muted

Kind: instance method of Player

Param Type Description
enabled Boolean boolean to enable mute

Example

player.setMuted(true)

player.getCurrentTime() ⇒ Number

Return elapsed time in seconds since the audio source started playing

Kind: instance method of Player Returns: Number - time - current time Example

player.getCurrentTime()

player.seekTo(seconds) ⇒ Promise

Seek to a specified time in audio source

Kind: instance method of Player

Param Type Description
seconds Number number of seconds to seek to

Example

const seconds = 45

player.seekTo(seconds)

player.getDuration() ⇒ Number

Get duration of audio source

Kind: instance method of Player Returns: Number - duration - duration of audio source Example

player.getDuration()

player.getCurrentState() ⇒ String

Get current state of player

Kind: instance method of Player Returns: String - - current state Example

const currentState = player.getCurrentState()

console.log(currentState) // 'playing'

Player.EventTypes ⇒ Object

Return event types

Kind: static property of Player Returns: Object - eventTypes - all player event types Example

const EventTypes = Player.EventTypes

{
      LOG: 'log',
      ERROR: 'error',
      READY: 'ready',
      PLAY: 'play',
      REPLAY: 'replay',
      PAUSE: 'pause',
      STOP: 'pause',
      NEXT: 'next',
      PREVIOUS: 'previous',
      RANDOM: 'random',
      REPEAT: 'repeat',
      PLAYBACK_RATE: 'playbackRate',
      VOLUME: 'volume',
      MAX_VOLUME: 'maxVolume',
      MUTED: 'muted',
      ENDED: 'ended',
      ENQUEUE: 'enqueue',
      DEQUE: 'deque',
      EMPTY_QUEUE: 'emptyQueue',
      STATE_CHANGE: 'stateChange'
}

Player : object

Class reprensenting a Player

Kind: global namespace Example

const player = new Player()

new Player()

Create a Player

player.on(eventName, callback)

Listen for player events

Kind: instance method of Player

Param Type Description
eventName String name of even
callback function called when the event occurs

Example

player.on(Player.EventTypes.PLAY, () => {

})

Example

player.on(Player.EventTypes.PLAYBACK_RATE, () => {

})

player.getCurrentUrl() ⇒ String

Get currently playing audio source url

Kind: instance method of Player Example

const url = player.getCurrentUrl()

player.emptyQueue() ⇒ Promise

Empties queue

Kind: instance method of Player Example

player.emptyQueue()

player.enqueue(source) ⇒ Promise

Enqueues an audio source to play

Kind: instance method of Player

Param Type Description
source DataView | Uint8Array | AudioBuffer | ArrayBuffer | String an audio source to play

Example

const url = 'https://example.com/audio.mp3'

player.enqueue(url)

Example

player.enqueue(audioBuffer)

Example

player.enqueue(arrayBuffer)

Example

player.enqueue(blob)

player.deque() ⇒ Promise

Deques an audio source from queue

Kind: instance method of Player Example

player.deque()

player.play() ⇒ Promise

Plays current audio source in queue

Kind: instance method of Player Example

player.play()

player.playQueue() ⇒ Promise

Start playing audio sources in queue

Kind: instance method of Player Example

player.playQueue()

player.stop() ⇒ Promise

Stop playing current audio source

Kind: instance method of Player Example

player.stop()

player.pause() ⇒ Promise

Pause playing current audio source

Kind: instance method of Player Example

player.pause()

player.replay() ⇒ Promise

Replay current audio source

Kind: instance method of Player Example

player.replay()

player.playBlob(blob) ⇒ Promise

Play an audio Blob

Kind: instance method of Player

Param Type Description
blob Blob audio blob

Example

const blob = new Blob([dataView], {
  type: 'audio/wav'
})

player.playBlob(blob)

player.playAudioBuffer(audioBuffer) ⇒ Promise

Play an AudioBuffer

Kind: instance method of Player

Param Type Description
audioBuffer AudioBuffer an AudioBuffer

Example

player.playAudioBuffer(audioBuffer)

player.getCurrentAudioBuffer() ⇒ AudioBuffer

Return current audio buffer playing

Kind: instance method of Player Example

player.getCurrentAudioBuffer()

player.playUrl(url) ⇒ Promise

Play an MP3 url

Kind: instance method of Player

Param Type Description
url String MP3 url

Example

const url = 'https://example.com/audio.mp3'

player.playUrl(url)

player.getAudioDataFromUrl(url) ⇒ Promise

Get the binary audio data from an audio source url in ArrayBuffer form

Kind: instance method of Player Returns: Promise - arrayBuffer

Param Type Description
url String audio source url

Example

const url = 'https://example.com/audio.mp3'

player.getAudioDataFromUrl()
.then(arrayBuffer => {

})

player.next() ⇒ Promise

Play next audio source in queue

Kind: instance method of Player Example

player.next()

player.previous() ⇒ Promise

Play previous audio source in queue

Kind: instance method of Player Example

player.previous()

player.setRandom(enabled) ⇒ Promise

Enable to disable random playback

Kind: instance method of Player

Param Type Description
enabled Boolean boolean to enable random playback

Example

player.setRandom(true)

player.setRepeat(enabled) ⇒ Promise

Enable to disable repeat mode. Repeat mode replays the audio sources once the entire queue has finished playing.

Kind: instance method of Player

Param Type Description
enabled Boolean boolean to enable repeat mode

Example

player.setRepeat(true)

player.hasNext() ⇒ Boolean

Return true if there's an audio source to play next in queue

Kind: instance method of Player Returns: Boolean - hasNext Example

const hasNext = player.hasNext()

player.hasPrevious() ⇒ Boolean

Return true if there's a previous audio source in queue

Kind: instance method of Player Returns: Boolean - hasPrevious Example

const hasPrevious = player.hasPrevious()

player.setPlaybackRate(playbackRate) ⇒ Promise

Set the plaback rate speed, range 0.75-2

Kind: instance method of Player

Param Type Description
playbackRate Number new playback rate

Example

player.setPlaybackRate(2)

player.getPlaybackRate() ⇒ Number

Get the current plaback rate speed

Kind: instance method of Player Returns: Number - playback rate speed Example

const playbackRate = player.getPlaybackRate()

player.setVolume(volume) ⇒ Promise

Set volume, range 0-1

Kind: instance method of Player

Param Type Description
volume Number volume value

Example

player.setVolume(0.9)

player.getVolume() ⇒ Number

Get current volume value

Kind: instance method of Player Returns: Number - volume - current volume value Example

player.getVolume()

player.setMaxVolume(maxVolume) ⇒ Promise

Set the maximum volume limit. For example if max volume is set to 0.6, then when volume is scaled from 0-0.6, meaning that volume level at 1 will play at 0.6

Kind: instance method of Player

Param Type Description
maxVolume Number max volume, range 0-1

Example

player.setMaxVolume(0.8)

player.getMaxVolume() ⇒ Number

Get max volume value

Kind: instance method of Player Returns: Number - maxVolume - max volume value Example

player.getMaxVolume()

player.setMuted(enabled) ⇒ Promise

Set volume level to muted

Kind: instance method of Player

Param Type Description
enabled Boolean boolean to enable mute

Example

player.setMuted(true)

player.getCurrentTime() ⇒ Number

Return elapsed time in seconds since the audio source started playing

Kind: instance method of Player Returns: Number - time - current time Example

player.getCurrentTime()

player.seekTo(seconds) ⇒ Promise

Seek to a specified time in audio source

Kind: instance method of Player

Param Type Description
seconds Number number of seconds to seek to

Example

const seconds = 45

player.seekTo(seconds)

player.getDuration() ⇒ Number

Get duration of audio source

Kind: instance method of Player Returns: Number - duration - duration of audio source Example

player.getDuration()

player.getCurrentState() ⇒ String

Get current state of player

Kind: instance method of Player Returns: String - - current state Example

const currentState = player.getCurrentState()

console.log(currentState) // 'PLAYING'

Player.EventTypes ⇒ Object

Return event types

Kind: static property of Player Returns: Object - eventTypes - all player event types Example

const EventTypes = Player.EventTypes

{
      LOG: 'log',
      ERROR: 'error',
      READY: 'ready',
      PLAY: 'play',
      REPLAY: 'replay',
      PAUSE: 'pause',
      STOP: 'pause',
      NEXT: 'next',
      PREVIOUS: 'previous',
      RANDOM: 'random',
      REPEAT: 'repeat',
      PLAYBACK_RATE: 'playbackRate',
      VOLUME: 'volume',
      MAX_VOLUME: 'maxVolume',
      MUTED: 'muted',
      ENDED: 'ended',
      ENQUEUE: 'enqueue',
      DEQUE: 'deque',
      EMPTY_QUEUE: 'emptyQueue',
      STATE_CHANGE: 'stateChange'
}

Usage

Standard audio player

const {Player} = require('audio-director')
const player = new Player()

// add audio source(s) to play queue. Converts input to AudioBuffer.
player.enqueue(dataView|typedArray|arrayBuffer|url)
.then(audioBuffer => {
  player.play()
})

Full documentation

YouTube player

const {YoutubePlayer} = require('audio-director')
const player = new YoutubePlayer()

const url = 'https://www.youtube.com/watch?v=_5joTyy3CCo&list=RDQMc4l8l2aQrNo'

player.enqueue(url)
.then(() => player.play())

Full documentation

Example

Live basic example

Source

https://github.com/miguelmota/audio-director

License

MIT