pts 0.10.11 → 0.11.0

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 (52) hide show
  1. package/dist/{pts.d.ts → index.d.ts} +1245 -1207
  2. package/dist/index.js +6825 -6660
  3. package/dist/index.mjs +6785 -0
  4. package/package.json +12 -33
  5. package/tsup.browser.js +21 -0
  6. package/tsup.min.js +23 -0
  7. package/tsup.module.js +15 -0
  8. package/dist/es2015/Canvas.js +0 -684
  9. package/dist/es2015/Canvas.js.map +0 -1
  10. package/dist/es2015/Color.js +0 -337
  11. package/dist/es2015/Color.js.map +0 -1
  12. package/dist/es2015/Create.js +0 -275
  13. package/dist/es2015/Create.js.map +0 -1
  14. package/dist/es2015/Dom.js +0 -448
  15. package/dist/es2015/Dom.js.map +0 -1
  16. package/dist/es2015/Form.js +0 -80
  17. package/dist/es2015/Form.js.map +0 -1
  18. package/dist/es2015/Image.js +0 -220
  19. package/dist/es2015/Image.js.map +0 -1
  20. package/dist/es2015/LinearAlgebra.js +0 -286
  21. package/dist/es2015/LinearAlgebra.js.map +0 -1
  22. package/dist/es2015/Num.js +0 -477
  23. package/dist/es2015/Num.js.map +0 -1
  24. package/dist/es2015/Op.js +0 -978
  25. package/dist/es2015/Op.js.map +0 -1
  26. package/dist/es2015/Physics.js +0 -383
  27. package/dist/es2015/Physics.js.map +0 -1
  28. package/dist/es2015/Play.js +0 -339
  29. package/dist/es2015/Play.js.map +0 -1
  30. package/dist/es2015/Pt.js +0 -463
  31. package/dist/es2015/Pt.js.map +0 -1
  32. package/dist/es2015/Space.js +0 -331
  33. package/dist/es2015/Space.js.map +0 -1
  34. package/dist/es2015/Svg.js +0 -367
  35. package/dist/es2015/Svg.js.map +0 -1
  36. package/dist/es2015/Types.js +0 -3
  37. package/dist/es2015/Types.js.map +0 -1
  38. package/dist/es2015/Typography.js +0 -40
  39. package/dist/es2015/Typography.js.map +0 -1
  40. package/dist/es2015/UI.js +0 -273
  41. package/dist/es2015/UI.js.map +0 -1
  42. package/dist/es2015/Util.js +0 -200
  43. package/dist/es2015/Util.js.map +0 -1
  44. package/dist/es2015/_lib.js +0 -45
  45. package/dist/es2015/_lib.js.map +0 -1
  46. package/dist/es2015/_module.js +0 -18
  47. package/dist/es2015/_module.js.map +0 -1
  48. package/dist/es2015/uheprng.js +0 -69
  49. package/dist/es2015/uheprng.js.map +0 -1
  50. package/dist/es5.js.map +0 -1
  51. package/dist/index.js.map +0 -1
  52. package/dist/pts.module.js.map +0 -1
@@ -1,339 +0,0 @@
1
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
- return new (P || (P = Promise))(function (resolve, reject) {
4
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
- step((generator = generator.apply(thisArg, _arguments || [])).next());
8
- });
9
- };
10
- import { Pt, Group } from "./Pt";
11
- import { Num } from "./Num";
12
- export class Tempo {
13
- constructor(bpm) {
14
- this._listeners = {};
15
- this._listenerInc = 0;
16
- this.bpm = bpm;
17
- }
18
- static fromBeat(ms) {
19
- return new Tempo(60000 / ms);
20
- }
21
- get bpm() { return this._bpm; }
22
- set bpm(n) {
23
- this._bpm = n;
24
- this._ms = 60000 / this._bpm;
25
- }
26
- get ms() { return this._ms; }
27
- set ms(n) {
28
- this._bpm = Math.floor(60000 / n);
29
- this._ms = 60000 / this._bpm;
30
- }
31
- _createID(listener) {
32
- let id = '';
33
- if (typeof listener === 'function') {
34
- id = '_b' + (this._listenerInc++);
35
- }
36
- else {
37
- id = listener.name || '_b' + (this._listenerInc++);
38
- }
39
- return id;
40
- }
41
- every(beats) {
42
- let self = this;
43
- let p = Array.isArray(beats) ? beats[0] : beats;
44
- return {
45
- start: function (fn, offset = 0, name) {
46
- let id = name || self._createID(fn);
47
- self._listeners[id] = { name: id, beats: beats, period: p, index: 0, offset: offset, duration: -1, continuous: false, fn: fn };
48
- return this;
49
- },
50
- progress: function (fn, offset = 0, name) {
51
- let id = name || self._createID(fn);
52
- self._listeners[id] = { name: id, beats: beats, period: p, index: 0, offset: offset, duration: -1, continuous: true, fn: fn };
53
- return this;
54
- }
55
- };
56
- }
57
- track(time) {
58
- for (let k in this._listeners) {
59
- if (this._listeners.hasOwnProperty(k)) {
60
- let li = this._listeners[k];
61
- let _t = (li.offset) ? time + li.offset : time;
62
- let ms = li.period * this._ms;
63
- let isStart = false;
64
- if (_t > li.duration + ms) {
65
- li.duration = _t - (_t % this._ms);
66
- if (Array.isArray(li.beats)) {
67
- li.index = (li.index + 1) % li.beats.length;
68
- li.period = li.beats[li.index];
69
- }
70
- isStart = true;
71
- }
72
- let count = Math.max(0, Math.ceil(Math.floor(li.duration / this._ms) / li.period));
73
- let params = (li.continuous) ? [count, Num.clamp((_t - li.duration) / ms, 0, 1), _t, isStart] : [count];
74
- if (li.continuous || isStart) {
75
- let done = li.fn.apply(li, params);
76
- if (done)
77
- delete this._listeners[li.name];
78
- }
79
- }
80
- }
81
- }
82
- stop(name) {
83
- if (this._listeners[name])
84
- delete this._listeners[name];
85
- }
86
- animate(time, ftime) {
87
- this.track(time);
88
- }
89
- resize(bound, evt) {
90
- return;
91
- }
92
- action(type, px, py, evt) {
93
- return;
94
- }
95
- }
96
- export class Sound {
97
- constructor(type) {
98
- this._playing = false;
99
- this._type = type;
100
- let _ctx = window.AudioContext || window.webkitAudioContext || false;
101
- if (!_ctx)
102
- throw (new Error("Your browser doesn't support Web Audio. (No AudioContext)"));
103
- this._ctx = (_ctx) ? new _ctx() : undefined;
104
- }
105
- static from(node, ctx, type = "gen", stream) {
106
- let s = new Sound(type);
107
- s._node = node;
108
- s._ctx = ctx;
109
- if (stream)
110
- s._stream = stream;
111
- return s;
112
- }
113
- static load(source, crossOrigin = "anonymous") {
114
- return new Promise((resolve, reject) => {
115
- let s = new Sound("file");
116
- s._source = (typeof source === 'string') ? new Audio(source) : source;
117
- s._source.autoplay = false;
118
- s._source.crossOrigin = crossOrigin;
119
- s._source.addEventListener("ended", function () { s._playing = false; });
120
- s._source.addEventListener('error', function () { reject("Error loading sound"); });
121
- s._source.addEventListener('canplaythrough', function () {
122
- s._node = s._ctx.createMediaElementSource(s._source);
123
- resolve(s);
124
- });
125
- });
126
- }
127
- static loadAsBuffer(url) {
128
- return new Promise((resolve, reject) => {
129
- let request = new XMLHttpRequest();
130
- request.open('GET', url, true);
131
- request.responseType = 'arraybuffer';
132
- let s = new Sound("file");
133
- request.onload = function () {
134
- s._ctx.decodeAudioData(request.response, function (buffer) {
135
- s.createBuffer(buffer);
136
- resolve(s);
137
- }, (err) => reject("Error decoding audio"));
138
- };
139
- request.send();
140
- });
141
- }
142
- createBuffer(buf) {
143
- this._node = this._ctx.createBufferSource();
144
- if (buf !== undefined)
145
- this._buffer = buf;
146
- this._node.buffer = this._buffer;
147
- this._node.onended = () => { this._playing = false; };
148
- return this;
149
- }
150
- static generate(type, val) {
151
- let s = new Sound("gen");
152
- return s._gen(type, val);
153
- }
154
- _gen(type, val) {
155
- this._node = this._ctx.createOscillator();
156
- let osc = this._node;
157
- osc.type = type;
158
- if (type === 'custom') {
159
- osc.setPeriodicWave(val);
160
- }
161
- else {
162
- osc.frequency.value = val;
163
- }
164
- return this;
165
- }
166
- static input(constraint) {
167
- return __awaiter(this, void 0, void 0, function* () {
168
- try {
169
- let s = new Sound("input");
170
- if (!s)
171
- return undefined;
172
- const c = constraint ? constraint : { audio: true, video: false };
173
- s._stream = yield navigator.mediaDevices.getUserMedia(c);
174
- s._node = s._ctx.createMediaStreamSource(s._stream);
175
- return s;
176
- }
177
- catch (e) {
178
- console.error("Cannot get audio from input device.");
179
- return Promise.resolve(null);
180
- }
181
- });
182
- }
183
- get ctx() { return this._ctx; }
184
- get node() { return this._node; }
185
- get outputNode() { return this._outputNode; }
186
- get stream() { return this._stream; }
187
- get source() { return this._source; }
188
- get buffer() { return this._buffer; }
189
- set buffer(b) { this._buffer = b; }
190
- get type() { return this._type; }
191
- get playing() { return this._playing; }
192
- get progress() {
193
- let dur = 0;
194
- let curr = 0;
195
- if (!!this._buffer) {
196
- dur = this._buffer.duration;
197
- curr = (this._timestamp) ? this._ctx.currentTime - this._timestamp : 0;
198
- }
199
- else {
200
- dur = this._source.duration;
201
- curr = this._source.currentTime;
202
- }
203
- return curr / dur;
204
- }
205
- get playable() {
206
- return (this._type === "input") ? this._node !== undefined : (!!this._buffer || this._source.readyState === 4);
207
- }
208
- get binSize() {
209
- return this.analyzer.size;
210
- }
211
- get sampleRate() {
212
- return this._ctx.sampleRate;
213
- }
214
- get frequency() {
215
- return (this._type === "gen") ? this._node.frequency.value : 0;
216
- }
217
- set frequency(f) {
218
- if (this._type === "gen")
219
- this._node.frequency.value = f;
220
- }
221
- connect(node) {
222
- this._node.connect(node);
223
- return this;
224
- }
225
- setOutputNode(outputNode) {
226
- this._outputNode = outputNode;
227
- return this;
228
- }
229
- removeOutputNode() {
230
- this._outputNode = null;
231
- return this;
232
- }
233
- analyze(size = 256, minDb = -100, maxDb = -30, smooth = 0.8) {
234
- let a = this._ctx.createAnalyser();
235
- a.fftSize = size * 2;
236
- a.minDecibels = minDb;
237
- a.maxDecibels = maxDb;
238
- a.smoothingTimeConstant = smooth;
239
- this.analyzer = {
240
- node: a,
241
- size: a.frequencyBinCount,
242
- data: new Uint8Array(a.frequencyBinCount)
243
- };
244
- this._node.connect(this.analyzer.node);
245
- return this;
246
- }
247
- _domain(time) {
248
- if (this.analyzer) {
249
- if (time) {
250
- this.analyzer.node.getByteTimeDomainData(this.analyzer.data);
251
- }
252
- else {
253
- this.analyzer.node.getByteFrequencyData(this.analyzer.data);
254
- }
255
- return this.analyzer.data;
256
- }
257
- return new Uint8Array(0);
258
- }
259
- _domainTo(time, size, position = [0, 0], trim = [0, 0]) {
260
- let data = (time) ? this.timeDomain() : this.freqDomain();
261
- let g = new Group();
262
- for (let i = trim[0], len = data.length - trim[1]; i < len; i++) {
263
- g.push(new Pt(position[0] + size[0] * i / len, position[1] + size[1] * data[i] / 255));
264
- }
265
- return g;
266
- }
267
- timeDomain() {
268
- return this._domain(true);
269
- }
270
- timeDomainTo(size, position = [0, 0], trim = [0, 0]) {
271
- return this._domainTo(true, size, position, trim);
272
- }
273
- freqDomain() {
274
- return this._domain(false);
275
- }
276
- freqDomainTo(size, position = [0, 0], trim = [0, 0]) {
277
- return this._domainTo(false, size, position, trim);
278
- }
279
- reset() {
280
- this.stop();
281
- this._node.disconnect();
282
- return this;
283
- }
284
- start(timeAt = 0) {
285
- if (this._ctx.state === 'suspended')
286
- this._ctx.resume();
287
- if (this._type === "file") {
288
- if (!!this._buffer) {
289
- this._node.start(timeAt);
290
- this._timestamp = this._ctx.currentTime + timeAt;
291
- }
292
- else {
293
- this._source.play();
294
- if (timeAt > 0)
295
- this._source.currentTime = timeAt;
296
- }
297
- }
298
- else if (this._type === "gen") {
299
- this._gen(this._node.type, this._node.frequency.value);
300
- this._node.start();
301
- if (this.analyzer)
302
- this._node.connect(this.analyzer.node);
303
- }
304
- (this._outputNode || this._node).connect(this._ctx.destination);
305
- this._playing = true;
306
- return this;
307
- }
308
- stop() {
309
- if (this._playing)
310
- (this._outputNode || this._node).disconnect(this._ctx.destination);
311
- if (this._type === "file") {
312
- if (!!this._buffer) {
313
- if (this.progress < 1)
314
- this._node.stop();
315
- }
316
- else {
317
- this._source.pause();
318
- }
319
- }
320
- else if (this._type === "gen") {
321
- this._node.stop();
322
- }
323
- else if (this._type === "input") {
324
- this._stream.getAudioTracks().forEach(track => track.stop());
325
- }
326
- this._playing = false;
327
- return this;
328
- }
329
- toggle() {
330
- if (this._playing) {
331
- this.stop();
332
- }
333
- else {
334
- this.start();
335
- }
336
- return this;
337
- }
338
- }
339
- //# sourceMappingURL=Play.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Play.js","sourceRoot":"","sources":["../../src/Play.ts"],"names":[],"mappings":"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"}