tone 15.2.1 → 15.2.3

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 (135) hide show
  1. package/Tone/component/analysis/Analyser.ts +11 -11
  2. package/Tone/component/analysis/Follower.test.ts +38 -42
  3. package/Tone/component/analysis/MeterBase.ts +1 -1
  4. package/Tone/component/channel/Channel.test.ts +3 -4
  5. package/Tone/component/channel/Merge.test.ts +5 -6
  6. package/Tone/component/channel/MidSideSplit.test.ts +21 -25
  7. package/Tone/component/channel/Mono.test.ts +18 -20
  8. package/Tone/component/channel/PanVol.test.ts +3 -4
  9. package/Tone/component/channel/Panner.test.ts +28 -32
  10. package/Tone/component/channel/Recorder.ts +1 -1
  11. package/Tone/component/channel/Volume.test.ts +9 -12
  12. package/Tone/component/dynamics/Gate.test.ts +10 -14
  13. package/Tone/component/envelope/AmplitudeEnvelope.test.ts +7 -9
  14. package/Tone/component/envelope/Envelope.test.ts +347 -384
  15. package/Tone/component/envelope/Envelope.ts +1 -1
  16. package/Tone/component/filter/BiquadFilter.test.ts +5 -6
  17. package/Tone/component/filter/Convolver.test.ts +6 -9
  18. package/Tone/component/filter/FeedbackCombFilter.test.ts +14 -16
  19. package/Tone/component/filter/Filter.test.ts +5 -6
  20. package/Tone/component/filter/LowpassCombFilter.test.ts +15 -17
  21. package/Tone/component/filter/LowpassCombFilter.ts +1 -1
  22. package/Tone/core/clock/Clock.test.ts +18 -21
  23. package/Tone/core/clock/TickParam.ts +1 -1
  24. package/Tone/core/clock/TickSignal.test.ts +24 -27
  25. package/Tone/core/clock/TickSource.test.ts +1 -1
  26. package/Tone/core/clock/Transport.test.ts +133 -162
  27. package/Tone/core/clock/TransportEvent.test.ts +3 -4
  28. package/Tone/core/clock/TransportRepeatEvent.test.ts +6 -6
  29. package/Tone/core/context/Context.test.ts +8 -10
  30. package/Tone/core/context/Context.ts +1 -1
  31. package/Tone/core/context/Destination.test.ts +3 -4
  32. package/Tone/core/context/Offline.test.ts +23 -41
  33. package/Tone/core/context/OfflineContext.test.ts +20 -22
  34. package/Tone/core/context/Param.test.ts +33 -40
  35. package/Tone/core/context/ToneAudioBuffer.test.ts +4 -11
  36. package/Tone/core/context/ToneAudioBuffers.test.ts +10 -14
  37. package/Tone/core/context/ToneAudioBuffers.ts +2 -2
  38. package/Tone/core/type/Frequency.test.ts +6 -6
  39. package/Tone/core/type/Ticks.test.ts +1 -1
  40. package/Tone/core/type/Time.test.ts +2 -2
  41. package/Tone/core/type/TransportTime.test.ts +1 -1
  42. package/Tone/core/util/IntervalTimeline.test.ts +1 -1
  43. package/Tone/core/util/IntervalTimeline.ts +1 -1
  44. package/Tone/core/util/StateTimeline.test.ts +2 -2
  45. package/Tone/core/util/Timeline.test.ts +1 -1
  46. package/Tone/core/util/Timeline.ts +1 -1
  47. package/Tone/core/worklet/ToneAudioWorklet.ts +3 -1
  48. package/Tone/effect/AutoFilter.test.ts +10 -12
  49. package/Tone/effect/AutoPanner.test.ts +10 -12
  50. package/Tone/effect/AutoWah.ts +1 -1
  51. package/Tone/effect/Chorus.test.ts +10 -14
  52. package/Tone/effect/FrequencyShifter.test.ts +6 -7
  53. package/Tone/effect/FrequencyShifter.ts +1 -1
  54. package/Tone/effect/MidSideEffect.ts +1 -1
  55. package/Tone/effect/Reverb.test.ts +12 -15
  56. package/Tone/effect/StereoWidener.ts +1 -1
  57. package/Tone/effect/Tremolo.test.ts +10 -12
  58. package/Tone/effect/Vibrato.ts +1 -1
  59. package/Tone/event/Loop.test.ts +29 -36
  60. package/Tone/event/Part.test.ts +156 -184
  61. package/Tone/event/Part.ts +5 -5
  62. package/Tone/event/Pattern.test.ts +16 -20
  63. package/Tone/event/Sequence.test.ts +88 -103
  64. package/Tone/event/Sequence.ts +1 -1
  65. package/Tone/event/ToneEvent.test.ts +60 -70
  66. package/Tone/instrument/Instrument.ts +1 -1
  67. package/Tone/instrument/MonoSynth.test.ts +3 -4
  68. package/Tone/instrument/PolySynth.test.ts +62 -74
  69. package/Tone/instrument/PolySynth.ts +1 -1
  70. package/Tone/instrument/Sampler.test.ts +39 -48
  71. package/Tone/instrument/Synth.test.ts +41 -48
  72. package/Tone/signal/AudioToGain.test.ts +4 -5
  73. package/Tone/signal/Multiply.test.ts +1 -1
  74. package/Tone/signal/Negate.test.ts +2 -2
  75. package/Tone/signal/Signal.test.ts +120 -143
  76. package/Tone/signal/Signal.ts +1 -1
  77. package/Tone/signal/SyncedSignal.test.ts +108 -122
  78. package/Tone/signal/ToneConstantSource.test.ts +21 -25
  79. package/Tone/signal/WaveShaper.test.ts +5 -6
  80. package/Tone/source/Source.test.ts +43 -49
  81. package/Tone/source/UserMedia.test.ts +1 -2
  82. package/Tone/source/buffer/GrainPlayer.test.ts +29 -35
  83. package/Tone/source/buffer/Player.test.ts +162 -191
  84. package/Tone/source/buffer/Players.test.ts +44 -50
  85. package/Tone/source/buffer/Players.ts +1 -1
  86. package/Tone/source/buffer/ToneBufferSource.test.ts +176 -211
  87. package/Tone/source/oscillator/LFO.test.ts +49 -61
  88. package/Tone/source/oscillator/OmniOscillator.ts +0 -1
  89. package/Tone/source/oscillator/Oscillator.test.ts +24 -28
  90. package/Tone/source/oscillator/PulseOscillator.test.ts +36 -40
  91. package/Tone/source/oscillator/ToneOscillatorNode.test.ts +25 -29
  92. package/Tone/version.ts +1 -1
  93. package/build/Tone.js +1 -1
  94. package/build/Tone.js.map +1 -1
  95. package/build/esm/component/analysis/Analyser.d.ts +1 -1
  96. package/build/esm/component/analysis/Analyser.js +11 -11
  97. package/build/esm/component/analysis/MeterBase.d.ts +1 -1
  98. package/build/esm/component/channel/Recorder.js.map +1 -1
  99. package/build/esm/component/envelope/Envelope.d.ts +1 -1
  100. package/build/esm/component/filter/LowpassCombFilter.d.ts +1 -1
  101. package/build/esm/core/clock/TickParam.js +1 -1
  102. package/build/esm/core/clock/TickParam.js.map +1 -1
  103. package/build/esm/core/context/Context.d.ts +1 -1
  104. package/build/esm/core/context/Context.js +1 -1
  105. package/build/esm/core/context/ToneAudioBuffers.d.ts +2 -2
  106. package/build/esm/core/context/ToneAudioBuffers.js +2 -2
  107. package/build/esm/core/util/IntervalTimeline.d.ts +1 -1
  108. package/build/esm/core/util/IntervalTimeline.js +1 -1
  109. package/build/esm/core/util/Timeline.d.ts +1 -1
  110. package/build/esm/core/util/Timeline.js +1 -1
  111. package/build/esm/core/worklet/ToneAudioWorklet.js.map +1 -1
  112. package/build/esm/effect/AutoWah.d.ts +1 -1
  113. package/build/esm/effect/FrequencyShifter.d.ts +1 -1
  114. package/build/esm/effect/FrequencyShifter.js +1 -1
  115. package/build/esm/effect/MidSideEffect.d.ts +1 -1
  116. package/build/esm/effect/MidSideEffect.js +1 -1
  117. package/build/esm/effect/StereoWidener.d.ts +1 -1
  118. package/build/esm/effect/StereoWidener.js +1 -1
  119. package/build/esm/effect/Vibrato.js +1 -1
  120. package/build/esm/effect/Vibrato.js.map +1 -1
  121. package/build/esm/event/Part.d.ts +2 -2
  122. package/build/esm/event/Part.js +5 -5
  123. package/build/esm/event/Part.js.map +1 -1
  124. package/build/esm/event/Sequence.d.ts +1 -1
  125. package/build/esm/instrument/Instrument.d.ts +1 -1
  126. package/build/esm/instrument/PolySynth.d.ts +1 -1
  127. package/build/esm/instrument/PolySynth.js +1 -1
  128. package/build/esm/signal/Signal.d.ts +1 -1
  129. package/build/esm/signal/Signal.js +1 -1
  130. package/build/esm/source/buffer/Players.d.ts +1 -1
  131. package/build/esm/source/buffer/Players.js +1 -1
  132. package/build/esm/source/oscillator/OmniOscillator.js +0 -1
  133. package/build/esm/source/oscillator/OmniOscillator.js.map +1 -1
  134. package/build/esm/version.js +1 -1
  135. package/package.json +3 -1
@@ -116,7 +116,7 @@ export class Envelope extends ToneAudioNode<EnvelopeOptions> {
116
116
 
117
117
  /**
118
118
  * After triggerRelease is called, the envelope's
119
- * value will fall to it's miminum value over the
119
+ * value will fall to its minimum value over the
120
120
  * duration of the release time.
121
121
  * ```
122
122
  * /\
@@ -89,16 +89,15 @@ describe("BiquadFilter", () => {
89
89
  filter.dispose();
90
90
  });
91
91
 
92
- it("attenuates the incoming signal", () => {
93
- return Offline(() => {
92
+ it("attenuates the incoming signal", async () => {
93
+ const buffer = await Offline(() => {
94
94
  const filter = new BiquadFilter(700, "lowpass").toDestination();
95
95
  filter.Q.value = 0;
96
96
  const osc = new Oscillator(880).connect(filter);
97
97
  osc.start(0);
98
- }, 0.2).then((buffer) => {
99
- expect(buffer.getRmsAtTime(0.05)).to.be.within(0.37, 0.53);
100
- expect(buffer.getRmsAtTime(0.1)).to.be.within(0.37, 0.53);
101
- });
98
+ }, 0.2);
99
+ expect(buffer.getRmsAtTime(0.05)).to.be.within(0.37, 0.53);
100
+ expect(buffer.getRmsAtTime(0.1)).to.be.within(0.37, 0.53);
102
101
  });
103
102
  });
104
103
  });
@@ -41,19 +41,16 @@ describe("Convolver", () => {
41
41
  });
42
42
  });
43
43
 
44
- it("load returns a Promise", (done) => {
44
+ it("load returns a Promise", async () => {
45
45
  const convolver = new Convolver();
46
- convolver.load(testFile).then(() => {
47
- convolver.dispose();
48
- done();
49
- });
46
+ await convolver.load(testFile);
47
+ convolver.dispose();
50
48
  });
51
49
 
52
- it("load invokes the second callback", () => {
50
+ it("load invokes the second callback", async () => {
53
51
  const convolver = new Convolver();
54
- return convolver.load(testFile).then(() => {
55
- convolver.dispose();
56
- });
52
+ await convolver.load(testFile);
53
+ convolver.dispose();
57
54
  });
58
55
 
59
56
  it("can assign the buffer twice", () => {
@@ -42,24 +42,23 @@ describe("FeedbackCombFilter", () => {
42
42
  });
43
43
  });
44
44
 
45
- it("can delay by the delayTime", () => {
46
- return Offline(() => {
45
+ it("can delay by the delayTime", async () => {
46
+ const buffer = await Offline(() => {
47
47
  const fbcf = new FeedbackCombFilter({
48
48
  delayTime: 0.1,
49
49
  resonance: 0,
50
50
  }).toDestination();
51
51
  const sig = new Signal(0).connect(fbcf);
52
52
  sig.setValueAtTime(1, 0);
53
- }, 0.2).then((buffer) => {
54
- expect(buffer.getValueAtTime(0)).to.equal(0);
55
- expect(buffer.getValueAtTime(0.999)).to.equal(0);
56
- expect(buffer.getValueAtTime(0.101)).to.equal(1);
57
- expect(buffer.getValueAtTime(0.15)).to.equal(1);
58
- });
53
+ }, 0.2);
54
+ expect(buffer.getValueAtTime(0)).to.equal(0);
55
+ expect(buffer.getValueAtTime(0.999)).to.equal(0);
56
+ expect(buffer.getValueAtTime(0.101)).to.equal(1);
57
+ expect(buffer.getValueAtTime(0.15)).to.equal(1);
59
58
  });
60
59
 
61
- it("can delay with feedback", () => {
62
- return Offline(() => {
60
+ it("can delay with feedback", async () => {
61
+ const buffer = await Offline(() => {
63
62
  const fbcf = new FeedbackCombFilter({
64
63
  delayTime: 0.1,
65
64
  resonance: 0.5,
@@ -67,12 +66,11 @@ describe("FeedbackCombFilter", () => {
67
66
  const sig = new Signal(0).connect(fbcf);
68
67
  sig.setValueAtTime(1, 0);
69
68
  sig.setValueAtTime(0, 0.1);
70
- }, 0.4).then((buffer) => {
71
- expect(buffer.getValueAtTime(0)).to.equal(0);
72
- expect(buffer.getValueAtTime(0.101)).to.equal(1);
73
- expect(buffer.getValueAtTime(0.201)).to.equal(0.5);
74
- expect(buffer.getValueAtTime(0.301)).to.equal(0.25);
75
- });
69
+ }, 0.4);
70
+ expect(buffer.getValueAtTime(0)).to.equal(0);
71
+ expect(buffer.getValueAtTime(0.101)).to.equal(1);
72
+ expect(buffer.getValueAtTime(0.201)).to.equal(0.5);
73
+ expect(buffer.getValueAtTime(0.301)).to.equal(0.25);
76
74
  });
77
75
  });
78
76
 
@@ -110,16 +110,15 @@ describe("Filter", () => {
110
110
  filter.dispose();
111
111
  });
112
112
 
113
- it("attenuates the incoming signal", () => {
114
- return Offline(() => {
113
+ it("attenuates the incoming signal", async () => {
114
+ const buffer = await Offline(() => {
115
115
  const filter = new Filter(700, "lowpass").toDestination();
116
116
  filter.Q.value = 0;
117
117
  const osc = new Oscillator(880).connect(filter);
118
118
  osc.start(0);
119
- }, 0.2).then((buffer) => {
120
- expect(buffer.getRmsAtTime(0.05)).to.be.within(0.37, 0.53);
121
- expect(buffer.getRmsAtTime(0.1)).to.be.within(0.37, 0.53);
122
- });
119
+ }, 0.2);
120
+ expect(buffer.getRmsAtTime(0.05)).to.be.within(0.37, 0.53);
121
+ expect(buffer.getRmsAtTime(0.1)).to.be.within(0.37, 0.53);
123
122
  });
124
123
  });
125
124
  });
@@ -41,8 +41,8 @@ describe("LowpassCombFilter", () => {
41
41
  });
42
42
  });
43
43
 
44
- it("produces a decay signal at high resonance", () => {
45
- return Offline(() => {
44
+ it("produces a decay signal at high resonance", async () => {
45
+ const buffer = await Offline(() => {
46
46
  const lpcf = new LowpassCombFilter(
47
47
  0.01,
48
48
  0.9,
@@ -51,27 +51,25 @@ describe("LowpassCombFilter", () => {
51
51
  const burst = new Oscillator(440).connect(lpcf);
52
52
  burst.start(0);
53
53
  burst.stop(0.1);
54
- }, 0.8).then((buffer) => {
55
- expect(buffer.getRmsAtTime(0.05)).to.be.within(0.2, 0.6);
56
- expect(buffer.getRmsAtTime(0.1)).to.be.within(0.2, 0.6);
57
- expect(buffer.getRmsAtTime(0.15)).to.be.within(0.15, 0.4);
58
- expect(buffer.getRmsAtTime(0.3)).to.be.within(0.01, 0.15);
59
- expect(buffer.getRmsAtTime(0.7)).to.be.below(0.01);
60
- });
54
+ }, 0.8);
55
+ expect(buffer.getRmsAtTime(0.05)).to.be.within(0.2, 0.6);
56
+ expect(buffer.getRmsAtTime(0.1)).to.be.within(0.2, 0.6);
57
+ expect(buffer.getRmsAtTime(0.15)).to.be.within(0.15, 0.4);
58
+ expect(buffer.getRmsAtTime(0.3)).to.be.within(0.01, 0.15);
59
+ expect(buffer.getRmsAtTime(0.7)).to.be.below(0.01);
61
60
  });
62
61
 
63
- it("produces a decay signal at moderate resonance", () => {
64
- return Offline(() => {
62
+ it("produces a decay signal at moderate resonance", async () => {
63
+ const buffer = await Offline(() => {
65
64
  const lpcf = new LowpassCombFilter(0.05, 0.5).toDestination();
66
65
  const burst = new Oscillator(440).connect(lpcf);
67
66
  burst.start(0);
68
67
  burst.stop(0.1);
69
- }, 0.6).then((buffer) => {
70
- expect(buffer.getRmsAtTime(0.05)).to.be.closeTo(0.7, 0.1);
71
- expect(buffer.getRmsAtTime(0.1)).to.be.within(0.7, 1.1);
72
- expect(buffer.getRmsAtTime(0.2)).to.be.closeTo(0.25, 0.1);
73
- expect(buffer.getRmsAtTime(0.4)).to.be.closeTo(0.015, 0.01);
74
- });
68
+ }, 0.6);
69
+ expect(buffer.getRmsAtTime(0.05)).to.be.closeTo(0.7, 0.1);
70
+ expect(buffer.getRmsAtTime(0.1)).to.be.within(0.7, 1.1);
71
+ expect(buffer.getRmsAtTime(0.2)).to.be.closeTo(0.25, 0.1);
72
+ expect(buffer.getRmsAtTime(0.4)).to.be.closeTo(0.015, 0.01);
75
73
  });
76
74
  });
77
75
  });
@@ -51,7 +51,7 @@ export class LowpassCombFilter extends ToneAudioNode<LowpassCombFilterOptions> {
51
51
  /**
52
52
  * @param delayTime The delay time of the comb filter
53
53
  * @param resonance The resonance (feedback) of the comb filter
54
- * @param dampening The cutoff of the lowpass filter dampens the signal as it is fedback.
54
+ * @param dampening The cutoff of the lowpass filter dampens the signal as it is fed back.
55
55
  */
56
56
  constructor(
57
57
  delayTime?: Time,
@@ -162,41 +162,38 @@ describe("Clock", () => {
162
162
  clock.start(startTime);
163
163
  });
164
164
 
165
- it("can be scheduled to start in the future", () => {
166
- let invokations = 0;
167
- return Offline(() => {
165
+ it("can be scheduled to start in the future", async () => {
166
+ let invocations = 0;
167
+ await Offline(() => {
168
168
  const clock = new Clock((time) => {
169
- invokations++;
169
+ invocations++;
170
170
  }, 2).start(0.1);
171
- }, 0.4).then(() => {
172
- expect(invokations).to.equal(1);
173
- });
171
+ }, 0.4);
172
+ expect(invocations).to.equal(1);
174
173
  });
175
174
 
176
- it("invokes the right number of callbacks given the duration", () => {
177
- let invokations = 0;
178
- return Offline(() => {
175
+ it("invokes the right number of callbacks given the duration", async () => {
176
+ let invocations = 0;
177
+ await Offline(() => {
179
178
  new Clock((time) => {
180
- invokations++;
179
+ invocations++;
181
180
  }, 10)
182
181
  .start(0)
183
182
  .stop(0.45);
184
- }, 0.6).then(() => {
185
- expect(invokations).to.equal(5);
186
- });
183
+ }, 0.6);
184
+ expect(invocations).to.equal(5);
187
185
  });
188
186
 
189
- it("can schedule the frequency of the clock", () => {
190
- let invokations = 0;
191
- return Offline(() => {
187
+ it("can schedule the frequency of the clock", async () => {
188
+ let invocations = 0;
189
+ await Offline(() => {
192
190
  const clock = new Clock((time, ticks) => {
193
- invokations++;
191
+ invocations++;
194
192
  }, 2);
195
193
  clock.start(0).stop(1.01);
196
194
  clock.frequency.setValueAtTime(4, 0.5);
197
- }, 2).then(() => {
198
- expect(invokations).to.equal(4);
199
- });
195
+ }, 2);
196
+ expect(invocations).to.equal(4);
200
197
  });
201
198
  });
202
199
 
@@ -128,7 +128,7 @@ export class TickParam<
128
128
  }
129
129
 
130
130
  exponentialRampToValueAtTime(value: UnitMap[TypeName], time: Time): this {
131
- // aproximate it with multiple linear ramps
131
+ // approximate it with multiple linear ramps
132
132
  time = this.toSeconds(time);
133
133
  const computedVal = this._fromType(value);
134
134
 
@@ -152,12 +152,12 @@ describe("TickSignal", () => {
152
152
  expect(tickSignal0.getTimeOfTick(3)).to.be.closeTo(3, 0.01);
153
153
  tickSignal0.dispose();
154
154
 
155
- const tickSigna1 = new TickSignal(2);
156
- expect(tickSigna1.getTimeOfTick(0)).to.be.closeTo(0, 0.01);
157
- expect(tickSigna1.getTimeOfTick(1)).to.be.closeTo(0.5, 0.01);
158
- expect(tickSigna1.getTimeOfTick(2)).to.be.closeTo(1, 0.01);
159
- expect(tickSigna1.getTimeOfTick(3)).to.be.closeTo(1.5, 0.01);
160
- tickSigna1.dispose();
155
+ const tickSignal = new TickSignal(2);
156
+ expect(tickSignal.getTimeOfTick(0)).to.be.closeTo(0, 0.01);
157
+ expect(tickSignal.getTimeOfTick(1)).to.be.closeTo(0.5, 0.01);
158
+ expect(tickSignal.getTimeOfTick(2)).to.be.closeTo(1, 0.01);
159
+ expect(tickSignal.getTimeOfTick(3)).to.be.closeTo(1.5, 0.01);
160
+ tickSignal.dispose();
161
161
  });
162
162
 
163
163
  it("computes the time of a given tick when setValueAtTime is scheduled", () => {
@@ -292,44 +292,41 @@ describe("TickSignal", () => {
292
292
  });
293
293
  });
294
294
 
295
- it("outputs a signal", () => {
296
- return Offline((context) => {
295
+ it("outputs a signal", async () => {
296
+ const buffer = await Offline((context) => {
297
297
  const sched = new TickSignal(1).connect(context.destination);
298
298
  sched.linearRampTo(3, 1, 0);
299
- }, 1.01).then((buffer) => {
300
- expect(buffer.getValueAtTime(0)).to.be.closeTo(1, 0.01);
301
- expect(buffer.getValueAtTime(0.5)).to.be.closeTo(2, 0.01);
302
- expect(buffer.getValueAtTime(1)).to.be.closeTo(3, 0.01);
303
- });
299
+ }, 1.01);
300
+ expect(buffer.getValueAtTime(0)).to.be.closeTo(1, 0.01);
301
+ expect(buffer.getValueAtTime(0.5)).to.be.closeTo(2, 0.01);
302
+ expect(buffer.getValueAtTime(1)).to.be.closeTo(3, 0.01);
304
303
  });
305
304
 
306
- it("outputs a signal with bpm units", () => {
307
- return Offline((context) => {
305
+ it("outputs a signal with bpm units", async () => {
306
+ const buffer = await Offline((context) => {
308
307
  const sched = new TickSignal({
309
308
  units: "bpm",
310
309
  value: 120,
311
310
  }).connect(context.destination);
312
311
  sched.linearRampTo(60, 1, 0);
313
- }, 1.01).then((buffer) => {
314
- expect(buffer.getValueAtTime(0)).to.be.closeTo(2, 0.01);
315
- expect(buffer.getValueAtTime(0.5)).to.be.closeTo(1.5, 0.01);
316
- expect(buffer.getValueAtTime(1)).to.be.closeTo(1, 0.01);
317
- });
312
+ }, 1.01);
313
+ expect(buffer.getValueAtTime(0)).to.be.closeTo(2, 0.01);
314
+ expect(buffer.getValueAtTime(0.5)).to.be.closeTo(1.5, 0.01);
315
+ expect(buffer.getValueAtTime(1)).to.be.closeTo(1, 0.01);
318
316
  });
319
317
 
320
- it("outputs a signal with bpm units and a multiplier", () => {
321
- return Offline((context) => {
318
+ it("outputs a signal with bpm units and a multiplier", async () => {
319
+ const buffer = await Offline((context) => {
322
320
  const sched = new TickSignal({
323
321
  multiplier: 10,
324
322
  units: "bpm",
325
323
  value: 60,
326
324
  }).connect(context.destination);
327
325
  sched.linearRampTo(120, 1, 0);
328
- }, 1.01).then((buffer) => {
329
- expect(buffer.getValueAtTime(0)).to.be.closeTo(10, 0.01);
330
- expect(buffer.getValueAtTime(0.5)).to.be.closeTo(15, 0.01);
331
- expect(buffer.getValueAtTime(1)).to.be.closeTo(20, 0.01);
332
- });
326
+ }, 1.01);
327
+ expect(buffer.getValueAtTime(0)).to.be.closeTo(10, 0.01);
328
+ expect(buffer.getValueAtTime(0.5)).to.be.closeTo(15, 0.01);
329
+ expect(buffer.getValueAtTime(1)).to.be.closeTo(20, 0.01);
333
330
  });
334
331
 
335
332
  context("Ticks <-> Time", () => {
@@ -149,7 +149,7 @@ describe("TickSource", () => {
149
149
  source.dispose();
150
150
  });
151
151
 
152
- it("can invoke stop multiple times, takes the last invokation", () => {
152
+ it("can invoke stop multiple times, takes the last invocation", () => {
153
153
  const source = new TickSource(1);
154
154
  source.start(0).stop(3).stop(2).stop(4);
155
155
  expect(source.getTicksAtTime(0)).to.be.closeTo(0, 0.01);