0.1.2 • Published 10 months ago

audio0 v0.1.2

Weekly downloads
-
License
MIT
Repository
github
Last release
10 months ago

audio0

Audio library for the modern browser. Auto fade in actions.

Installation

npm install audio0
yarn add audio0
pnpm add audio0

Usage

Single Audio

import { ZAudio } from 'audio0'

const audio = new ZAudio({
  mediaSession: true,
  fadeDuration: 1000, // 500 by default
})
audio.on('timeupdate', (time) => {
  console.log('current time', time)
})

await audio.load({ src: './audio.mp3' })
await audio.play()

Player

import { ZPlayer } from 'audio0'
import mp3 from './test.mp3?url'
import ogg from './test.ogg?url'

const player = new ZPlayer({
  trackList: [{ src: ogg }, { src: mp3 }],
  autoNext: true,
})

player.on('timeupdate', (time) => {
  player.handleContext(ctx => console.log(time, ctx.currentTime, player.duration))
})

player.on('error', console.error)
player.on('reorder', () => console.log('reorder'))

prevButton.addEventListener('click', () => {
  player.prevTrack()
})
nextButton.addEventListener('click', () => {
  player.nextTrack()
})

Utils

/**
 * Parse audio buffer to array, use for generate audio waveform
 * @param buf source audio buffer
 * @param blockNum result block amount
 * @param max max value (0 ~ 1), default 0.9
 * @param min min value (0 ~ 1), default 0.1
 */
function normalizeAudioBuffer(buf: AudioBuffer, blockNum?: number, max?: number, min?: number): number[]

/**
 * Create shuffle function that weighted shuffle by artist and score
 * @param getLimit get limit function. The larger of result, the more shuffled, the poor performance, @default n => n * 2 / 3
 */
function createWeightedArtistShuffle(getLimit?: GetLimitFn): ShuffleIndexFn

/**
 * Create equalizer
 * @param ctx audioContext
 * @param freq frequency array, you can use {@link defaultFreq}
 * @param handleNode biquad filter node handler
 * @example
 * const eq = createEqualizer(ctx, defaultFeq)
 * const eq1 = createEqualizer(ctx, [100, 200, 300, 400, 500] as const)
 */
function createEqualizer<T extends readonly number[]>(ctx: AudioContext, freq: T, handleNode?: (band: BiquadFilterNode, freq: T[number], index: number) => void): EQ<T>

function bindEventListenerWithCleanup(el: EventTarget, type: string, handler: EventListener): VoidFunction

function secondToTime(second: number): string

function formatVolume(val: number): number

function clamp(min: number, val: number, max: number): number

Credit

0.1.2

10 months ago

0.1.1

10 months ago

0.1.0

10 months ago

0.0.1

1 year ago