UNPKG

@ekx/auph

Version:

[![Build](https://github.com/eliasku/auph/actions/workflows/build.yml/badge.svg)](https://github.com/eliasku/auph/actions/workflows/build.yml) [![Version](https://img.shields.io/npm/v/auph)](https://www.npmjs.com/package/auph) [![Downloads](https://img.sh

96 lines 2.96 kB
import { Mixer, Unit } from "./protocol/interface"; import * as Null from "./null/index"; import * as Browser from "./webaudio/index"; function haveWebAudio() { return typeof window !== "undefined" && !!(window.AudioContext || window.webkitAudioContext); } function loadDriver() { if (haveWebAudio()) { return Browser; } return Null; } var _ = loadDriver(); export * from "./protocol/static"; export var setup = _.setup; export var shutdown = _.shutdown; export var set = _.set; export var get = _.get; export var load = _.load; export var loadMemory = _.loadMemory; export var load_callback = _.load_callback; export var unload = _.unload; export var stop = _.stop; export var vibrate = _.vibrate; export function pause(name) { if (name === void 0) { name = Mixer; } setPause(name, true); } export function resume(name) { if (name === void 0) { name = Mixer; } setPause(name, false); } export function play(buffer, gain, pan, rate, loop, paused, bus) { if (gain === void 0) { gain = 1.0; } if (pan === void 0) { pan = 0.0; } if (rate === void 0) { rate = 1.0; } var flags = 0; if (!!loop) flags |= 4 /* Loop */; if (!paused) flags |= 2 /* Running */; return _.voice(buffer, f2u(gain), f2u(+pan + 1), f2u(rate), flags, 0 | bus); } export function getMixerStateString(state) { return ["closed", "paused", "", "running"][state & 3]; } export function getBufferStateString(state) { return ["free", "loading", "", "loaded"][state & 0x3] + ["", " streaming"][(state >>> 2) & 0x1]; } export function setGain(busOrVoice, value) { set(busOrVoice, 1 /* Gain */, f2u(value)); } export function getGain(busOrVoice) { return get(busOrVoice, 1 /* Gain */) / Unit; } export function setPan(voice, pan) { set(voice, 2 /* Pan */, f2u(+pan + 1)); } export function setRate(voice, rate) { set(voice, 3 /* Rate */, f2u(rate)); } export function setPause(name, value) { set(name, 128 /* Flags */ | 2 /* Running */, 0 | !value); } export function setLoop(voice, value) { set(voice, 128 /* Flags */ | 4 /* Loop */, 0 | value); } export function getPan(voice) { return get(voice, 2 /* Pan */) / Unit - 1; } export function getRate(voice) { return get(voice, 3 /* Rate */) / Unit; } export function getPause(voice) { return !(get(voice, 0 /* State */) & 2 /* Running */); } export function getLoop(voice) { return !!(get(voice, 0 /* State */) & 4 /* Loop */); } export function getCurrentTime(voice) { return get(voice, 4 /* CurrentTime */) / Unit; } export function isActive(name) { return !!(get(name, 0 /* State */) & 1 /* Active */); } export function isBufferLoaded(name) { var mask = 1 /* Active */ | 2 /* Loaded */; return (get(name, 0 /* State */) & mask) === mask; } export function getDuration(name) { return get(name, 6 /* Duration */) / Unit; } function f2u(x) { return (x * Unit) | 0; } //# sourceMappingURL=index.js.map