tone 15.2.0 → 15.2.2

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 (69) hide show
  1. package/Tone/component/analysis/Follower.test.ts +38 -42
  2. package/Tone/component/channel/Channel.test.ts +3 -4
  3. package/Tone/component/channel/Merge.test.ts +5 -6
  4. package/Tone/component/channel/MidSideSplit.test.ts +21 -25
  5. package/Tone/component/channel/Mono.test.ts +18 -20
  6. package/Tone/component/channel/PanVol.test.ts +3 -4
  7. package/Tone/component/channel/Panner.test.ts +28 -32
  8. package/Tone/component/channel/Recorder.ts +1 -1
  9. package/Tone/component/channel/Volume.test.ts +9 -12
  10. package/Tone/component/dynamics/Gate.test.ts +10 -14
  11. package/Tone/component/envelope/AmplitudeEnvelope.test.ts +7 -9
  12. package/Tone/component/envelope/Envelope.test.ts +347 -384
  13. package/Tone/component/filter/BiquadFilter.test.ts +5 -6
  14. package/Tone/component/filter/Convolver.test.ts +6 -9
  15. package/Tone/component/filter/FeedbackCombFilter.test.ts +14 -16
  16. package/Tone/component/filter/Filter.test.ts +5 -6
  17. package/Tone/component/filter/LowpassCombFilter.test.ts +15 -17
  18. package/Tone/core/clock/Clock.test.ts +12 -15
  19. package/Tone/core/clock/TickSignal.test.ts +18 -21
  20. package/Tone/core/clock/Transport.test.ts +133 -162
  21. package/Tone/core/clock/TransportEvent.test.ts +3 -4
  22. package/Tone/core/clock/TransportRepeatEvent.test.ts +6 -6
  23. package/Tone/core/context/Context.test.ts +8 -10
  24. package/Tone/core/context/Context.ts +8 -4
  25. package/Tone/core/context/Destination.test.ts +3 -4
  26. package/Tone/core/context/Offline.test.ts +23 -41
  27. package/Tone/core/context/OfflineContext.test.ts +20 -22
  28. package/Tone/core/context/Param.test.ts +33 -40
  29. package/Tone/core/context/ToneAudioBuffer.test.ts +3 -10
  30. package/Tone/core/context/ToneAudioBuffers.test.ts +9 -13
  31. package/Tone/core/worklet/ToneAudioWorklet.ts +3 -1
  32. package/Tone/effect/AutoFilter.test.ts +10 -12
  33. package/Tone/effect/AutoPanner.test.ts +10 -12
  34. package/Tone/effect/Chorus.test.ts +10 -14
  35. package/Tone/effect/FrequencyShifter.test.ts +6 -7
  36. package/Tone/effect/Reverb.test.ts +12 -15
  37. package/Tone/effect/Tremolo.test.ts +10 -12
  38. package/Tone/event/Loop.test.ts +29 -36
  39. package/Tone/event/Part.test.ts +152 -180
  40. package/Tone/event/Pattern.test.ts +16 -20
  41. package/Tone/event/Sequence.test.ts +86 -101
  42. package/Tone/event/ToneEvent.test.ts +60 -70
  43. package/Tone/instrument/MonoSynth.test.ts +3 -4
  44. package/Tone/instrument/PolySynth.test.ts +62 -74
  45. package/Tone/instrument/Sampler.test.ts +39 -48
  46. package/Tone/instrument/Synth.test.ts +40 -47
  47. package/Tone/signal/AudioToGain.test.ts +4 -5
  48. package/Tone/signal/Signal.test.ts +120 -143
  49. package/Tone/signal/SyncedSignal.test.ts +108 -122
  50. package/Tone/signal/ToneConstantSource.test.ts +21 -25
  51. package/Tone/signal/WaveShaper.test.ts +5 -6
  52. package/Tone/source/Source.test.ts +42 -48
  53. package/Tone/source/buffer/GrainPlayer.test.ts +29 -35
  54. package/Tone/source/buffer/Player.test.ts +162 -191
  55. package/Tone/source/buffer/Players.test.ts +44 -50
  56. package/Tone/source/buffer/ToneBufferSource.test.ts +176 -211
  57. package/Tone/source/oscillator/LFO.test.ts +49 -61
  58. package/Tone/source/oscillator/Oscillator.test.ts +24 -28
  59. package/Tone/source/oscillator/PulseOscillator.test.ts +36 -40
  60. package/Tone/source/oscillator/ToneOscillatorNode.test.ts +25 -29
  61. package/Tone/version.ts +1 -1
  62. package/build/Tone.js +1 -1
  63. package/build/Tone.js.map +1 -1
  64. package/build/esm/component/channel/Recorder.js.map +1 -1
  65. package/build/esm/core/context/Context.js +6 -3
  66. package/build/esm/core/context/Context.js.map +1 -1
  67. package/build/esm/core/worklet/ToneAudioWorklet.js.map +1 -1
  68. package/build/esm/version.js +1 -1
  69. package/package.json +1 -1
@@ -28,74 +28,70 @@ describe("Follower", () => {
28
28
  follower.dispose();
29
29
  });
30
30
 
31
- it("smooths the incoming signal at 0.1", () => {
32
- return Offline(() => {
31
+ it("smooths the incoming signal at 0.1", async () => {
32
+ const buffer = await Offline(() => {
33
33
  const foll = new Follower(0.1).toDestination();
34
34
  const sig = new Signal(0);
35
35
  sig.connect(foll);
36
36
  sig.setValueAtTime(1, 0.1);
37
37
  sig.setValueAtTime(0, 0.3);
38
- }, 0.41).then((buffer) => {
39
- expect(buffer.getValueAtTime(0)).to.be.closeTo(0, 0.01);
40
- expect(buffer.getValueAtTime(0.1)).to.be.closeTo(0.0, 0.01);
41
- expect(buffer.getValueAtTime(0.15)).to.be.closeTo(0.95, 0.05);
42
- expect(buffer.getValueAtTime(0.2)).to.be.closeTo(1, 0.01);
43
- expect(buffer.getValueAtTime(0.3)).to.be.closeTo(1, 0.01);
44
- expect(buffer.getValueAtTime(0.35)).to.be.closeTo(0.05, 0.05);
45
- expect(buffer.getValueAtTime(0.4)).to.be.closeTo(0, 0.01);
46
- });
38
+ }, 0.41);
39
+ expect(buffer.getValueAtTime(0)).to.be.closeTo(0, 0.01);
40
+ expect(buffer.getValueAtTime(0.1)).to.be.closeTo(0.0, 0.01);
41
+ expect(buffer.getValueAtTime(0.15)).to.be.closeTo(0.95, 0.05);
42
+ expect(buffer.getValueAtTime(0.2)).to.be.closeTo(1, 0.01);
43
+ expect(buffer.getValueAtTime(0.3)).to.be.closeTo(1, 0.01);
44
+ expect(buffer.getValueAtTime(0.35)).to.be.closeTo(0.05, 0.05);
45
+ expect(buffer.getValueAtTime(0.4)).to.be.closeTo(0, 0.01);
47
46
  });
48
47
 
49
- it("smooths the incoming signal at 0.05", () => {
50
- return Offline(() => {
48
+ it("smooths the incoming signal at 0.05", async () => {
49
+ const buffer = await Offline(() => {
51
50
  const foll = new Follower(0.05).toDestination();
52
51
  const sig = new Signal(0);
53
52
  sig.connect(foll);
54
53
  sig.setValueAtTime(1, 0.1);
55
54
  sig.setValueAtTime(0, 0.3);
56
- }, 0.41).then((buffer) => {
57
- expect(buffer.getValueAtTime(0)).to.be.closeTo(0, 0.01);
58
- expect(buffer.getValueAtTime(0.1)).to.be.closeTo(0.0, 0.01);
59
- expect(buffer.getValueAtTime(0.125)).to.be.closeTo(0.95, 0.05);
60
- expect(buffer.getValueAtTime(0.15)).to.be.closeTo(1, 0.01);
61
- expect(buffer.getValueAtTime(0.3)).to.be.closeTo(1, 0.01);
62
- expect(buffer.getValueAtTime(0.325)).to.be.closeTo(0.05, 0.05);
63
- expect(buffer.getValueAtTime(0.35)).to.be.closeTo(0, 0.01);
64
- });
55
+ }, 0.41);
56
+ expect(buffer.getValueAtTime(0)).to.be.closeTo(0, 0.01);
57
+ expect(buffer.getValueAtTime(0.1)).to.be.closeTo(0.0, 0.01);
58
+ expect(buffer.getValueAtTime(0.125)).to.be.closeTo(0.95, 0.05);
59
+ expect(buffer.getValueAtTime(0.15)).to.be.closeTo(1, 0.01);
60
+ expect(buffer.getValueAtTime(0.3)).to.be.closeTo(1, 0.01);
61
+ expect(buffer.getValueAtTime(0.325)).to.be.closeTo(0.05, 0.05);
62
+ expect(buffer.getValueAtTime(0.35)).to.be.closeTo(0, 0.01);
65
63
  });
66
64
 
67
- it("smooths the incoming signal at 0.2", () => {
68
- return Offline(() => {
65
+ it("smooths the incoming signal at 0.2", async () => {
66
+ const buffer = await Offline(() => {
69
67
  const foll = new Follower(0.2).toDestination();
70
68
  const sig = new Signal(0);
71
69
  sig.connect(foll);
72
70
  sig.setValueAtTime(1, 0.1);
73
71
  sig.setValueAtTime(0, 0.3);
74
- }, 0.51).then((buffer) => {
75
- expect(buffer.getValueAtTime(0)).to.be.closeTo(0, 0.01);
76
- expect(buffer.getValueAtTime(0.1)).to.be.closeTo(0.0, 0.01);
77
- expect(buffer.getValueAtTime(0.2)).to.be.closeTo(0.95, 0.05);
78
- expect(buffer.getValueAtTime(0.3)).to.be.closeTo(1, 0.01);
79
- expect(buffer.getValueAtTime(0.4)).to.be.closeTo(0.05, 0.05);
80
- expect(buffer.getValueAtTime(0.5)).to.be.closeTo(0, 0.01);
81
- });
72
+ }, 0.51);
73
+ expect(buffer.getValueAtTime(0)).to.be.closeTo(0, 0.01);
74
+ expect(buffer.getValueAtTime(0.1)).to.be.closeTo(0.0, 0.01);
75
+ expect(buffer.getValueAtTime(0.2)).to.be.closeTo(0.95, 0.05);
76
+ expect(buffer.getValueAtTime(0.3)).to.be.closeTo(1, 0.01);
77
+ expect(buffer.getValueAtTime(0.4)).to.be.closeTo(0.05, 0.05);
78
+ expect(buffer.getValueAtTime(0.5)).to.be.closeTo(0, 0.01);
82
79
  });
83
80
 
84
- it("smooths the incoming signal at 0.5", () => {
85
- return Offline(() => {
81
+ it("smooths the incoming signal at 0.5", async () => {
82
+ const buffer = await Offline(() => {
86
83
  const foll = new Follower(0.5).toDestination();
87
84
  const sig = new Signal(0);
88
85
  sig.connect(foll);
89
86
  sig.setValueAtTime(1, 0.1);
90
87
  sig.setValueAtTime(0, 0.6);
91
- }, 1.11).then((buffer) => {
92
- expect(buffer.getValueAtTime(0)).to.be.closeTo(0, 0.01);
93
- expect(buffer.getValueAtTime(0.1)).to.be.closeTo(0.0, 0.01);
94
- expect(buffer.getValueAtTime(0.35)).to.be.closeTo(0.95, 0.05);
95
- expect(buffer.getValueAtTime(0.6)).to.be.closeTo(1, 0.01);
96
- expect(buffer.getValueAtTime(0.85)).to.be.closeTo(0.05, 0.05);
97
- expect(buffer.getValueAtTime(1.1)).to.be.closeTo(0, 0.01);
98
- });
88
+ }, 1.11);
89
+ expect(buffer.getValueAtTime(0)).to.be.closeTo(0, 0.01);
90
+ expect(buffer.getValueAtTime(0.1)).to.be.closeTo(0.0, 0.01);
91
+ expect(buffer.getValueAtTime(0.35)).to.be.closeTo(0.95, 0.05);
92
+ expect(buffer.getValueAtTime(0.6)).to.be.closeTo(1, 0.01);
93
+ expect(buffer.getValueAtTime(0.85)).to.be.closeTo(0.05, 0.05);
94
+ expect(buffer.getValueAtTime(1.1)).to.be.closeTo(0, 0.01);
99
95
  });
100
96
 
101
97
  it("passes the incoming signal through", () => {
@@ -37,14 +37,13 @@ describe("Channel", () => {
37
37
  });
38
38
  });
39
39
 
40
- it("can mute the input", () => {
41
- return Offline(() => {
40
+ it("can mute the input", async () => {
41
+ const buffer = await Offline(() => {
42
42
  const channel = new Channel(0).toDestination();
43
43
  new Signal(1).connect(channel);
44
44
  channel.mute = true;
45
- }).then((buffer) => {
46
- expect(buffer.isSilent()).to.be.true;
47
45
  });
46
+ expect(buffer.isSilent()).to.be.true;
48
47
  });
49
48
 
50
49
  it("reports itself as muted when either muted or another channel is soloed", () => {
@@ -40,8 +40,8 @@ describe("Merge", () => {
40
40
  });
41
41
  });
42
42
 
43
- it("merge two signal into one stereo signal", () => {
44
- return Offline(
43
+ it("merge two signal into one stereo signal", async () => {
44
+ const buffer = await Offline(
45
45
  () => {
46
46
  const sigL = new Signal(1);
47
47
  const sigR = new Signal(2);
@@ -52,10 +52,9 @@ describe("Merge", () => {
52
52
  },
53
53
  0.1,
54
54
  2
55
- ).then((buffer) => {
56
- expect(buffer.toArray()[0][0]).to.be.closeTo(1, 0.001);
57
- expect(buffer.toArray()[1][0]).to.be.closeTo(2, 0.001);
58
- });
55
+ );
56
+ expect(buffer.toArray()[0][0]).to.be.closeTo(1, 0.001);
57
+ expect(buffer.toArray()[1][0]).to.be.closeTo(2, 0.001);
59
58
  });
60
59
  });
61
60
  });
@@ -19,47 +19,44 @@ describe("MidSideSplit", () => {
19
19
  split.dispose();
20
20
  });
21
21
 
22
- it("mid is if both L and R are the same", () => {
23
- return Offline(() => {
22
+ it("mid is if both L and R are the same", async () => {
23
+ const buffer = await Offline(() => {
24
24
  const split = new MidSideSplit();
25
25
  split.mid.toDestination();
26
26
  const merge = new Merge().connect(split);
27
27
  new Signal(0.5).connect(merge, 0, 0);
28
28
  new Signal(0.5).connect(merge, 0, 1);
29
- }).then((buffer) => {
30
- expect(buffer.min()).to.be.closeTo(0.707, 0.01);
31
- expect(buffer.max()).to.be.closeTo(0.707, 0.01);
32
29
  });
30
+ expect(buffer.min()).to.be.closeTo(0.707, 0.01);
31
+ expect(buffer.max()).to.be.closeTo(0.707, 0.01);
33
32
  });
34
33
 
35
- it("side is 0 if both L and R are the same", () => {
36
- return Offline(() => {
34
+ it("side is 0 if both L and R are the same", async () => {
35
+ const buffer = await Offline(() => {
37
36
  const split = new MidSideSplit();
38
37
  split.side.toDestination();
39
38
  const merge = new Merge().connect(split);
40
39
  new Signal(0.5).connect(merge, 0, 0);
41
40
  new Signal(0.5).connect(merge, 0, 1);
42
- }).then((buffer) => {
43
- expect(buffer.min()).to.be.closeTo(0, 0.01);
44
- expect(buffer.max()).to.be.closeTo(0, 0.01);
45
41
  });
42
+ expect(buffer.min()).to.be.closeTo(0, 0.01);
43
+ expect(buffer.max()).to.be.closeTo(0, 0.01);
46
44
  });
47
45
 
48
- it("mid is 0 if both L and R opposites", () => {
49
- return Offline(() => {
46
+ it("mid is 0 if both L and R opposites", async () => {
47
+ const buffer = await Offline(() => {
50
48
  const split = new MidSideSplit();
51
49
  split.mid.toDestination();
52
50
  const merge = new Merge().connect(split);
53
51
  new Signal(-1).connect(merge, 0, 0);
54
52
  new Signal(1).connect(merge, 0, 1);
55
- }).then((buffer) => {
56
- expect(buffer.min()).to.be.closeTo(0, 0.01);
57
- expect(buffer.max()).to.be.closeTo(0, 0.01);
58
53
  });
54
+ expect(buffer.min()).to.be.closeTo(0, 0.01);
55
+ expect(buffer.max()).to.be.closeTo(0, 0.01);
59
56
  });
60
57
 
61
- it("can decompose and reconstruct a signal", () => {
62
- return Offline(
58
+ it("can decompose and reconstruct a signal", async () => {
59
+ const buffer = await Offline(
63
60
  () => {
64
61
  const midSideMerge = new MidSideMerge().toDestination();
65
62
  const split = new MidSideSplit();
@@ -71,14 +68,13 @@ describe("MidSideSplit", () => {
71
68
  },
72
69
  0.1,
73
70
  2
74
- ).then((buffer) => {
75
- buffer
76
- .toArray()[0]
77
- .forEach((l) => expect(l).to.be.closeTo(0.2, 0.01));
78
- buffer
79
- .toArray()[1]
80
- .forEach((r) => expect(r).to.be.closeTo(0.4, 0.01));
81
- });
71
+ );
72
+ buffer
73
+ .toArray()[0]
74
+ .forEach((l) => expect(l).to.be.closeTo(0.2, 0.01));
75
+ buffer
76
+ .toArray()[1]
77
+ .forEach((r) => expect(r).to.be.closeTo(0.4, 0.01));
82
78
  });
83
79
  });
84
80
  });
@@ -9,40 +9,38 @@ describe("Mono", () => {
9
9
  BasicTests(Mono);
10
10
 
11
11
  context("Mono", () => {
12
- it("Makes a mono signal in both channels", () => {
13
- return Offline(
12
+ it("Makes a mono signal in both channels", async () => {
13
+ const buffer = await Offline(
14
14
  () => {
15
15
  const mono = new Mono().toDestination();
16
16
  const signal = new Signal(2).connect(mono);
17
17
  },
18
18
  0.1,
19
19
  2
20
- ).then((buffer) => {
21
- expect(buffer.toArray()[0][0]).to.equal(2);
22
- expect(buffer.toArray()[1][0]).to.equal(2);
23
- expect(buffer.toArray()[0][100]).to.equal(2);
24
- expect(buffer.toArray()[1][100]).to.equal(2);
25
- expect(buffer.toArray()[0][1000]).to.equal(2);
26
- expect(buffer.toArray()[1][1000]).to.equal(2);
27
- });
20
+ );
21
+ expect(buffer.toArray()[0][0]).to.equal(2);
22
+ expect(buffer.toArray()[1][0]).to.equal(2);
23
+ expect(buffer.toArray()[0][100]).to.equal(2);
24
+ expect(buffer.toArray()[1][100]).to.equal(2);
25
+ expect(buffer.toArray()[0][1000]).to.equal(2);
26
+ expect(buffer.toArray()[1][1000]).to.equal(2);
28
27
  });
29
28
 
30
- it("Sums a stereo signal into a mono signal", () => {
31
- return Offline(
29
+ it("Sums a stereo signal into a mono signal", async () => {
30
+ const buffer = await Offline(
32
31
  () => {
33
32
  const mono = new Mono().toDestination();
34
33
  const signal = StereoSignal(2, 2).connect(mono);
35
34
  },
36
35
  0.1,
37
36
  2
38
- ).then((buffer) => {
39
- expect(buffer.toArray()[0][0]).to.equal(2);
40
- expect(buffer.toArray()[1][0]).to.equal(2);
41
- expect(buffer.toArray()[0][100]).to.equal(2);
42
- expect(buffer.toArray()[1][100]).to.equal(2);
43
- expect(buffer.toArray()[0][1000]).to.equal(2);
44
- expect(buffer.toArray()[1][1000]).to.equal(2);
45
- });
37
+ );
38
+ expect(buffer.toArray()[0][0]).to.equal(2);
39
+ expect(buffer.toArray()[1][0]).to.equal(2);
40
+ expect(buffer.toArray()[0][100]).to.equal(2);
41
+ expect(buffer.toArray()[1][100]).to.equal(2);
42
+ expect(buffer.toArray()[0][1000]).to.equal(2);
43
+ expect(buffer.toArray()[1][1000]).to.equal(2);
46
44
  });
47
45
  });
48
46
  });
@@ -42,14 +42,13 @@ describe("PanVol", () => {
42
42
  });
43
43
  });
44
44
 
45
- it("can mute the volume", () => {
46
- return Offline(() => {
45
+ it("can mute the volume", async () => {
46
+ const buffer = await Offline(() => {
47
47
  const vol = new PanVol(0).toDestination();
48
48
  new Signal(1).connect(vol);
49
49
  vol.mute = true;
50
- }).then((buffer) => {
51
- expect(buffer.isSilent()).to.be.true;
52
50
  });
51
+ expect(buffer.isSilent()).to.be.true;
53
52
  });
54
53
  });
55
54
  });
@@ -30,56 +30,53 @@ describe("Panner", () => {
30
30
  });
31
31
  });
32
32
 
33
- it("pans hard left when the pan is set to -1", () => {
34
- return Offline(
33
+ it("pans hard left when the pan is set to -1", async () => {
34
+ const buffer = await Offline(
35
35
  () => {
36
36
  const panner = new Panner(-1).toDestination();
37
37
  new Signal(1).connect(panner);
38
38
  },
39
39
  0.1,
40
40
  2
41
- ).then((buffer) => {
42
- const l = buffer.toArray()[0];
43
- const r = buffer.toArray()[1];
44
- expect(l[0]).to.be.closeTo(1, 0.01);
45
- expect(r[0]).to.be.closeTo(0, 0.01);
46
- });
41
+ );
42
+ const l = buffer.toArray()[0];
43
+ const r = buffer.toArray()[1];
44
+ expect(l[0]).to.be.closeTo(1, 0.01);
45
+ expect(r[0]).to.be.closeTo(0, 0.01);
47
46
  });
48
47
 
49
- it("pans hard right when the pan is set to 1", () => {
50
- return Offline(
48
+ it("pans hard right when the pan is set to 1", async () => {
49
+ const buffer = await Offline(
51
50
  () => {
52
51
  const panner = new Panner(1).toDestination();
53
52
  new Signal(1).connect(panner);
54
53
  },
55
54
  0.1,
56
55
  2
57
- ).then((buffer) => {
58
- const l = buffer.toArray()[0];
59
- const r = buffer.toArray()[1];
60
- expect(l[0]).to.be.closeTo(0, 0.01);
61
- expect(r[0]).to.be.closeTo(1, 0.01);
62
- });
56
+ );
57
+ const l = buffer.toArray()[0];
58
+ const r = buffer.toArray()[1];
59
+ expect(l[0]).to.be.closeTo(0, 0.01);
60
+ expect(r[0]).to.be.closeTo(1, 0.01);
63
61
  });
64
62
 
65
- it("mixes the signal in equal power when panned center", () => {
66
- return Offline(
63
+ it("mixes the signal in equal power when panned center", async () => {
64
+ const buffer = await Offline(
67
65
  () => {
68
66
  const panner = new Panner(0).toDestination();
69
67
  new Signal(1).connect(panner);
70
68
  },
71
69
  0.1,
72
70
  2
73
- ).then((buffer) => {
74
- const l = buffer.toArray()[0];
75
- const r = buffer.toArray()[1];
76
- expect(l[0]).to.be.closeTo(0.707, 0.01);
77
- expect(r[0]).to.be.closeTo(0.707, 0.01);
78
- });
71
+ );
72
+ const l = buffer.toArray()[0];
73
+ const r = buffer.toArray()[1];
74
+ expect(l[0]).to.be.closeTo(0.707, 0.01);
75
+ expect(r[0]).to.be.closeTo(0.707, 0.01);
79
76
  });
80
77
 
81
- it("can chain two panners when channelCount is 2", () => {
82
- return Offline(
78
+ it("can chain two panners when channelCount is 2", async () => {
79
+ const buffer = await Offline(
83
80
  () => {
84
81
  const panner1 = new Panner({
85
82
  channelCount: 2,
@@ -89,12 +86,11 @@ describe("Panner", () => {
89
86
  },
90
87
  0.1,
91
88
  2
92
- ).then((buffer) => {
93
- const l = buffer.toArray()[0];
94
- const r = buffer.toArray()[1];
95
- expect(l[0]).to.be.closeTo(1, 0.01);
96
- expect(r[0]).to.be.closeTo(0, 0.01);
97
- });
89
+ );
90
+ const l = buffer.toArray()[0];
91
+ const r = buffer.toArray()[1];
92
+ expect(l[0]).to.be.closeTo(1, 0.01);
93
+ expect(r[0]).to.be.closeTo(0, 0.01);
98
94
  });
99
95
  });
100
96
  });
@@ -121,7 +121,7 @@ export class Recorder extends ToneAudioNode<RecorderOptions> {
121
121
 
122
122
  this._recorder.addEventListener("start", handleStart, false);
123
123
  });
124
- if(this.state === "stopped") {
124
+ if (this.state === "stopped") {
125
125
  this._recorder.start();
126
126
  } else {
127
127
  this._recorder.resume();
@@ -74,33 +74,30 @@ describe("Volume", () => {
74
74
  // });
75
75
  });
76
76
 
77
- it("can lower the volume", () => {
78
- return Offline(() => {
77
+ it("can lower the volume", async () => {
78
+ const buffer = await Offline(() => {
79
79
  const vol = new Volume(-10).toDestination();
80
80
  new Signal(1).connect(vol);
81
- }).then((buffer) => {
82
- expect(buffer.value()).to.be.closeTo(0.315, 0.01);
83
81
  });
82
+ expect(buffer.value()).to.be.closeTo(0.315, 0.01);
84
83
  });
85
84
 
86
- it("can mute the volume", () => {
87
- return Offline(() => {
85
+ it("can mute the volume", async () => {
86
+ const buffer = await Offline(() => {
88
87
  const vol = new Volume(0).toDestination();
89
88
  new Signal(1).connect(vol);
90
89
  vol.mute = true;
91
- }).then((buffer) => {
92
- expect(buffer.isSilent()).to.equal(true);
93
90
  });
91
+ expect(buffer.isSilent()).to.equal(true);
94
92
  });
95
93
 
96
- it("muted when volume is set to -Infinity", () => {
97
- return Offline(() => {
94
+ it("muted when volume is set to -Infinity", async () => {
95
+ const buffer = await Offline(() => {
98
96
  const vol = new Volume(-Infinity).toDestination();
99
97
  new Signal(1).connect(vol);
100
98
  expect(vol.mute).to.equal(true);
101
- }).then((buffer) => {
102
- expect(buffer.isSilent()).to.equal(true);
103
99
  });
100
+ expect(buffer.isSilent()).to.equal(true);
104
101
  });
105
102
 
106
103
  it("setting the volume unmutes it and reports itself as unmuted", () => {
@@ -46,28 +46,24 @@ describe("Gate", () => {
46
46
  gate.dispose();
47
47
  });
48
48
 
49
- it("gates the incoming signal when below the threshold", () => {
50
- return Offline(() => {
49
+ it("gates the incoming signal when below the threshold", async () => {
50
+ const buffer = await Offline(() => {
51
51
  const gate = new Gate(-9);
52
52
  const sig = new Signal(-12, "decibels");
53
53
  sig.connect(gate);
54
54
  gate.toDestination();
55
- }).then((buffer) => {
56
- expect(buffer.isSilent()).to.be.true;
57
55
  });
56
+ expect(buffer.isSilent()).to.be.true;
58
57
  });
59
58
 
60
- it("passes the incoming signal when above the threshold", () => {
61
- it("gates the incoming signal when below the threshold", () => {
62
- return Offline(() => {
63
- const gate = new Gate(-11);
64
- const sig = new Signal(-10, "decibels");
65
- sig.connect(gate);
66
- gate.toDestination();
67
- }).then((buffer) => {
68
- expect(buffer.min()).to.be.above(0);
69
- });
59
+ it("passes the incoming signal when above the threshold", async () => {
60
+ const buffer = await Offline(() => {
61
+ const gate = new Gate(-11);
62
+ const sig = new Signal(-10, "decibels");
63
+ sig.connect(gate);
64
+ gate.toDestination();
70
65
  });
66
+ expect(buffer.min()).to.be.above(0);
71
67
  });
72
68
  });
73
69
  });
@@ -74,23 +74,21 @@ describe("AmplitudeEnvelope", () => {
74
74
  ampEnv.dispose();
75
75
  });
76
76
 
77
- it("passes no signal before being triggered", () => {
78
- return Offline(() => {
77
+ it("passes no signal before being triggered", async () => {
78
+ const buffer = await Offline(() => {
79
79
  const ampEnv = new AmplitudeEnvelope().toDestination();
80
80
  new Signal(1).connect(ampEnv);
81
- }).then((buffer) => {
82
- expect(buffer.isSilent()).to.be.true;
83
81
  });
82
+ expect(buffer.isSilent()).to.be.true;
84
83
  });
85
84
 
86
- it("passes signal once triggered", () => {
87
- return Offline(() => {
85
+ it("passes signal once triggered", async () => {
86
+ const buffer = await Offline(() => {
88
87
  const ampEnv = new AmplitudeEnvelope().toDestination();
89
88
  new Signal(1).connect(ampEnv);
90
89
  ampEnv.triggerAttack(0.1);
91
- }, 0.2).then((buffer) => {
92
- expect(buffer.getTimeOfFirstSound()).to.be.closeTo(0.1, 0.001);
93
- });
90
+ }, 0.2);
91
+ expect(buffer.getTimeOfFirstSound()).to.be.closeTo(0.1, 0.001);
94
92
  });
95
93
  });
96
94
  });