tone 14.8.27 → 14.8.28

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/Tone/component/analysis/Meter.test.ts +1 -1
  2. package/Tone/component/analysis/Meter.ts +3 -3
  3. package/Tone/component/channel/Recorder.ts +1 -1
  4. package/Tone/core/clock/Ticker.ts +0 -1
  5. package/Tone/core/context/BaseContext.ts +1 -1
  6. package/Tone/core/context/Context.test.ts +1 -1
  7. package/Tone/core/context/Context.ts +4 -0
  8. package/Tone/core/context/ToneAudioBuffer.ts +7 -1
  9. package/Tone/core/context/ToneAudioNode.ts +1 -1
  10. package/Tone/core/util/Debug.ts +1 -1
  11. package/Tone/effect/Distortion.test.ts +1 -1
  12. package/Tone/instrument/DuoSynth.ts +1 -1
  13. package/Tone/instrument/PolySynth.ts +2 -1
  14. package/Tone/source/OneShotSource.ts +2 -1
  15. package/Tone/version.ts +1 -1
  16. package/build/Tone.js +2 -21
  17. package/build/Tone.js.LICENSE.txt +6 -0
  18. package/build/Tone.js.map +1 -1
  19. package/build/esm/component/analysis/Meter.d.ts +1 -1
  20. package/build/esm/component/analysis/Meter.js +2 -2
  21. package/build/esm/component/analysis/Meter.js.map +1 -1
  22. package/build/esm/component/channel/Recorder.d.ts +1 -1
  23. package/build/esm/component/channel/Recorder.js.map +1 -1
  24. package/build/esm/core/clock/Ticker.js +0 -1
  25. package/build/esm/core/clock/Ticker.js.map +1 -1
  26. package/build/esm/core/context/Context.d.ts +4 -0
  27. package/build/esm/core/context/Context.js +4 -0
  28. package/build/esm/core/context/Context.js.map +1 -1
  29. package/build/esm/core/context/ToneAudioBuffer.js +5 -1
  30. package/build/esm/core/context/ToneAudioBuffer.js.map +1 -1
  31. package/build/esm/core/context/ToneAudioNode.js +0 -4
  32. package/build/esm/core/context/ToneAudioNode.js.map +1 -1
  33. package/build/esm/core/util/Debug.d.ts +1 -1
  34. package/build/esm/instrument/DuoSynth.js.map +1 -1
  35. package/build/esm/instrument/PolySynth.d.ts +1 -1
  36. package/build/esm/instrument/PolySynth.js.map +1 -1
  37. package/build/esm/source/OneShotSource.js +2 -1
  38. package/build/esm/source/OneShotSource.js.map +1 -1
  39. package/build/esm/version.js +1 -1
  40. package/docs/tone.json +1 -1
  41. package/package.json +24 -25
@@ -30,7 +30,7 @@ describe("Meter", () => {
30
30
 
31
31
  it("returns an array of channels if channels > 1", () => {
32
32
  const meter = new Meter({
33
- channels: 4,
33
+ channelCount: 4,
34
34
  });
35
35
  expect((meter.getValue() as number[]).length).to.equal(4);
36
36
  meter.dispose();
@@ -8,7 +8,7 @@ import { Analyser } from "./Analyser";
8
8
  export interface MeterOptions extends MeterBaseOptions {
9
9
  smoothing: NormalRange;
10
10
  normalRange: boolean;
11
- channels: number;
11
+ channelCount: number;
12
12
  }
13
13
 
14
14
  /**
@@ -59,7 +59,7 @@ export class Meter extends MeterBase<MeterOptions> {
59
59
  context: this.context,
60
60
  size: 256,
61
61
  type: "waveform",
62
- channels: options.channels,
62
+ channels: options.channelCount,
63
63
  });
64
64
 
65
65
  this.smoothing = options.smoothing,
@@ -70,7 +70,7 @@ export class Meter extends MeterBase<MeterOptions> {
70
70
  return Object.assign(MeterBase.getDefaults(), {
71
71
  smoothing: 0.8,
72
72
  normalRange: false,
73
- channels: 1,
73
+ channelCount: 1,
74
74
  });
75
75
  }
76
76
 
@@ -111,7 +111,7 @@ export class Recorder extends ToneAudioNode<RecorderOptions> {
111
111
  */
112
112
  async start() {
113
113
  assert(this.state !== "started", "Recorder is already started");
114
- const startPromise = new Promise(done => {
114
+ const startPromise = new Promise<void>(done => {
115
115
  const handleStart = () => {
116
116
  this._recorder.removeEventListener("start", handleStart, false);
117
117
 
@@ -107,7 +107,6 @@ export class Ticker {
107
107
  private _disposeClock(): void {
108
108
  if (this._timeout) {
109
109
  clearTimeout(this._timeout);
110
- this._timeout = 0;
111
110
  }
112
111
  if (this._worker) {
113
112
  this._worker.terminate();
@@ -104,7 +104,7 @@ export abstract class BaseContext
104
104
 
105
105
  abstract get rawContext(): AnyAudioContext;
106
106
 
107
- abstract async addAudioWorkletModule(
107
+ abstract addAudioWorkletModule(
108
108
  _url: string,
109
109
  _name: string
110
110
  ): Promise<void>;
@@ -116,7 +116,7 @@ describe("Context", () => {
116
116
  }
117
117
  });
118
118
  await context.resume();
119
- await new Promise((done) => setTimeout(() => done(), 10));
119
+ await new Promise<void>((done) => setTimeout(() => done(), 10));
120
120
  expect(triggerChange).to.equal(true);
121
121
  context.dispose();
122
122
  return ac.close();
@@ -463,6 +463,10 @@ export class Context extends BaseContext {
463
463
 
464
464
  /**
465
465
  * The current audio context time plus a short [[lookAhead]].
466
+ * @example
467
+ * setInterval(() => {
468
+ * console.log("now", Tone.now());
469
+ * }, 100);
466
470
  */
467
471
  now(): Seconds {
468
472
  return this._context.currentTime + this.lookAhead;
@@ -372,7 +372,13 @@ export class ToneAudioBuffer extends Tone {
372
372
 
373
373
  // make sure there is a slash between the baseUrl and the url
374
374
  const baseUrl = ToneAudioBuffer.baseUrl === "" || ToneAudioBuffer.baseUrl.endsWith("/") ? ToneAudioBuffer.baseUrl : ToneAudioBuffer.baseUrl + "/";
375
- const response = await fetch(baseUrl + url);
375
+
376
+ // encode special characters in file path
377
+ const location = document.createElement("a");
378
+ location.href = (baseUrl + url);
379
+ location.pathname = (location.pathname + location.hash).split("/").map(encodeURIComponent).join("/");
380
+
381
+ const response = await fetch(location.href);
376
382
  if (!response.ok) {
377
383
  throw new Error(`could not load url: ${url}`);
378
384
  }
@@ -27,7 +27,7 @@ export abstract class ToneAudioNode<Options extends ToneAudioNodeOptions = ToneA
27
27
  /**
28
28
  * The name of the class
29
29
  */
30
- abstract readonly name: string = "ToneAudioNode";
30
+ abstract readonly name: string;
31
31
 
32
32
  /**
33
33
  * The input node or nodes. If the object is a source,
@@ -3,7 +3,7 @@
3
3
  * @param statement
4
4
  * @param error The message which is passed into an Error
5
5
  */
6
- export function assert(statement: boolean, error: string): void {
6
+ export function assert(statement: boolean, error: string): asserts statement {
7
7
  if (!statement) {
8
8
  throw new Error(error);
9
9
  }
@@ -16,7 +16,7 @@ describe("Distortion", () => {
16
16
  const osc = new Oscillator().connect(dist);
17
17
  osc.type = "square";
18
18
  osc.start(0).stop(0.4);
19
- }, "distortion.wav", 0.01);
19
+ }, "distortion.wav", 0.02);
20
20
  });
21
21
 
22
22
  context("API", () => {
@@ -177,7 +177,7 @@ export class DuoSynth extends Monophonic<DuoSynthOptions> {
177
177
  release: 0.5
178
178
  }
179
179
  }),
180
- }) as DuoSynthOptions;
180
+ }) as unknown as DuoSynthOptions;
181
181
  }
182
182
  /**
183
183
  * Trigger the attack portion of the note
@@ -26,7 +26,8 @@ type VoiceOptions<T> =
26
26
  T extends MonoSynth ? MonoSynthOptions :
27
27
  T extends AMSynth ? AMSynthOptions :
28
28
  T extends Synth ? SynthOptions :
29
- never;
29
+ T extends Monophonic<infer U> ? U :
30
+ never;
30
31
 
31
32
  /**
32
33
  * The settable synth options. excludes monophonic options.
@@ -254,7 +254,8 @@ export abstract class OneShotSource<
254
254
 
255
255
  dispose(): this {
256
256
  super.dispose();
257
- this._gainNode.disconnect();
257
+ this._gainNode.dispose();
258
+ this.onended = noOp;
258
259
  return this;
259
260
  }
260
261
  }
package/Tone/version.ts CHANGED
@@ -1 +1 @@
1
- export const version: string = "14.8.27";
1
+ export const version: string = "14.8.28";