@ekx/auph
Version:
[](https://github.com/eliasku/auph/actions/workflows/build.yml) [](https://www.npmjs.com/package/auph) [ {
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