wavesurfer.js 6.5.1 → 7.0.0-alpha.1

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 (132) hide show
  1. package/.eslintrc.json +24 -0
  2. package/.prettierrc +8 -0
  3. package/README.md +26 -117
  4. package/dist/base-plugin.d.ts +10 -0
  5. package/dist/base-plugin.js +13 -0
  6. package/dist/decoder.d.ts +10 -0
  7. package/dist/decoder.js +43 -0
  8. package/dist/event-emitter.d.ts +11 -0
  9. package/dist/event-emitter.js +21 -0
  10. package/dist/fetcher.d.ts +4 -0
  11. package/dist/fetcher.js +17 -0
  12. package/dist/index.d.ts +92 -0
  13. package/dist/index.js +166 -0
  14. package/dist/player-webaudio.d.ts +8 -0
  15. package/dist/player-webaudio.js +31 -0
  16. package/dist/player.d.ts +16 -0
  17. package/dist/player.js +40 -0
  18. package/dist/plugins/regions.d.ts +48 -0
  19. package/dist/plugins/regions.js +183 -0
  20. package/dist/renderer.d.ts +34 -0
  21. package/dist/renderer.js +193 -0
  22. package/dist/timer.d.ts +10 -0
  23. package/dist/timer.js +17 -0
  24. package/examples/audio.ogg +0 -0
  25. package/examples/bars.js +19 -0
  26. package/examples/basic.js +8 -0
  27. package/examples/gradient.js +28 -0
  28. package/examples/regions.js +63 -0
  29. package/examples/video.js +19 -0
  30. package/examples/webaudio.js +14 -0
  31. package/package.json +19 -99
  32. package/src/base-plugin.ts +20 -0
  33. package/src/decoder.ts +41 -0
  34. package/src/event-emitter.ts +35 -0
  35. package/src/fetcher.ts +7 -0
  36. package/src/index.ts +252 -0
  37. package/src/player-webaudio.ts +34 -0
  38. package/src/player.ts +50 -0
  39. package/src/plugins/regions.ts +240 -0
  40. package/src/renderer.ts +250 -0
  41. package/src/timer.ts +27 -0
  42. package/tsconfig.json +105 -0
  43. package/tutorial/index.html +47 -0
  44. package/tutorial/src/editor.js +70 -0
  45. package/tutorial/src/init.js +66 -0
  46. package/tutorial/src/url.js +25 -0
  47. package/tutorial/style.css +211 -0
  48. package/yarn-error.log +1049 -0
  49. package/LICENSE +0 -29
  50. package/dist/plugin/wavesurfer.cursor.js +0 -418
  51. package/dist/plugin/wavesurfer.cursor.js.map +0 -1
  52. package/dist/plugin/wavesurfer.cursor.min.js +0 -7
  53. package/dist/plugin/wavesurfer.cursor.min.js.map +0 -1
  54. package/dist/plugin/wavesurfer.elan.js +0 -381
  55. package/dist/plugin/wavesurfer.elan.js.map +0 -1
  56. package/dist/plugin/wavesurfer.elan.min.js +0 -7
  57. package/dist/plugin/wavesurfer.elan.min.js.map +0 -1
  58. package/dist/plugin/wavesurfer.markers.js +0 -520
  59. package/dist/plugin/wavesurfer.markers.js.map +0 -1
  60. package/dist/plugin/wavesurfer.markers.min.js +0 -7
  61. package/dist/plugin/wavesurfer.markers.min.js.map +0 -1
  62. package/dist/plugin/wavesurfer.mediasession.js +0 -181
  63. package/dist/plugin/wavesurfer.mediasession.js.map +0 -1
  64. package/dist/plugin/wavesurfer.mediasession.min.js +0 -7
  65. package/dist/plugin/wavesurfer.mediasession.min.js.map +0 -1
  66. package/dist/plugin/wavesurfer.microphone.js +0 -466
  67. package/dist/plugin/wavesurfer.microphone.js.map +0 -1
  68. package/dist/plugin/wavesurfer.microphone.min.js +0 -7
  69. package/dist/plugin/wavesurfer.microphone.min.js.map +0 -1
  70. package/dist/plugin/wavesurfer.minimap.js +0 -440
  71. package/dist/plugin/wavesurfer.minimap.js.map +0 -1
  72. package/dist/plugin/wavesurfer.minimap.min.js +0 -7
  73. package/dist/plugin/wavesurfer.minimap.min.js.map +0 -1
  74. package/dist/plugin/wavesurfer.playhead.js +0 -300
  75. package/dist/plugin/wavesurfer.playhead.js.map +0 -1
  76. package/dist/plugin/wavesurfer.playhead.min.js +0 -7
  77. package/dist/plugin/wavesurfer.playhead.min.js.map +0 -1
  78. package/dist/plugin/wavesurfer.regions.js +0 -1335
  79. package/dist/plugin/wavesurfer.regions.js.map +0 -1
  80. package/dist/plugin/wavesurfer.regions.min.js +0 -7
  81. package/dist/plugin/wavesurfer.regions.min.js.map +0 -1
  82. package/dist/plugin/wavesurfer.spectrogram.js +0 -736
  83. package/dist/plugin/wavesurfer.spectrogram.js.map +0 -1
  84. package/dist/plugin/wavesurfer.spectrogram.min.js +0 -7
  85. package/dist/plugin/wavesurfer.spectrogram.min.js.map +0 -1
  86. package/dist/plugin/wavesurfer.timeline.js +0 -649
  87. package/dist/plugin/wavesurfer.timeline.js.map +0 -1
  88. package/dist/plugin/wavesurfer.timeline.min.js +0 -7
  89. package/dist/plugin/wavesurfer.timeline.min.js.map +0 -1
  90. package/dist/wavesurfer-html-init.js +0 -381
  91. package/dist/wavesurfer-html-init.js.map +0 -1
  92. package/dist/wavesurfer-html-init.min.js +0 -7
  93. package/dist/wavesurfer-html-init.min.js.map +0 -1
  94. package/dist/wavesurfer.js +0 -6145
  95. package/dist/wavesurfer.js.map +0 -1
  96. package/dist/wavesurfer.min.js +0 -7
  97. package/dist/wavesurfer.min.js.map +0 -1
  98. package/src/drawer.canvasentry.js +0 -427
  99. package/src/drawer.js +0 -413
  100. package/src/drawer.multicanvas.js +0 -617
  101. package/src/html-init.js +0 -241
  102. package/src/mediaelement-webaudio.js +0 -77
  103. package/src/mediaelement.js +0 -443
  104. package/src/peakcache.js +0 -127
  105. package/src/plugin/cursor/index.js +0 -350
  106. package/src/plugin/elan/index.js +0 -307
  107. package/src/plugin/markers/index.js +0 -436
  108. package/src/plugin/mediasession/index.js +0 -94
  109. package/src/plugin/microphone/index.js +0 -415
  110. package/src/plugin/minimap/index.js +0 -403
  111. package/src/plugin/playhead/index.js +0 -226
  112. package/src/plugin/regions/index.js +0 -478
  113. package/src/plugin/regions/region.js +0 -875
  114. package/src/plugin/spectrogram/fft.js +0 -222
  115. package/src/plugin/spectrogram/index.js +0 -522
  116. package/src/plugin/timeline/index.js +0 -600
  117. package/src/util/absMax.js +0 -16
  118. package/src/util/clamp.js +0 -11
  119. package/src/util/fetch.js +0 -222
  120. package/src/util/frame.js +0 -13
  121. package/src/util/get-id.js +0 -22
  122. package/src/util/index.js +0 -14
  123. package/src/util/max.js +0 -16
  124. package/src/util/min.js +0 -16
  125. package/src/util/observer.js +0 -144
  126. package/src/util/orientation.js +0 -98
  127. package/src/util/prevent-click.js +0 -19
  128. package/src/util/request-animation-frame.js +0 -15
  129. package/src/util/silence-mode.js +0 -42
  130. package/src/util/style.js +0 -16
  131. package/src/wavesurfer.js +0 -1797
  132. package/src/webaudio.js +0 -779
@@ -1,222 +0,0 @@
1
- /* eslint-disable complexity, no-redeclare, no-var, one-var */
2
-
3
- /**
4
- * Calculate FFT - Based on https://github.com/corbanbrook/dsp.js
5
- *
6
- * @param {Number} bufferSize Buffer size
7
- * @param {Number} sampleRate Sample rate
8
- * @param {Function} windowFunc Window function
9
- * @param {Number} alpha Alpha channel
10
- */
11
- export default function FFT(bufferSize, sampleRate, windowFunc, alpha) {
12
- this.bufferSize = bufferSize;
13
- this.sampleRate = sampleRate;
14
- this.bandwidth = (2 / bufferSize) * (sampleRate / 2);
15
-
16
- this.sinTable = new Float32Array(bufferSize);
17
- this.cosTable = new Float32Array(bufferSize);
18
- this.windowValues = new Float32Array(bufferSize);
19
- this.reverseTable = new Uint32Array(bufferSize);
20
-
21
- this.peakBand = 0;
22
- this.peak = 0;
23
-
24
- var i;
25
- switch (windowFunc) {
26
- case 'bartlett':
27
- for (i = 0; i < bufferSize; i++) {
28
- this.windowValues[i] =
29
- (2 / (bufferSize - 1)) *
30
- ((bufferSize - 1) / 2 - Math.abs(i - (bufferSize - 1) / 2));
31
- }
32
- break;
33
- case 'bartlettHann':
34
- for (i = 0; i < bufferSize; i++) {
35
- this.windowValues[i] =
36
- 0.62 -
37
- 0.48 * Math.abs(i / (bufferSize - 1) - 0.5) -
38
- 0.38 * Math.cos((Math.PI * 2 * i) / (bufferSize - 1));
39
- }
40
- break;
41
- case 'blackman':
42
- alpha = alpha || 0.16;
43
- for (i = 0; i < bufferSize; i++) {
44
- this.windowValues[i] =
45
- (1 - alpha) / 2 -
46
- 0.5 * Math.cos((Math.PI * 2 * i) / (bufferSize - 1)) +
47
- (alpha / 2) *
48
- Math.cos((4 * Math.PI * i) / (bufferSize - 1));
49
- }
50
- break;
51
- case 'cosine':
52
- for (i = 0; i < bufferSize; i++) {
53
- this.windowValues[i] = Math.cos(
54
- (Math.PI * i) / (bufferSize - 1) - Math.PI / 2
55
- );
56
- }
57
- break;
58
- case 'gauss':
59
- alpha = alpha || 0.25;
60
- for (i = 0; i < bufferSize; i++) {
61
- this.windowValues[i] = Math.pow(
62
- Math.E,
63
- -0.5 *
64
- Math.pow(
65
- (i - (bufferSize - 1) / 2) /
66
- ((alpha * (bufferSize - 1)) / 2),
67
- 2
68
- )
69
- );
70
- }
71
- break;
72
- case 'hamming':
73
- for (i = 0; i < bufferSize; i++) {
74
- this.windowValues[i] =
75
- 0.54 -
76
- 0.46 * Math.cos((Math.PI * 2 * i) / (bufferSize - 1));
77
- }
78
- break;
79
- case 'hann':
80
- case undefined:
81
- for (i = 0; i < bufferSize; i++) {
82
- this.windowValues[i] =
83
- 0.5 * (1 - Math.cos((Math.PI * 2 * i) / (bufferSize - 1)));
84
- }
85
- break;
86
- case 'lanczoz':
87
- for (i = 0; i < bufferSize; i++) {
88
- this.windowValues[i] =
89
- Math.sin(Math.PI * ((2 * i) / (bufferSize - 1) - 1)) /
90
- (Math.PI * ((2 * i) / (bufferSize - 1) - 1));
91
- }
92
- break;
93
- case 'rectangular':
94
- for (i = 0; i < bufferSize; i++) {
95
- this.windowValues[i] = 1;
96
- }
97
- break;
98
- case 'triangular':
99
- for (i = 0; i < bufferSize; i++) {
100
- this.windowValues[i] =
101
- (2 / bufferSize) *
102
- (bufferSize / 2 - Math.abs(i - (bufferSize - 1) / 2));
103
- }
104
- break;
105
- default:
106
- throw Error("No such window function '" + windowFunc + "'");
107
- }
108
-
109
- var limit = 1;
110
- var bit = bufferSize >> 1;
111
- var i;
112
-
113
- while (limit < bufferSize) {
114
- for (i = 0; i < limit; i++) {
115
- this.reverseTable[i + limit] = this.reverseTable[i] + bit;
116
- }
117
-
118
- limit = limit << 1;
119
- bit = bit >> 1;
120
- }
121
-
122
- for (i = 0; i < bufferSize; i++) {
123
- this.sinTable[i] = Math.sin(-Math.PI / i);
124
- this.cosTable[i] = Math.cos(-Math.PI / i);
125
- }
126
-
127
- this.calculateSpectrum = function(buffer) {
128
- // Locally scope variables for speed up
129
- var bufferSize = this.bufferSize,
130
- cosTable = this.cosTable,
131
- sinTable = this.sinTable,
132
- reverseTable = this.reverseTable,
133
- real = new Float32Array(bufferSize),
134
- imag = new Float32Array(bufferSize),
135
- bSi = 2 / this.bufferSize,
136
- sqrt = Math.sqrt,
137
- rval,
138
- ival,
139
- mag,
140
- spectrum = new Float32Array(bufferSize / 2);
141
-
142
- var k = Math.floor(Math.log(bufferSize) / Math.LN2);
143
-
144
- if (Math.pow(2, k) !== bufferSize) {
145
- throw 'Invalid buffer size, must be a power of 2.';
146
- }
147
- if (bufferSize !== buffer.length) {
148
- throw 'Supplied buffer is not the same size as defined FFT. FFT Size: ' +
149
- bufferSize +
150
- ' Buffer Size: ' +
151
- buffer.length;
152
- }
153
-
154
- var halfSize = 1,
155
- phaseShiftStepReal,
156
- phaseShiftStepImag,
157
- currentPhaseShiftReal,
158
- currentPhaseShiftImag,
159
- off,
160
- tr,
161
- ti,
162
- tmpReal;
163
-
164
- for (var i = 0; i < bufferSize; i++) {
165
- real[i] =
166
- buffer[reverseTable[i]] * this.windowValues[reverseTable[i]];
167
- imag[i] = 0;
168
- }
169
-
170
- while (halfSize < bufferSize) {
171
- phaseShiftStepReal = cosTable[halfSize];
172
- phaseShiftStepImag = sinTable[halfSize];
173
-
174
- currentPhaseShiftReal = 1;
175
- currentPhaseShiftImag = 0;
176
-
177
- for (var fftStep = 0; fftStep < halfSize; fftStep++) {
178
- var i = fftStep;
179
-
180
- while (i < bufferSize) {
181
- off = i + halfSize;
182
- tr =
183
- currentPhaseShiftReal * real[off] -
184
- currentPhaseShiftImag * imag[off];
185
- ti =
186
- currentPhaseShiftReal * imag[off] +
187
- currentPhaseShiftImag * real[off];
188
-
189
- real[off] = real[i] - tr;
190
- imag[off] = imag[i] - ti;
191
- real[i] += tr;
192
- imag[i] += ti;
193
-
194
- i += halfSize << 1;
195
- }
196
-
197
- tmpReal = currentPhaseShiftReal;
198
- currentPhaseShiftReal =
199
- tmpReal * phaseShiftStepReal -
200
- currentPhaseShiftImag * phaseShiftStepImag;
201
- currentPhaseShiftImag =
202
- tmpReal * phaseShiftStepImag +
203
- currentPhaseShiftImag * phaseShiftStepReal;
204
- }
205
-
206
- halfSize = halfSize << 1;
207
- }
208
-
209
- for (var i = 0, N = bufferSize / 2; i < N; i++) {
210
- rval = real[i];
211
- ival = imag[i];
212
- mag = bSi * sqrt(rval * rval + ival * ival);
213
-
214
- if (mag > this.peak) {
215
- this.peakBand = i;
216
- this.peak = mag;
217
- }
218
- spectrum[i] = mag;
219
- }
220
- return spectrum;
221
- };
222
- }