tone 14.8.32 → 14.8.36
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.
- package/Tone/core/clock/TickSource.test.ts +52 -0
- package/Tone/core/clock/TickSource.ts +70 -9
- package/Tone/core/type/Frequency.ts +8 -8
- package/Tone/effect/Chorus.test.ts +11 -8
- package/Tone/instrument/NoiseSynth.ts +56 -17
- package/Tone/source/Source.ts +84 -27
- package/Tone/source/buffer/Player.test.ts +98 -49
- package/Tone/source/buffer/Player.ts +45 -21
- package/Tone/version.ts +1 -1
- package/build/Tone.js +1 -1
- package/build/Tone.js.map +1 -1
- package/build/esm/core/clock/TickSource.d.ts +8 -0
- package/build/esm/core/clock/TickSource.js +49 -7
- package/build/esm/core/clock/TickSource.js.map +1 -1
- package/build/esm/core/type/Frequency.js +8 -8
- package/build/esm/core/type/Frequency.js.map +1 -1
- package/build/esm/instrument/NoiseSynth.d.ts +10 -0
- package/build/esm/instrument/NoiseSynth.js +14 -2
- package/build/esm/instrument/NoiseSynth.js.map +1 -1
- package/build/esm/source/Source.js +27 -14
- package/build/esm/source/Source.js.map +1 -1
- package/build/esm/source/buffer/Player.d.ts +2 -1
- package/build/esm/source/buffer/Player.js +19 -11
- package/build/esm/source/buffer/Player.js.map +1 -1
- package/build/esm/version.js +1 -1
- package/docs/tone.json +1 -1
- package/package.json +26 -26
|
@@ -23,6 +23,14 @@ export declare class TickSource<TypeName extends "bpm" | "hertz"> extends ToneWi
|
|
|
23
23
|
* The offset values of the ticks
|
|
24
24
|
*/
|
|
25
25
|
private _tickOffset;
|
|
26
|
+
/**
|
|
27
|
+
* Memoized values of getTicksAtTime at events with state other than "started"
|
|
28
|
+
*/
|
|
29
|
+
private _ticksAtTime;
|
|
30
|
+
/**
|
|
31
|
+
* Memoized values of getSecondsAtTime at events with state other than "started"
|
|
32
|
+
*/
|
|
33
|
+
private _secondsAtTime;
|
|
26
34
|
/**
|
|
27
35
|
* @param frequency The initial frequency that the signal ticks at
|
|
28
36
|
*/
|
|
@@ -21,6 +21,14 @@ export class TickSource extends ToneWithContext {
|
|
|
21
21
|
* The offset values of the ticks
|
|
22
22
|
*/
|
|
23
23
|
this._tickOffset = new Timeline();
|
|
24
|
+
/**
|
|
25
|
+
* Memoized values of getTicksAtTime at events with state other than "started"
|
|
26
|
+
*/
|
|
27
|
+
this._ticksAtTime = new Timeline();
|
|
28
|
+
/**
|
|
29
|
+
* Memoized values of getSecondsAtTime at events with state other than "started"
|
|
30
|
+
*/
|
|
31
|
+
this._secondsAtTime = new Timeline();
|
|
24
32
|
const options = optionsFromArguments(TickSource.getDefaults(), arguments, ["frequency"]);
|
|
25
33
|
this.frequency = new TickSignal({
|
|
26
34
|
context: this.context,
|
|
@@ -58,6 +66,8 @@ export class TickSource extends ToneWithContext {
|
|
|
58
66
|
if (isDefined(offset)) {
|
|
59
67
|
this.setTicksAtTime(offset, computedTime);
|
|
60
68
|
}
|
|
69
|
+
this._ticksAtTime.cancel(computedTime);
|
|
70
|
+
this._secondsAtTime.cancel(computedTime);
|
|
61
71
|
}
|
|
62
72
|
return this;
|
|
63
73
|
}
|
|
@@ -78,6 +88,8 @@ export class TickSource extends ToneWithContext {
|
|
|
78
88
|
this._state.cancel(computedTime);
|
|
79
89
|
this._state.setStateAtTime("stopped", computedTime);
|
|
80
90
|
this.setTicksAtTime(0, computedTime);
|
|
91
|
+
this._ticksAtTime.cancel(computedTime);
|
|
92
|
+
this._secondsAtTime.cancel(computedTime);
|
|
81
93
|
return this;
|
|
82
94
|
}
|
|
83
95
|
/**
|
|
@@ -88,6 +100,8 @@ export class TickSource extends ToneWithContext {
|
|
|
88
100
|
const computedTime = this.toSeconds(time);
|
|
89
101
|
if (this._state.getValueAtTime(computedTime) === "started") {
|
|
90
102
|
this._state.setStateAtTime("paused", computedTime);
|
|
103
|
+
this._ticksAtTime.cancel(computedTime);
|
|
104
|
+
this._secondsAtTime.cancel(computedTime);
|
|
91
105
|
}
|
|
92
106
|
return this;
|
|
93
107
|
}
|
|
@@ -99,6 +113,8 @@ export class TickSource extends ToneWithContext {
|
|
|
99
113
|
time = this.toSeconds(time);
|
|
100
114
|
this._state.cancel(time);
|
|
101
115
|
this._tickOffset.cancel(time);
|
|
116
|
+
this._ticksAtTime.cancel(time);
|
|
117
|
+
this._secondsAtTime.cancel(time);
|
|
102
118
|
return this;
|
|
103
119
|
}
|
|
104
120
|
/**
|
|
@@ -109,14 +125,17 @@ export class TickSource extends ToneWithContext {
|
|
|
109
125
|
getTicksAtTime(time) {
|
|
110
126
|
const computedTime = this.toSeconds(time);
|
|
111
127
|
const stopEvent = this._state.getLastState("stopped", computedTime);
|
|
128
|
+
// get previously memoized ticks if available
|
|
129
|
+
const memoizedEvent = this._ticksAtTime.get(computedTime);
|
|
112
130
|
// this event allows forEachBetween to iterate until the current time
|
|
113
131
|
const tmpEvent = { state: "paused", time: computedTime };
|
|
114
132
|
this._state.add(tmpEvent);
|
|
115
133
|
// keep track of the previous offset event
|
|
116
|
-
let lastState = stopEvent;
|
|
117
|
-
let elapsedTicks = 0;
|
|
134
|
+
let lastState = memoizedEvent ? memoizedEvent : stopEvent;
|
|
135
|
+
let elapsedTicks = memoizedEvent ? memoizedEvent.ticks : 0;
|
|
136
|
+
let eventToMemoize = null;
|
|
118
137
|
// iterate through all the events since the last stop
|
|
119
|
-
this._state.forEachBetween(
|
|
138
|
+
this._state.forEachBetween(lastState.time, computedTime + this.sampleTime, e => {
|
|
120
139
|
let periodStartTime = lastState.time;
|
|
121
140
|
// if there is an offset event in this period use that
|
|
122
141
|
const offsetEvent = this._tickOffset.get(e.time);
|
|
@@ -126,11 +145,19 @@ export class TickSource extends ToneWithContext {
|
|
|
126
145
|
}
|
|
127
146
|
if (lastState.state === "started" && e.state !== "started") {
|
|
128
147
|
elapsedTicks += this.frequency.getTicksAtTime(e.time) - this.frequency.getTicksAtTime(periodStartTime);
|
|
148
|
+
// do not memoize the temporary event
|
|
149
|
+
if (e.time != tmpEvent.time) {
|
|
150
|
+
eventToMemoize = { state: e.state, time: e.time, ticks: elapsedTicks };
|
|
151
|
+
}
|
|
129
152
|
}
|
|
130
153
|
lastState = e;
|
|
131
154
|
});
|
|
132
155
|
// remove the temporary event
|
|
133
156
|
this._state.remove(tmpEvent);
|
|
157
|
+
// memoize the ticks at the most recent event with state other than "started"
|
|
158
|
+
if (eventToMemoize) {
|
|
159
|
+
this._ticksAtTime.add(eventToMemoize);
|
|
160
|
+
}
|
|
134
161
|
// return the ticks
|
|
135
162
|
return elapsedTicks;
|
|
136
163
|
}
|
|
@@ -167,11 +194,14 @@ export class TickSource extends ToneWithContext {
|
|
|
167
194
|
// this event allows forEachBetween to iterate until the current time
|
|
168
195
|
const tmpEvent = { state: "paused", time };
|
|
169
196
|
this._state.add(tmpEvent);
|
|
197
|
+
// get previously memoized seconds if available
|
|
198
|
+
const memoizedEvent = this._secondsAtTime.get(time);
|
|
170
199
|
// keep track of the previous offset event
|
|
171
|
-
let lastState = stopEvent;
|
|
172
|
-
let elapsedSeconds = 0;
|
|
200
|
+
let lastState = memoizedEvent ? memoizedEvent : stopEvent;
|
|
201
|
+
let elapsedSeconds = memoizedEvent ? memoizedEvent.seconds : 0;
|
|
202
|
+
let eventToMemoize = null;
|
|
173
203
|
// iterate through all the events since the last stop
|
|
174
|
-
this._state.forEachBetween(
|
|
204
|
+
this._state.forEachBetween(lastState.time, time + this.sampleTime, e => {
|
|
175
205
|
let periodStartTime = lastState.time;
|
|
176
206
|
// if there is an offset event in this period use that
|
|
177
207
|
const offsetEvent = this._tickOffset.get(e.time);
|
|
@@ -181,12 +211,20 @@ export class TickSource extends ToneWithContext {
|
|
|
181
211
|
}
|
|
182
212
|
if (lastState.state === "started" && e.state !== "started") {
|
|
183
213
|
elapsedSeconds += e.time - periodStartTime;
|
|
214
|
+
// do not memoize the temporary event
|
|
215
|
+
if (e.time != tmpEvent.time) {
|
|
216
|
+
eventToMemoize = { state: e.state, time: e.time, seconds: elapsedSeconds };
|
|
217
|
+
}
|
|
184
218
|
}
|
|
185
219
|
lastState = e;
|
|
186
220
|
});
|
|
187
221
|
// remove the temporary event
|
|
188
222
|
this._state.remove(tmpEvent);
|
|
189
|
-
//
|
|
223
|
+
// memoize the seconds at the most recent event with state other than "started"
|
|
224
|
+
if (eventToMemoize) {
|
|
225
|
+
this._secondsAtTime.add(eventToMemoize);
|
|
226
|
+
}
|
|
227
|
+
// return the seconds
|
|
190
228
|
return elapsedSeconds;
|
|
191
229
|
}
|
|
192
230
|
/**
|
|
@@ -202,6 +240,8 @@ export class TickSource extends ToneWithContext {
|
|
|
202
240
|
ticks,
|
|
203
241
|
time,
|
|
204
242
|
});
|
|
243
|
+
this._ticksAtTime.cancel(time);
|
|
244
|
+
this._secondsAtTime.cancel(time);
|
|
205
245
|
return this;
|
|
206
246
|
}
|
|
207
247
|
/**
|
|
@@ -277,6 +317,8 @@ export class TickSource extends ToneWithContext {
|
|
|
277
317
|
super.dispose();
|
|
278
318
|
this._state.dispose();
|
|
279
319
|
this._tickOffset.dispose();
|
|
320
|
+
this._ticksAtTime.dispose();
|
|
321
|
+
this._secondsAtTime.dispose();
|
|
280
322
|
this.frequency.dispose();
|
|
281
323
|
return this;
|
|
282
324
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TickSource.js","sourceRoot":"","sources":["../../../../Tone/core/clock/TickSource.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAA0B,MAAM,4BAA4B,CAAC;AAErF,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAiB,aAAa,EAAsB,MAAM,uBAAuB,CAAC;AACzF,OAAO,EAAE,QAAQ,
|
|
1
|
+
{"version":3,"file":"TickSource.js","sourceRoot":"","sources":["../../../../Tone/core/clock/TickSource.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAA0B,MAAM,4BAA4B,CAAC;AAErF,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAiB,aAAa,EAAsB,MAAM,uBAAuB,CAAC;AACzF,OAAO,EAAE,QAAQ,EAAiB,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAyBlC;;GAEG;AACH,MAAM,OAAO,UAA6C,SAAQ,eAAkC;IAkCnG;QACC,KAAK,CAAC,oBAAoB,CAAC,UAAU,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;QAjCxE,SAAI,GAAW,YAAY,CAAC;QAOrC;;WAEG;QACK,WAAM,GAAkB,IAAI,aAAa,EAAE,CAAC;QAEpD;;WAEG;QACK,gBAAW,GAAoC,IAAI,QAAQ,EAAE,CAAC;QAEtE;;WAEG;QACK,iBAAY,GAAyC,IAAI,QAAQ,EAA8B,CAAC;QAExG;;WAEG;QACK,mBAAc,GAA2C,IAAI,QAAQ,EAAgC,CAAC;QAS7G,MAAM,OAAO,GAAG,oBAAoB,CAAC,UAAU,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;QAEzF,IAAI,CAAC,SAAS,GAAG,IAAI,UAAU,CAAC;YAC/B,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,KAAK,EAAE,OAAO,CAAC,KAAiB;YAChC,KAAK,EAAE,OAAO,CAAC,SAAS;SACxB,CAAC,CAAC;QACH,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;QAE5B,wBAAwB;QACxB,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;QACzC,sBAAsB;QACtB,IAAI,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC3B,CAAC;IAED,MAAM,CAAC,WAAW;QACjB,OAAO,MAAM,CAAC,MAAM,CAAC;YACpB,SAAS,EAAE,CAAC;YACZ,KAAK,EAAE,OAAgB;SACvB,EAAE,eAAe,CAAC,WAAW,EAAE,CAAC,CAAC;IACnC,CAAC;IAED;;OAEG;IACH,IAAI,KAAK;QACR,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;IACxC,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,IAAU,EAAE,MAAc;QAC/B,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAC1C,IAAI,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,YAAY,CAAC,KAAK,SAAS,EAAE;YAC3D,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;YACpD,IAAI,SAAS,CAAC,MAAM,CAAC,EAAE;gBACtB,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;aAC1C;YACD,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;YACvC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;SACzC;QACD,OAAO,IAAI,CAAC;IACb,CAAC;IAED;;;OAGG;IACH,IAAI,CAAC,IAAU;QACd,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAC1C,2BAA2B;QAC3B,IAAI,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,YAAY,CAAC,KAAK,SAAS,EAAE;YAC3D,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;YAC5C,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,GAAG,CAAC,EAAE;gBAC5B,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACpC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;aAC/B;SACD;QACD,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QACjC,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;QACpD,IAAI,CAAC,cAAc,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC;QACrC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QACvC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QACzC,OAAO,IAAI,CAAC;IACb,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,IAAU;QACf,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAC1C,IAAI,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,YAAY,CAAC,KAAK,SAAS,EAAE;YAC3D,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;YACnD,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;YACvC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;SACzC;QACD,OAAO,IAAI,CAAC;IACb,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,IAAU;QAChB,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAC5B,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACzB,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC9B,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC/B,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACjC,OAAO,IAAI,CAAC;IACb,CAAC;IAED;;;;OAIG;IACH,cAAc,CAAC,IAAW;QACzB,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAC1C,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,SAAS,EAAE,YAAY,CAAuB,CAAC;QAE1F,6CAA6C;QAC7C,MAAM,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAE1D,qEAAqE;QACrE,MAAM,QAAQ,GAAuB,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC;QAC7E,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAE1B,0CAA0C;QAC1C,IAAI,SAAS,GAAG,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC;QAC1D,IAAI,YAAY,GAAG,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3D,IAAI,cAAc,GAAuC,IAAI,CAAC;QAE9D,qDAAqD;QACrD,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,EAAE;YAC9E,IAAI,eAAe,GAAG,SAAS,CAAC,IAAI,CAAC;YACrC,sDAAsD;YACtD,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YACjD,IAAI,WAAW,IAAI,WAAW,CAAC,IAAI,IAAI,SAAS,CAAC,IAAI,EAAE;gBACtD,YAAY,GAAG,WAAW,CAAC,KAAK,CAAC;gBACjC,eAAe,GAAG,WAAW,CAAC,IAAI,CAAC;aACnC;YACD,IAAI,SAAS,CAAC,KAAK,KAAK,SAAS,IAAI,CAAC,CAAC,KAAK,KAAK,SAAS,EAAE;gBAC3D,YAAY,IAAI,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC;gBACvG,qCAAqC;gBACrC,IAAI,CAAC,CAAC,IAAI,IAAI,QAAQ,CAAC,IAAI,EAAE;oBAC5B,cAAc,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC;iBACvE;aACD;YACD,SAAS,GAAG,CAAC,CAAC;QACf,CAAC,CAAC,CAAC;QAEH,6BAA6B;QAC7B,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAE7B,6EAA6E;QAC7E,IAAI,cAAc,EAAE;YACnB,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;SACtC;QAED,mBAAmB;QACnB,OAAO,YAAY,CAAC;IACrB,CAAC;IAED;;;OAGG;IACH,IAAI,KAAK;QACR,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;IACxC,CAAC;IACD,IAAI,KAAK,CAAC,CAAQ;QACjB,IAAI,CAAC,cAAc,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;IACpC,CAAC;IAED;;;OAGG;IACH,IAAI,OAAO;QACV,OAAO,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;IAC1C,CAAC;IACD,IAAI,OAAO,CAAC,CAAU;QACrB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QACjD,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IACjC,CAAC;IAED;;;;OAIG;IACH,gBAAgB,CAAC,IAAU;QAC1B,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAC5B,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,SAAS,EAAE,IAAI,CAAuB,CAAC;QAClF,qEAAqE;QACrE,MAAM,QAAQ,GAAuB,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;QAC/D,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAE1B,+CAA+C;QAC/C,MAAM,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAEpD,0CAA0C;QAC1C,IAAI,SAAS,GAAG,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC;QAC1D,IAAI,cAAc,GAAG,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/D,IAAI,cAAc,GAAyC,IAAI,CAAC;QAEhE,qDAAqD;QACrD,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,EAAE;YACtE,IAAI,eAAe,GAAG,SAAS,CAAC,IAAI,CAAC;YACrC,sDAAsD;YACtD,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YACjD,IAAI,WAAW,IAAI,WAAW,CAAC,IAAI,IAAI,SAAS,CAAC,IAAI,EAAE;gBACtD,cAAc,GAAG,WAAW,CAAC,OAAO,CAAC;gBACrC,eAAe,GAAG,WAAW,CAAC,IAAI,CAAC;aACnC;YACD,IAAI,SAAS,CAAC,KAAK,KAAK,SAAS,IAAI,CAAC,CAAC,KAAK,KAAK,SAAS,EAAE;gBAC3D,cAAc,IAAI,CAAC,CAAC,IAAI,GAAG,eAAe,CAAC;gBAC3C,qCAAqC;gBACrC,IAAI,CAAC,CAAC,IAAI,IAAI,QAAQ,CAAC,IAAI,EAAE;oBAC5B,cAAc,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC;iBAC3E;aACD;YACD,SAAS,GAAG,CAAC,CAAC;QACf,CAAC,CAAC,CAAC;QAEH,6BAA6B;QAC7B,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAE7B,+EAA+E;QAC/E,IAAI,cAAc,EAAE;YACnB,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;SACxC;QAED,qBAAqB;QACrB,OAAO,cAAc,CAAC;IACvB,CAAC;IAED;;;;OAIG;IACH,cAAc,CAAC,KAAY,EAAE,IAAU;QACtC,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAC5B,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC9B,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC;YACpB,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,KAAK,EAAE,IAAI,CAAC;YACvD,KAAK;YACL,IAAI;SACJ,CAAC,CAAC;QACH,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC/B,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACjC,OAAO,IAAI,CAAC;IACb,CAAC;IAED;;;OAGG;IACH,cAAc,CAAC,IAAU;QACxB,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAC5B,OAAO,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;IACzC,CAAC;IAED;;;;;;;OAOG;IACH,aAAa,CAAC,IAAW,EAAE,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE;QAC7C,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAA0B,CAAC;QACrE,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAuB,CAAC;QAC5D,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QACpD,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,SAAS,CAAC,GAAG,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC;QACrF,OAAO,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;IACpD,CAAC;IAED;;;;;;OAMG;IACH,kBAAkB,CAAC,SAAiB,EAAE,OAAe,EAAE,QAA+C;QACrG,0DAA0D;QAC1D,IAAI,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAChD,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,SAAS,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE;YACtD,IAAI,cAAc,IAAI,cAAc,CAAC,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS,EAAE;gBACtF,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;aAC1G;YACD,cAAc,GAAG,KAAK,CAAC;QACxB,CAAC,CAAC,CAAC;QAEH,IAAI,KAAK,GAAiB,IAAI,CAAC;QAE/B,IAAI,cAAc,IAAI,cAAc,CAAC,KAAK,KAAK,SAAS,EAAE;YACzD,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;YAC9D,gEAAgE;YAChE,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;YAC/D,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;YACxE,MAAM,IAAI,GAAG,UAAU,GAAG,YAAY,CAAC;YACvC,IAAI,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;YACpC,sCAAsC;YACtC,MAAM,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;YACpC,IAAI,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,UAAU,GAAG,MAAM,CAAC,CAAC;YACrE,OAAO,YAAY,GAAG,OAAO,EAAE;gBAC9B,IAAI;oBACH,QAAQ,CAAC,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;iBACtE;gBAAC,OAAO,CAAC,EAAE;oBACX,KAAK,GAAG,CAAC,CAAC;oBACV,MAAM;iBACN;gBACD,YAAY,IAAI,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC;aACnE;SACD;QAED,IAAI,KAAK,EAAE;YACV,MAAM,KAAK,CAAC;SACZ;QAED,OAAO,IAAI,CAAC;IACb,CAAC;IAED;;OAEG;IACH,OAAO;QACN,KAAK,CAAC,OAAO,EAAE,CAAC;QAChB,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACtB,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;QAC3B,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;QAC5B,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC;QAC9B,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;QACzB,OAAO,IAAI,CAAC;IACb,CAAC;CACD"}
|
|
@@ -44,7 +44,7 @@ export class FrequencyClass extends TimeClass {
|
|
|
44
44
|
},
|
|
45
45
|
},
|
|
46
46
|
note: {
|
|
47
|
-
regexp: /^([a-g]{1}(?:b
|
|
47
|
+
regexp: /^([a-g]{1}(?:b|#|##|x|bb|###|#x|x#|bbb)?)(-?[0-9]+)/i,
|
|
48
48
|
method(pitch, octave) {
|
|
49
49
|
const index = noteToScaleIndex[pitch.toLowerCase()];
|
|
50
50
|
const noteNumber = index + (parseInt(octave, 10) + 1) * 12;
|
|
@@ -196,13 +196,13 @@ export class FrequencyClass extends TimeClass {
|
|
|
196
196
|
* @hidden
|
|
197
197
|
*/
|
|
198
198
|
const noteToScaleIndex = {
|
|
199
|
-
cbb: -2, cb: -1, c: 0, "c#": 1, cx: 2,
|
|
200
|
-
dbb: 0, db: 1, d: 2, "d#": 3, dx: 4,
|
|
201
|
-
ebb: 2, eb: 3, e: 4, "e#": 5, ex: 6,
|
|
202
|
-
fbb: 3, fb: 4, f: 5, "f#": 6, fx: 7,
|
|
203
|
-
gbb: 5, gb: 6, g: 7, "g#": 8, gx: 9,
|
|
204
|
-
abb: 7, ab: 8, a: 9, "a#": 10, ax: 11,
|
|
205
|
-
bbb: 9, bb: 10, b: 11, "b#": 12, bx: 13,
|
|
199
|
+
cbbb: -3, cbb: -2, cb: -1, c: 0, "c#": 1, cx: 2, "c##": 2, "c###": 3, "cx#": 3, "c#x": 3,
|
|
200
|
+
dbbb: -1, dbb: 0, db: 1, d: 2, "d#": 3, dx: 4, "d##": 4, "d###": 5, "dx#": 5, "d#x": 5,
|
|
201
|
+
ebbb: 1, ebb: 2, eb: 3, e: 4, "e#": 5, ex: 6, "e##": 6, "e###": 7, "ex#": 7, "e#x": 7,
|
|
202
|
+
fbbb: 2, fbb: 3, fb: 4, f: 5, "f#": 6, fx: 7, "f##": 7, "f###": 8, "fx#": 8, "f#x": 8,
|
|
203
|
+
gbbb: 4, gbb: 5, gb: 6, g: 7, "g#": 8, gx: 9, "g##": 9, "g###": 10, "gx#": 10, "g#x": 10,
|
|
204
|
+
abbb: 6, abb: 7, ab: 8, a: 9, "a#": 10, ax: 11, "a##": 11, "a###": 12, "ax#": 12, "a#x": 12,
|
|
205
|
+
bbbb: 8, bbb: 9, bb: 10, b: 11, "b#": 12, bx: 13, "b##": 13, "b###": 14, "bx#": 14, "b#x": 14,
|
|
206
206
|
};
|
|
207
207
|
/**
|
|
208
208
|
* scale index to note (sharps)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Frequency.js","sourceRoot":"","sources":["../../../../Tone/core/type/Frequency.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,EAAE,wBAAwB,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAC/D,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAMnC;;;;;;;;GAQG;AACH,MAAM,OAAO,cAA4C,SAAQ,SAA8B;IAA/F;;QAEU,SAAI,GAAW,WAAW,CAAC;QAE3B,iBAAY,GAAkB,IAAI,CAAC;IA4L7C,CAAC;IA1LA;;;OAGG;IACH,MAAM,KAAK,EAAE;QACZ,OAAO,KAAK,EAAE,CAAC;IAChB,CAAC;IACD,MAAM,KAAK,EAAE,CAAC,IAAW;QACxB,KAAK,CAAC,IAAI,CAAC,CAAC;IACb,CAAC;IAED,uCAAuC;IACvC,4BAA4B;IAC5B,uCAAuC;IAE7B,eAAe;QACxB,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,eAAe,EAAE,EAAE;YACjD,IAAI,EAAE;gBACL,MAAM,EAAE,sBAAsB;gBAC9B,MAAM,CAAC,KAAK;oBACX,IAAI,IAAI,CAAC,YAAY,KAAK,MAAM,EAAE;wBACjC,OAAO,KAAK,CAAC;qBACb;yBAAM;wBACN,OAAO,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;qBAClC;gBACF,CAAC;aACD;YACD,IAAI,EAAE;gBACL,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"Frequency.js","sourceRoot":"","sources":["../../../../Tone/core/type/Frequency.ts"],"names":[],"mappings":"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"}
|
|
@@ -46,6 +46,16 @@ export declare class NoiseSynth extends Instrument<NoiseSynthOptions> {
|
|
|
46
46
|
*/
|
|
47
47
|
triggerRelease(time?: Time): this;
|
|
48
48
|
sync(): this;
|
|
49
|
+
/**
|
|
50
|
+
* Trigger the attack and then the release after the duration.
|
|
51
|
+
* @param duration The amount of time to hold the note for
|
|
52
|
+
* @param time The time the note should start
|
|
53
|
+
* @param velocity The volume of the note (0-1)
|
|
54
|
+
* @example
|
|
55
|
+
* const noiseSynth = new Tone.NoiseSynth().toDestination();
|
|
56
|
+
* // hold the note for 0.5 seconds
|
|
57
|
+
* noiseSynth.triggerAttackRelease(0.5);
|
|
58
|
+
*/
|
|
49
59
|
triggerAttackRelease(duration: Time, time?: Time, velocity?: NormalRange): this;
|
|
50
60
|
dispose(): this;
|
|
51
61
|
}
|
|
@@ -2,7 +2,7 @@ import { AmplitudeEnvelope } from "../component/envelope/AmplitudeEnvelope";
|
|
|
2
2
|
import { omitFromObject, optionsFromArguments } from "../core/util/Defaults";
|
|
3
3
|
import { Noise } from "../source/Noise";
|
|
4
4
|
import { Instrument } from "./Instrument";
|
|
5
|
-
import { ToneAudioNode } from "../core/context/ToneAudioNode";
|
|
5
|
+
import { ToneAudioNode, } from "../core/context/ToneAudioNode";
|
|
6
6
|
import { Envelope } from "../component/envelope/Envelope";
|
|
7
7
|
import { Source } from "../source/Source";
|
|
8
8
|
/**
|
|
@@ -56,7 +56,9 @@ export class NoiseSynth extends Instrument {
|
|
|
56
56
|
// start the noise
|
|
57
57
|
this.noise.start(time);
|
|
58
58
|
if (this.envelope.sustain === 0) {
|
|
59
|
-
this.noise.stop(time +
|
|
59
|
+
this.noise.stop(time +
|
|
60
|
+
this.toSeconds(this.envelope.attack) +
|
|
61
|
+
this.toSeconds(this.envelope.decay));
|
|
60
62
|
}
|
|
61
63
|
return this;
|
|
62
64
|
}
|
|
@@ -76,6 +78,16 @@ export class NoiseSynth extends Instrument {
|
|
|
76
78
|
}
|
|
77
79
|
return this;
|
|
78
80
|
}
|
|
81
|
+
/**
|
|
82
|
+
* Trigger the attack and then the release after the duration.
|
|
83
|
+
* @param duration The amount of time to hold the note for
|
|
84
|
+
* @param time The time the note should start
|
|
85
|
+
* @param velocity The volume of the note (0-1)
|
|
86
|
+
* @example
|
|
87
|
+
* const noiseSynth = new Tone.NoiseSynth().toDestination();
|
|
88
|
+
* // hold the note for 0.5 seconds
|
|
89
|
+
* noiseSynth.triggerAttackRelease(0.5);
|
|
90
|
+
*/
|
|
79
91
|
triggerAttackRelease(duration, time, velocity = 1) {
|
|
80
92
|
time = this.toSeconds(time);
|
|
81
93
|
duration = this.toSeconds(duration);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NoiseSynth.js","sourceRoot":"","sources":["../../../Tone/instrument/NoiseSynth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,yCAAyC,CAAC;AAE5E,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAE7E,OAAO,EAAE,KAAK,EAAgB,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAqB,MAAM,cAAc,CAAC;AAC7D,OAAO,
|
|
1
|
+
{"version":3,"file":"NoiseSynth.js","sourceRoot":"","sources":["../../../Tone/instrument/NoiseSynth.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { Volume } from "../component/channel/Volume";
|
|
2
2
|
import "../core/context/Destination";
|
|
3
3
|
import "../core/clock/Transport";
|
|
4
|
-
import { ToneAudioNode } from "../core/context/ToneAudioNode";
|
|
4
|
+
import { ToneAudioNode, } from "../core/context/ToneAudioNode";
|
|
5
5
|
import { defaultArg } from "../core/util/Defaults";
|
|
6
6
|
import { noOp, readOnly } from "../core/util/Interface";
|
|
7
|
-
import { StateTimeline } from "../core/util/StateTimeline";
|
|
7
|
+
import { StateTimeline, } from "../core/util/StateTimeline";
|
|
8
8
|
import { isDefined, isUndef } from "../core/util/TypeCheck";
|
|
9
9
|
import { assert, assertContextRunning } from "../core/util/Debug";
|
|
10
10
|
import { GT } from "../core/util/Math";
|
|
@@ -122,10 +122,13 @@ export class Source extends ToneAudioNode {
|
|
|
122
122
|
* source.start("+0.5"); // starts the source 0.5 seconds from now
|
|
123
123
|
*/
|
|
124
124
|
start(time, offset, duration) {
|
|
125
|
-
let computedTime = isUndef(time) && this._synced
|
|
125
|
+
let computedTime = isUndef(time) && this._synced
|
|
126
|
+
? this.context.transport.seconds
|
|
127
|
+
: this.toSeconds(time);
|
|
126
128
|
computedTime = this._clampToCurrentTime(computedTime);
|
|
127
129
|
// if it's started, stop it and restart it
|
|
128
|
-
if (!this._synced &&
|
|
130
|
+
if (!this._synced &&
|
|
131
|
+
this._state.getValueAtTime(computedTime) === "started") {
|
|
129
132
|
// time should be strictly greater than the previous start time
|
|
130
133
|
assert(GT(computedTime, this._state.get(computedTime).time), "Start time must be strictly greater than previous start time");
|
|
131
134
|
this._state.cancel(computedTime);
|
|
@@ -141,16 +144,19 @@ export class Source extends ToneAudioNode {
|
|
|
141
144
|
const event = this._state.get(computedTime);
|
|
142
145
|
if (event) {
|
|
143
146
|
event.offset = this.toSeconds(defaultArg(offset, 0));
|
|
144
|
-
event.duration = duration
|
|
147
|
+
event.duration = duration
|
|
148
|
+
? this.toSeconds(duration)
|
|
149
|
+
: undefined;
|
|
145
150
|
}
|
|
146
|
-
const sched = this.context.transport.schedule(t => {
|
|
151
|
+
const sched = this.context.transport.schedule((t) => {
|
|
147
152
|
this._start(t, offset, duration);
|
|
148
153
|
}, computedTime);
|
|
149
154
|
this._scheduled.push(sched);
|
|
150
155
|
// if the transport is already started
|
|
151
156
|
// and the time is greater than where the transport is
|
|
152
157
|
if (this.context.transport.state === "started" &&
|
|
153
|
-
this.context.transport.getSecondsAtTime(this.immediate()) >
|
|
158
|
+
this.context.transport.getSecondsAtTime(this.immediate()) >
|
|
159
|
+
computedTime) {
|
|
154
160
|
this._syncedStart(this.now(), this.context.transport.seconds);
|
|
155
161
|
}
|
|
156
162
|
}
|
|
@@ -171,9 +177,12 @@ export class Source extends ToneAudioNode {
|
|
|
171
177
|
* source.stop("+0.5"); // stops the source 0.5 seconds from now
|
|
172
178
|
*/
|
|
173
179
|
stop(time) {
|
|
174
|
-
let computedTime = isUndef(time) && this._synced
|
|
180
|
+
let computedTime = isUndef(time) && this._synced
|
|
181
|
+
? this.context.transport.seconds
|
|
182
|
+
: this.toSeconds(time);
|
|
175
183
|
computedTime = this._clampToCurrentTime(computedTime);
|
|
176
|
-
if (this._state.getValueAtTime(computedTime) === "started" ||
|
|
184
|
+
if (this._state.getValueAtTime(computedTime) === "started" ||
|
|
185
|
+
isDefined(this._state.getNextState("started", computedTime))) {
|
|
177
186
|
this.log("stop", computedTime);
|
|
178
187
|
if (!this._synced) {
|
|
179
188
|
this._stop(computedTime);
|
|
@@ -217,22 +226,26 @@ export class Source extends ToneAudioNode {
|
|
|
217
226
|
if (!this._synced) {
|
|
218
227
|
this._synced = true;
|
|
219
228
|
this._syncedStart = (time, offset) => {
|
|
220
|
-
if (offset
|
|
229
|
+
if (GT(offset, 0)) {
|
|
221
230
|
// get the playback state at that time
|
|
222
231
|
const stateEvent = this._state.get(offset);
|
|
223
232
|
// listen for start events which may occur in the middle of the sync'ed time
|
|
224
|
-
if (stateEvent &&
|
|
233
|
+
if (stateEvent &&
|
|
234
|
+
stateEvent.state === "started" &&
|
|
235
|
+
stateEvent.time !== offset) {
|
|
225
236
|
// get the offset
|
|
226
237
|
const startOffset = offset - this.toSeconds(stateEvent.time);
|
|
227
238
|
let duration;
|
|
228
239
|
if (stateEvent.duration) {
|
|
229
|
-
duration =
|
|
240
|
+
duration =
|
|
241
|
+
this.toSeconds(stateEvent.duration) -
|
|
242
|
+
startOffset;
|
|
230
243
|
}
|
|
231
244
|
this._start(time, this.toSeconds(stateEvent.offset) + startOffset, duration);
|
|
232
245
|
}
|
|
233
246
|
}
|
|
234
247
|
};
|
|
235
|
-
this._syncedStop = time => {
|
|
248
|
+
this._syncedStop = (time) => {
|
|
236
249
|
const seconds = this.context.transport.getSecondsAtTime(Math.max(time - this.sampleTime, 0));
|
|
237
250
|
if (this._state.getValueAtTime(seconds) === "started") {
|
|
238
251
|
this._stop(time);
|
|
@@ -259,7 +272,7 @@ export class Source extends ToneAudioNode {
|
|
|
259
272
|
}
|
|
260
273
|
this._synced = false;
|
|
261
274
|
// clear all of the scheduled ids
|
|
262
|
-
this._scheduled.forEach(id => this.context.transport.clear(id));
|
|
275
|
+
this._scheduled.forEach((id) => this.context.transport.clear(id));
|
|
263
276
|
this._scheduled = [];
|
|
264
277
|
this._state.cancel(0);
|
|
265
278
|
// stop it also
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Source.js","sourceRoot":"","sources":["../../../Tone/source/Source.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,6BAA6B,CAAC;AACrD,OAAO,6BAA6B,CAAC;AACrC,OAAO,yBAAyB,CAAC;AAEjC,OAAO,
|
|
1
|
+
{"version":3,"file":"Source.js","sourceRoot":"","sources":["../../../Tone/source/Source.ts"],"names":[],"mappings":"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"}
|
|
@@ -174,7 +174,8 @@ export declare class Player extends Source<PlayerOptions> {
|
|
|
174
174
|
get playbackRate(): Positive;
|
|
175
175
|
set playbackRate(rate: Positive);
|
|
176
176
|
/**
|
|
177
|
-
* If the buffer should be reversed
|
|
177
|
+
* If the buffer should be reversed. Note that this sets the underlying [[ToneAudioBuffer.reverse]], so
|
|
178
|
+
* if multiple players are pointing at the same ToneAudioBuffer, they will all be reversed.
|
|
178
179
|
* @example
|
|
179
180
|
* const player = new Tone.Player("https://tonejs.github.io/audio/berklee/chime_1.mp3").toDestination();
|
|
180
181
|
* player.autostart = true;
|
|
@@ -17,13 +17,19 @@ import { timeRange } from "../../core/util/Decorator";
|
|
|
17
17
|
*/
|
|
18
18
|
export class Player extends Source {
|
|
19
19
|
constructor() {
|
|
20
|
-
super(optionsFromArguments(Player.getDefaults(), arguments, [
|
|
20
|
+
super(optionsFromArguments(Player.getDefaults(), arguments, [
|
|
21
|
+
"url",
|
|
22
|
+
"onload",
|
|
23
|
+
]));
|
|
21
24
|
this.name = "Player";
|
|
22
25
|
/**
|
|
23
26
|
* All of the active buffer source nodes
|
|
24
27
|
*/
|
|
25
28
|
this._activeSources = new Set();
|
|
26
|
-
const options = optionsFromArguments(Player.getDefaults(), arguments, [
|
|
29
|
+
const options = optionsFromArguments(Player.getDefaults(), arguments, [
|
|
30
|
+
"url",
|
|
31
|
+
"onload",
|
|
32
|
+
]);
|
|
27
33
|
this._buffer = new ToneAudioBuffer({
|
|
28
34
|
onload: this._onload.bind(this, options.onload),
|
|
29
35
|
onerror: options.onerror,
|
|
@@ -85,7 +91,8 @@ export class Player extends Source {
|
|
|
85
91
|
this.onstop(this);
|
|
86
92
|
// delete the source from the active sources
|
|
87
93
|
this._activeSources.delete(source);
|
|
88
|
-
if (this._activeSources.size === 0 &&
|
|
94
|
+
if (this._activeSources.size === 0 &&
|
|
95
|
+
!this._synced &&
|
|
89
96
|
this._state.getValueAtTime(this.now()) === "started") {
|
|
90
97
|
// remove the 'implicitEnd' event and replace with an explicit end
|
|
91
98
|
this._state.cancel(this.now());
|
|
@@ -164,7 +171,7 @@ export class Player extends Source {
|
|
|
164
171
|
*/
|
|
165
172
|
_stop(time) {
|
|
166
173
|
const computedTime = this.toSeconds(time);
|
|
167
|
-
this._activeSources.forEach(source => source.stop(computedTime));
|
|
174
|
+
this._activeSources.forEach((source) => source.stop(computedTime));
|
|
168
175
|
}
|
|
169
176
|
/**
|
|
170
177
|
* Stop and then restart the player from the beginning (or offset)
|
|
@@ -232,7 +239,7 @@ export class Player extends Source {
|
|
|
232
239
|
assertRange(this.toSeconds(loopStart), 0, this.buffer.duration);
|
|
233
240
|
}
|
|
234
241
|
// get the current source
|
|
235
|
-
this._activeSources.forEach(source => {
|
|
242
|
+
this._activeSources.forEach((source) => {
|
|
236
243
|
source.loopStart = loopStart;
|
|
237
244
|
});
|
|
238
245
|
}
|
|
@@ -248,7 +255,7 @@ export class Player extends Source {
|
|
|
248
255
|
assertRange(this.toSeconds(loopEnd), 0, this.buffer.duration);
|
|
249
256
|
}
|
|
250
257
|
// get the current source
|
|
251
|
-
this._activeSources.forEach(source => {
|
|
258
|
+
this._activeSources.forEach((source) => {
|
|
252
259
|
source.loopEnd = loopEnd;
|
|
253
260
|
});
|
|
254
261
|
}
|
|
@@ -278,7 +285,7 @@ export class Player extends Source {
|
|
|
278
285
|
}
|
|
279
286
|
this._loop = loop;
|
|
280
287
|
// set the loop of all of the sources
|
|
281
|
-
this._activeSources.forEach(source => {
|
|
288
|
+
this._activeSources.forEach((source) => {
|
|
282
289
|
source.loop = loop;
|
|
283
290
|
});
|
|
284
291
|
if (loop) {
|
|
@@ -308,15 +315,16 @@ export class Player extends Source {
|
|
|
308
315
|
const stopEvent = this._state.getNextState("stopped", now);
|
|
309
316
|
if (stopEvent && stopEvent.implicitEnd) {
|
|
310
317
|
this._state.cancel(stopEvent.time);
|
|
311
|
-
this._activeSources.forEach(source => source.cancelStop());
|
|
318
|
+
this._activeSources.forEach((source) => source.cancelStop());
|
|
312
319
|
}
|
|
313
320
|
// set all the sources
|
|
314
|
-
this._activeSources.forEach(source => {
|
|
321
|
+
this._activeSources.forEach((source) => {
|
|
315
322
|
source.playbackRate.setValueAtTime(rate, now);
|
|
316
323
|
});
|
|
317
324
|
}
|
|
318
325
|
/**
|
|
319
|
-
* If the buffer should be reversed
|
|
326
|
+
* If the buffer should be reversed. Note that this sets the underlying [[ToneAudioBuffer.reverse]], so
|
|
327
|
+
* if multiple players are pointing at the same ToneAudioBuffer, they will all be reversed.
|
|
320
328
|
* @example
|
|
321
329
|
* const player = new Tone.Player("https://tonejs.github.io/audio/berklee/chime_1.mp3").toDestination();
|
|
322
330
|
* player.autostart = true;
|
|
@@ -337,7 +345,7 @@ export class Player extends Source {
|
|
|
337
345
|
dispose() {
|
|
338
346
|
super.dispose();
|
|
339
347
|
// disconnect all of the players
|
|
340
|
-
this._activeSources.forEach(source => source.dispose());
|
|
348
|
+
this._activeSources.forEach((source) => source.dispose());
|
|
341
349
|
this._activeSources.clear();
|
|
342
350
|
this._buffer.dispose();
|
|
343
351
|
return this;
|