Tone.js/Tone/core/Global.ts

59 lines
1.4 KiB
TypeScript
Raw Normal View History

2019-05-23 18:00:49 +00:00
import { version } from "../version";
import { Context } from "./context/Context";
2019-04-12 14:37:47 +00:00
/**
* The global audio context which is getable and assignable through
* getContext and setContext
*/
let globalContext: Context;
2019-04-12 14:37:47 +00:00
2019-06-18 01:53:54 +00:00
// @ts-ignore
globalContext = window.TONE_CONTEXT;
2019-06-18 01:53:54 +00:00
2019-04-12 14:37:47 +00:00
/**
* Returns the default system-wide AudioContext
*/
export function getContext(): Context {
2019-04-12 14:37:47 +00:00
if (!globalContext) {
setContext(new Context());
2019-04-12 14:37:47 +00:00
}
return globalContext;
}
/**
* Set the default audio context
*/
export function setContext(context: Context): void {
2019-04-12 14:37:47 +00:00
globalContext = context;
context.initialize();
2019-06-18 01:53:54 +00:00
// @ts-ignore
window.TONE_CONTEXT = context;
2019-04-12 14:37:47 +00:00
}
/**
* Most browsers will not play _any_ audio until a user
* clicks something (like a play button). Invoke this method
* on a click or keypress event handler to start the audio context.
* More about the Autoplay policy
* [here](https://developers.google.com/web/updates/2017/09/autoplay-policy-changes#webaudio)
* @example
* document.querySelector('#playbutton').addEventListener('click', () => Tone.start())
*/
export function start(): Promise <void> {
return globalContext.resume();
2019-04-12 14:37:47 +00:00
}
/**
2019-05-23 18:00:49 +00:00
* Log Tone.js + version in the console.
2019-04-12 14:37:47 +00:00
*/
2019-05-23 18:00:49 +00:00
if (!this.TONE_SILENCE_LOGGING) {
let prefix = "v";
2019-06-19 14:25:05 +00:00
// @ts-ignore
2019-05-23 18:00:49 +00:00
if (version === "dev") {
prefix = "";
}
const printString = ` * Tone.js ${prefix}${version} * `;
// tslint:disable-next-line: no-console
console.log(`%c${printString}`, "background: #000; color: #fff");
}