nodejs-audio-visualizer 2.1.4 → 4.0.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.
package/dist/image.js CHANGED
@@ -1,4 +1,15 @@
1
1
  "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
2
13
  var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
14
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
15
  return new (P || (P = Promise))(function (resolve, reject) {
@@ -86,6 +97,112 @@ exports.drawRect = function (_a) {
86
97
  }
87
98
  }
88
99
  };
100
+ var buildQuadEdgeTable = function (points) {
101
+ var edges = [];
102
+ for (var i = 0; i < points.length; i++) {
103
+ var p1 = points[i];
104
+ var p2 = points[(i + 1) % points.length];
105
+ if (p1.y === p2.y)
106
+ continue; // Skip horizontal edges
107
+ var yMin = Math.min(p1.y, p2.y);
108
+ var yMax = Math.max(p1.y, p2.y);
109
+ var x = p1.y < p2.y ? p1.x : p2.x;
110
+ var dx = (p2.x - p1.x) / (p2.y - p1.y);
111
+ edges.push({ yMin: yMin, yMax: yMax, x: x, dx: dx });
112
+ }
113
+ return edges.sort(function (a, b) { return a.yMin - b.yMin; });
114
+ };
115
+ /**
116
+ * Fills a quadrilateral (4-sided polygon) using scan-line algorithm
117
+ * Only the outer edges are anti-aliased
118
+ */
119
+ exports.fillRect = function (_a) {
120
+ var imageDstBuffer = _a.imageDstBuffer, points = _a.points, color = _a.color, opacity = _a.opacity;
121
+ // Build edge table from all 4 vertices
122
+ var edgeTable = buildQuadEdgeTable(points);
123
+ if (edgeTable.length === 0)
124
+ return;
125
+ // Find the bounding box
126
+ var yMin = Math.min.apply(Math, points.map(function (p) { return p.y; }));
127
+ var yMax = Math.max.apply(Math, points.map(function (p) { return p.y; }));
128
+ // Active Edge Table for scan line algorithm
129
+ var activeEdges = [];
130
+ // Scan line algorithm: process each horizontal line
131
+ for (var y = Math.floor(yMin); y <= Math.ceil(yMax); y++) {
132
+ // Add edges that start at this scanline to AET
133
+ for (var _i = 0, edgeTable_1 = edgeTable; _i < edgeTable_1.length; _i++) {
134
+ var edge = edgeTable_1[_i];
135
+ if (Math.floor(edge.yMin) === y) {
136
+ activeEdges.push(__assign({}, edge));
137
+ }
138
+ }
139
+ // Remove edges that end at this scanline from AET
140
+ for (var i = activeEdges.length - 1; i >= 0; i--) {
141
+ if (Math.ceil(activeEdges[i].yMax) <= y) {
142
+ activeEdges.splice(i, 1);
143
+ }
144
+ }
145
+ // Sort active edges by x coordinate
146
+ activeEdges.sort(function (a, b) { return a.x - b.x; });
147
+ // Fill pixels between pairs of intersections
148
+ for (var i = 0; i < activeEdges.length; i += 2) {
149
+ if (i + 1 < activeEdges.length) {
150
+ var xStart = activeEdges[i].x;
151
+ var xEnd = activeEdges[i + 1].x;
152
+ // Anti-aliased rendering with sub-pixel precision
153
+ var xStartFloor = Math.floor(xStart);
154
+ var xEndCeil = Math.ceil(xEnd);
155
+ for (var x = xStartFloor; x < xEndCeil; x++) {
156
+ var pixelIndex = imageDstBuffer.shiftPos + y * imageDstBuffer.rowBytes + x * 3;
157
+ // Calculate coverage for anti-aliasing
158
+ var coverage = 1.0;
159
+ if (x === xStartFloor) {
160
+ // Left edge pixel - calculate fractional coverage
161
+ coverage = Math.min(1.0, 1.0 - (xStart - xStartFloor));
162
+ }
163
+ else if (x === xEndCeil - 1) {
164
+ // Right edge pixel - calculate fractional coverage
165
+ coverage = Math.min(1.0, xEnd - Math.floor(xEnd));
166
+ }
167
+ // Apply coverage to opacity for smooth edges
168
+ var effectiveOpacity = opacity * coverage;
169
+ var pixelColor = getRectPixelColor({
170
+ imageDstBuffer: imageDstBuffer,
171
+ pixelIndex: pixelIndex,
172
+ color: color,
173
+ opacity: effectiveOpacity,
174
+ });
175
+ imageDstBuffer.data[pixelIndex] = pixelColor.blue;
176
+ imageDstBuffer.data[pixelIndex + 1] = pixelColor.green;
177
+ imageDstBuffer.data[pixelIndex + 2] = pixelColor.red;
178
+ }
179
+ }
180
+ }
181
+ // Update x coordinates for next scanline (x' = x + dx)
182
+ for (var _b = 0, activeEdges_1 = activeEdges; _b < activeEdges_1.length; _b++) {
183
+ var edge = activeEdges_1[_b];
184
+ edge.x += edge.dx;
185
+ }
186
+ }
187
+ };
188
+ var getRectY = function (rotation, top, height, rectHeight) {
189
+ switch (rotation) {
190
+ case 'up':
191
+ return top + height - rectHeight;
192
+ case 'mirror':
193
+ return top + Math.trunc((height - rectHeight) / 2);
194
+ default:
195
+ return top;
196
+ }
197
+ };
198
+ var minRectHeight = 2;
199
+ var getRectHeight = function (height, spectrumValue) {
200
+ var rectHeight = Math.trunc(height * spectrumValue);
201
+ if (rectHeight < minRectHeight) {
202
+ return minRectHeight;
203
+ }
204
+ return rectHeight;
205
+ };
89
206
  var drawSpectrum = function (_a) {
90
207
  var imageDstBuffer = _a.imageDstBuffer, spectrum = _a.spectrum, size = _a.size, position = _a.position, rotation = _a.rotation, margin = _a.margin, color = _a.color, opacity = _a.opacity;
91
208
  var busWidth = Math.trunc(size.width / spectrum.length);
@@ -98,8 +215,8 @@ var drawSpectrum = function (_a) {
98
215
  throw new Error('Spectrum values must be in range from 0 to 1');
99
216
  }
100
217
  var rectX = left + busWidth * spectrumX;
101
- var rectHeight = Math.trunc(height * spectrumValue);
102
- var rectY = (rotation === 'up') ? top + height - rectHeight : top;
218
+ var rectHeight = getRectHeight(height, spectrumValue);
219
+ var rectY = getRectY(rotation, top, height, rectHeight);
103
220
  exports.drawRect({
104
221
  imageDstBuffer: imageDstBuffer,
105
222
  position: { x: rectX + margin, y: rectY },
@@ -109,22 +226,142 @@ var drawSpectrum = function (_a) {
109
226
  });
110
227
  }
111
228
  };
112
- exports.createVisualizerFrame = function (_a) {
113
- var backgroundImageBuffer = _a.backgroundImageBuffer, spectrum = _a.spectrum, size = _a.size, position = _a.position, rotation = _a.rotation, margin = _a.margin, color = _a.color, opacity = _a.opacity;
114
- var imageDstBuffer = Object.assign({}, backgroundImageBuffer);
115
- imageDstBuffer.data = Buffer.from(backgroundImageBuffer.data);
116
- var rgbSpectrumColor = (typeof color === 'string') ? hexToRgb(color) : color;
117
- drawSpectrum({
118
- imageDstBuffer: imageDstBuffer,
119
- spectrum: spectrum,
120
- size: size,
121
- position: position,
122
- rotation: rotation,
123
- margin: margin,
124
- color: rgbSpectrumColor,
125
- opacity: opacity,
126
- });
127
- return imageDstBuffer;
229
+ var calcCirclePoint = function (angleRadians, radius) {
230
+ var circleX = radius * Math.cos(angleRadians);
231
+ var circleY = radius * Math.sin(angleRadians);
232
+ return { x: circleX, y: circleY };
233
+ };
234
+ var lerp = function (start, end, t) {
235
+ return start + (end - start) * t;
236
+ };
237
+ var drawPolarSpectrum = function (_a) {
238
+ var imageDstBuffer = _a.imageDstBuffer, spectrum = _a.spectrum, centerX = _a.centerX, centerY = _a.centerY, innerRadius = _a.innerRadius, maxBarLength = _a.maxBarLength, barWidth = _a.barWidth, color = _a.color, opacity = _a.opacity;
239
+ var angleStep = (2 * Math.PI) / spectrum.length;
240
+ var innerLength = innerRadius * 2 * Math.PI;
241
+ var radiansPerPixel = 2 * Math.PI / innerLength;
242
+ var barWidthInRadians = radiansPerPixel * barWidth;
243
+ var spectrumAverage = spectrum.reduce(function (a, b) { return a + b; }, 0) / spectrum.length;
244
+ var scaleFactor = lerp(0.75, 1, spectrumAverage);
245
+ var scaledMaxOuterRadius = (innerRadius + maxBarLength) * scaleFactor;
246
+ var scaledInnerRadius = innerRadius * scaleFactor;
247
+ for (var i = 0; i < spectrum.length; i++) {
248
+ var currentSpectrumValue = spectrum[i] || 0;
249
+ var busRadius = lerp(scaledInnerRadius, scaledMaxOuterRadius, currentSpectrumValue);
250
+ var angle = i * angleStep;
251
+ var angleRadiansStart = angle;
252
+ var angleRadiansEnd = angle + barWidthInRadians;
253
+ var point1 = calcCirclePoint(angleRadiansStart, scaledInnerRadius);
254
+ var point2 = calcCirclePoint(angleRadiansStart, busRadius);
255
+ var point3 = calcCirclePoint(angleRadiansEnd, scaledInnerRadius);
256
+ var point4 = calcCirclePoint(angleRadiansEnd, busRadius);
257
+ exports.fillRect({
258
+ imageDstBuffer: imageDstBuffer,
259
+ points: [
260
+ { x: centerX + Math.round(point1.x), y: centerY + Math.round(point1.y) },
261
+ { x: centerX + Math.round(point2.x), y: centerY + Math.round(point2.y) },
262
+ { x: centerX + Math.round(point4.x), y: centerY + Math.round(point4.y) },
263
+ { x: centerX + Math.round(point3.x), y: centerY + Math.round(point3.y) },
264
+ ],
265
+ color: color,
266
+ opacity: opacity,
267
+ });
268
+ }
269
+ };
270
+ exports.createSpectrumVisualizerFrameGenerator = function () {
271
+ var prevSpectrum = null;
272
+ return function (_a) {
273
+ var backgroundImageBuffer = _a.backgroundImageBuffer, spectrum = _a.spectrum, size = _a.size, position = _a.position, rotation = _a.rotation, margin = _a.margin, color = _a.color, opacity = _a.opacity, spectrumEffect = _a.spectrumEffect;
274
+ var imageDstBuffer = Object.assign({}, backgroundImageBuffer);
275
+ imageDstBuffer.data = Buffer.from(backgroundImageBuffer.data);
276
+ var rgbSpectrumColor = (typeof color === 'string') ? hexToRgb(color) : color;
277
+ if (spectrumEffect === 'volume') {
278
+ drawSpectrum({
279
+ imageDstBuffer: imageDstBuffer,
280
+ spectrum: spectrum,
281
+ size: size,
282
+ position: { x: position.x + 2, y: position.y + 2 },
283
+ rotation: rotation,
284
+ margin: margin,
285
+ color: rgbSpectrumColor,
286
+ opacity: opacity * 0.5,
287
+ });
288
+ }
289
+ if (spectrumEffect === 'smooth' && prevSpectrum) {
290
+ drawSpectrum({
291
+ imageDstBuffer: imageDstBuffer,
292
+ spectrum: prevSpectrum,
293
+ size: size,
294
+ position: position,
295
+ rotation: rotation,
296
+ margin: margin,
297
+ color: rgbSpectrumColor,
298
+ opacity: opacity * 0.3,
299
+ });
300
+ }
301
+ drawSpectrum({
302
+ imageDstBuffer: imageDstBuffer,
303
+ spectrum: spectrum,
304
+ size: size,
305
+ position: position,
306
+ rotation: rotation,
307
+ margin: margin,
308
+ color: rgbSpectrumColor,
309
+ opacity: opacity,
310
+ });
311
+ prevSpectrum = spectrum;
312
+ return imageDstBuffer;
313
+ };
314
+ };
315
+ exports.createPolarVisualizerFrameGenerator = function () {
316
+ var prevSpectrum = null;
317
+ return function (_a) {
318
+ var backgroundImageBuffer = _a.backgroundImageBuffer, spectrum = _a.spectrum, centerX = _a.centerX, centerY = _a.centerY, innerRadius = _a.innerRadius, maxBarLength = _a.maxBarLength, barWidth = _a.barWidth, color = _a.color, opacity = _a.opacity, spectrumEffect = _a.spectrumEffect;
319
+ var imageDstBuffer = Object.assign({}, backgroundImageBuffer);
320
+ imageDstBuffer.data = Buffer.from(backgroundImageBuffer.data);
321
+ var rgbSpectrumColor = (typeof color === 'string') ? hexToRgb(color) : color;
322
+ // Draw shadow/volume effect
323
+ if (spectrumEffect === 'volume') {
324
+ drawPolarSpectrum({
325
+ imageDstBuffer: imageDstBuffer,
326
+ spectrum: spectrum,
327
+ centerX: centerX + 2,
328
+ centerY: centerY + 2,
329
+ innerRadius: innerRadius,
330
+ maxBarLength: maxBarLength,
331
+ barWidth: barWidth,
332
+ color: rgbSpectrumColor,
333
+ opacity: opacity * 0.5,
334
+ });
335
+ }
336
+ // Draw smooth/trail effect with previous frame
337
+ if (spectrumEffect === 'smooth' && prevSpectrum) {
338
+ drawPolarSpectrum({
339
+ imageDstBuffer: imageDstBuffer,
340
+ spectrum: prevSpectrum,
341
+ centerX: centerX,
342
+ centerY: centerY,
343
+ innerRadius: innerRadius,
344
+ maxBarLength: maxBarLength,
345
+ barWidth: barWidth,
346
+ color: rgbSpectrumColor,
347
+ opacity: opacity * 0.3,
348
+ });
349
+ }
350
+ // Draw main spectrum
351
+ drawPolarSpectrum({
352
+ imageDstBuffer: imageDstBuffer,
353
+ spectrum: spectrum,
354
+ centerX: centerX,
355
+ centerY: centerY,
356
+ innerRadius: innerRadius,
357
+ maxBarLength: maxBarLength,
358
+ barWidth: barWidth,
359
+ color: rgbSpectrumColor,
360
+ opacity: opacity,
361
+ });
362
+ prevSpectrum = spectrum;
363
+ return imageDstBuffer;
364
+ };
128
365
  };
129
366
  exports.convertToBmp = function (filePath) { return __awaiter(void 0, void 0, void 0, function () {
130
367
  return __generator(this, function (_a) {
package/dist/image.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"image.js","sourceRoot":"","sources":["../src/image.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,iCAA4C;AAE5C,8CAAwB;AAwBX,QAAA,SAAS,GAAE,UAAC,MAAc,EAAE,aAAqB,EAAE,MAAc;IAC5E,OAAA,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,aAAa,CAAC,GAAG,MAAM,GAAG,aAAa,CAAC;AAAjE,CAAiE,CAAC;AAEvD,QAAA,SAAS,GAAG,UAAC,EAIV;QAHd,gBAAK,EACL,8BAAY,EACZ,oCAAe;IAEf,OAAO;QACL,GAAG,EAAE,iBAAS,CAAC,KAAK,CAAC,GAAG,EAAE,YAAY,EAAE,eAAe,CAAC,GAAG,CAAC;QAC5D,KAAK,EAAE,iBAAS,CAAC,KAAK,CAAC,KAAK,EAAE,YAAY,EAAE,eAAe,CAAC,KAAK,CAAC;QAClE,IAAI,EAAE,iBAAS,CAAC,KAAK,CAAC,IAAI,EAAE,YAAY,EAAE,eAAe,CAAC,IAAI,CAAC;KAChE,CAAC;AACJ,CAAC,CAAC;AAEF,IAAM,iBAAiB,GAAG,UAAC,MAK1B;IAEG,IAAA,sCAAc,EACd,8BAAU,EACV,oBAAK,EACL,wBAAO,CACE;IACX,IAAI,OAAO,KAAK,CAAC,EAAE;QACjB,OAAO,KAAK,CAAC;KACd;IAED,IAAM,oBAAoB,GAAU;QAClC,IAAI,EAAE,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC;QACrC,KAAK,EAAE,cAAc,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;QAC1C,GAAG,EAAE,cAAc,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;KACzC,CAAC;IACF,IAAM,WAAW,GAAG,iBAAS,CAAC;QAC5B,KAAK,OAAA;QACL,YAAY,EAAE,OAAO;QACrB,eAAe,EAAE,oBAAoB;KACtC,CAAC,CAAC;IACH,OAAO,WAAW,CAAC;AACrB,CAAC,CAAC;AAUW,QAAA,QAAQ,GAAG,UAAC,EAMT;QALd,kCAAc,EACd,sBAAQ,EACR,cAAI,EACJ,gBAAK,EACL,oBAAO;IAEP,KAAK,IAAI,KAAK,GAAG,QAAQ,CAAC,CAAC,EAAE,KAAK,GAAG,QAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;QACtE,KAAK,IAAI,KAAK,GAAG,QAAQ,CAAC,CAAC,EAAE,KAAK,GAAG,QAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;YACrE,IAAM,UAAU,GAAG,cAAc,CAAC,QAAQ,GAAG,KAAK,GAAG,cAAc,CAAC,QAAQ,GAAG,KAAK,GAAG,CAAC,CAAC;YACzF,IAAM,UAAU,GAAG,iBAAiB,CAAC;gBACnC,cAAc,gBAAA;gBACd,UAAU,YAAA;gBACV,KAAK,OAAA;gBACL,OAAO,SAAA;aACR,CAAC,CAAC;YACH,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC;YAClD,cAAc,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC;YACvD,cAAc,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC;SACtD;KACF;AACH,CAAC,CAAC;AAaF,IAAM,YAAY,GAAG,UAAC,EASF;QARlB,kCAAc,EACd,sBAAQ,EACR,cAAI,EACJ,sBAAQ,EACR,sBAAQ,EACR,kBAAM,EACN,gBAAK,EACL,oBAAO;IAEP,IAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC1D,IAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IACpC,IAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IACnC,IAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAEvC,KAAK,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE;QAChE,IAAM,aAAa,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC;QAC1C,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC,EAAE;YAC9C,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;SACjE;QAED,IAAM,KAAK,GAAG,IAAI,GAAG,QAAQ,GAAG,SAAS,CAAC;QAC1C,IAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,aAAa,CAAC,CAAC;QACtD,IAAM,KAAK,GAAG,CAAC,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC;QACpE,gBAAQ,CAAC;YACP,cAAc,gBAAA;YACd,QAAQ,EAAE,EAAE,CAAC,EAAE,KAAK,GAAG,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE;YACzC,IAAI,EAAE,EAAE,KAAK,EAAE,QAAQ,GAAG,MAAM,GAAG,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE;YAC1D,KAAK,OAAA;YACL,OAAO,SAAA;SACR,CAAC,CAAC;KACJ;AACH,CAAC,CAAC;AAaW,QAAA,qBAAqB,GAAG,UAAC,EAST;QAR3B,gDAAqB,EACrB,sBAAQ,EACR,cAAI,EACJ,sBAAQ,EACR,sBAAQ,EACR,kBAAM,EACN,gBAAK,EACL,oBAAO;IAEP,IAAM,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,qBAAqB,CAAC,CAAC;IAChE,cAAc,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC;IAE9D,IAAM,gBAAgB,GAAG,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IAC/E,YAAY,CAAC;QACX,cAAc,gBAAA;QACd,QAAQ,UAAA;QACR,IAAI,MAAA;QACJ,QAAQ,UAAA;QACR,QAAQ,UAAA;QACR,MAAM,QAAA;QACN,KAAK,EAAE,gBAAgB;QACvB,OAAO,SAAA;KACR,CAAC,CAAC;IACH,OAAO,cAAc,CAAC;AACxB,CAAC,CAAC;AAEW,QAAA,YAAY,GAAG,UAAO,QAAgB;;QACjD,sBAAA,IAAI,OAAO,CAAS,UAAO,OAAO,EAAE,MAAM;;;;;;4BAExB,qBAAM,cAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAA;;4BAAjC,KAAK,GAAG,SAAyB;4BACvC,KAAK,CAAC,SAAS,CAAC,WAAW,EAAE,UAAC,GAAG,EAAE,KAAK;gCACtC,IAAI,GAAG,EAAE;oCACP,MAAM,CAAC,GAAG,CAAC,CAAC;iCACb;gCACD,OAAO,CAAC,KAAK,CAAC,CAAC;4BACjB,CAAC,CAAC,CAAC;;;;4BAEH,MAAM,IAAI,KAAK,CAAC,0CAAwC,QAAU,CAAC,CAAC;;;;iBAEvE,CAAC,EAAA;;KAAA,CAAC;AAEQ,QAAA,UAAU,GAAG,UAAC,MAAc,IAAK,OAAA,eAAM,CAAC,MAAM,CAAC,EAAd,CAAc,CAAC;AAEhD,QAAA,aAAa,GAAG,UAAC,KAAiB;IAC7C,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,IAAI,QAAQ,GAAG,CAAC,CAAC;IACjB,IAAI,MAAM,GAAG,CAAC,CAAC;IAEf,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;QACjD,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;YAChD,IAAM,GAAG,GAAG,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;YAE/C,OAAO,IAAI,KAAK,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;YAC/B,QAAQ,IAAI,KAAK,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;YAChC,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;SAC/B;KACF;IAED,IAAM,WAAW,GAAG,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC;IAC/C,OAAO;QACL,GAAG,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,WAAW,CAAC;QAC7B,KAAK,EAAE,CAAC,CAAC,CAAC,QAAQ,GAAG,WAAW,CAAC;QACjC,IAAI,EAAE,CAAC,CAAC,CAAC,OAAO,GAAG,WAAW,CAAC;KAChC,CAAC;AACJ,CAAC,CAAC;AAEW,QAAA,WAAW,GAAG,UAAC,KAAY;IACtC,OAAA,CAAC,EAAE,GAAG,EAAE,GAAG,GAAG,KAAK,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,GAAG,KAAK,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;AAA5E,CAA4E,CAAC;AAE/E,IAAM,QAAQ,GAAG,UAAC,GAAW;IAC3B,IAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC9C,IAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAChD,IAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAE/C,OAAO,EAAE,GAAG,KAAA,EAAE,KAAK,OAAA,EAAE,IAAI,MAAA,EAAE,CAAC;AAC9B,CAAC,CAAC"}
1
+ {"version":3,"file":"image.js","sourceRoot":"","sources":["../src/image.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  /// <reference types="node" />
2
- import { rotationAliasValues } from './config';
2
+ import { rotationAliasValues, SpectrumEffect } from './config';
3
3
  import { Color } from './image';
4
4
  export declare const PCM_FORMAT: {
5
5
  bit: number;
@@ -22,6 +22,17 @@ export interface Config {
22
22
  x?: number | PositionAliasName;
23
23
  y?: number | PositionAliasName;
24
24
  rotation?: RotationAliasName;
25
+ effect?: SpectrumEffect;
26
+ color?: Color | string;
27
+ opacity?: string;
28
+ };
29
+ polar?: {
30
+ x?: number | PositionAliasName;
31
+ y?: number | PositionAliasName;
32
+ innerRadius?: number;
33
+ maxBarLength?: number;
34
+ barWidth?: number;
35
+ effect?: SpectrumEffect;
25
36
  color?: Color | string;
26
37
  opacity?: string;
27
38
  };
package/dist/index.js CHANGED
@@ -58,15 +58,48 @@ exports.PCM_FORMAT = {
58
58
  parseFunction: audio_1.bufferToUInt8
59
59
  };
60
60
  var FFMPEG_FORMAT = "" + exports.PCM_FORMAT.sign + exports.PCM_FORMAT.bit;
61
+ var PROCESSING_BUFFER_SIZE = Math.pow(2, 12);
61
62
  var sleep = function (timeout) {
62
63
  return new Promise(function (resolve) { return setTimeout(resolve, timeout); });
63
64
  };
65
+ var createVisualizerFrameGenerator = function (config, backgroundImage, spectrumBusMargin) {
66
+ if (!config.outVideo.spectrum) {
67
+ var createPolarVisualizerFrame_1 = image_1.createPolarVisualizerFrameGenerator();
68
+ var polarX_1 = config_1.getPolarXAbsolute(config, backgroundImage.width);
69
+ var polarY_1 = config_1.getPolarYAbsolute(config, backgroundImage.height);
70
+ var polarInnerRadius_1 = config_1.getPolarInnerRadius(config);
71
+ var polarMaxBarLength_1 = config_1.getPolarMaxBarLength(config);
72
+ var polarBarWidth_1 = config_1.getPolarBarWidth(config);
73
+ var polarColor_1 = config_1.getPolarColor(config) || image_1.invertColor(image_1.getImageColor(backgroundImage));
74
+ var polarEffect_1 = config_1.getPolarEffect(config);
75
+ var polarOpacity_1 = config_1.getPolarOpacityParsed(config);
76
+ return function (params) {
77
+ return createPolarVisualizerFrame_1(__assign(__assign({}, params), { centerX: polarX_1, centerY: polarY_1, innerRadius: polarInnerRadius_1, maxBarLength: polarMaxBarLength_1, barWidth: polarBarWidth_1, color: polarColor_1, opacity: polarOpacity_1, spectrumEffect: polarEffect_1 }));
78
+ };
79
+ }
80
+ var createPolarVisualizerFrame = image_1.createSpectrumVisualizerFrameGenerator();
81
+ var spectrumWidth = config_1.getSpectrumWidthAbsolute(config, backgroundImage.width);
82
+ var spectrumHeight = config_1.getSpectrumHeightAbsolute(config, backgroundImage.height);
83
+ var spectrumX = config_1.getSpectrumXAbsolute(config, spectrumWidth, backgroundImage.width);
84
+ var spectrumY = config_1.getSpectrumYAbsolute(config, spectrumHeight, backgroundImage.height);
85
+ var spectrumRotation = config_1.getSpectrumRotation(config);
86
+ var spectrumColor = config_1.getSpectrumColor(config) || image_1.invertColor(image_1.getImageColor(backgroundImage));
87
+ var spectrumEffect = config_1.getSpectrumEffect(config);
88
+ var spectrumOpacity = config_1.getSpectrumOpacityParsed(config);
89
+ return function (params) {
90
+ return createPolarVisualizerFrame(__assign(__assign({}, params), { size: { width: spectrumWidth, height: spectrumHeight }, position: { x: spectrumX, y: spectrumY }, rotation: spectrumRotation, margin: spectrumBusMargin, color: spectrumColor, opacity: spectrumOpacity, spectrumEffect: spectrumEffect }));
91
+ };
92
+ };
64
93
  exports.renderAudioVisualizer = function (config, onProgress, shouldStop) {
65
94
  return new Promise(function (resolve) { return __awaiter(void 0, void 0, void 0, function () {
66
- var audioFilePath, backgroundImagePath, outVideoPath, backgroundImageBmpBuffer, backgroundImage, audioReader, audioBuffer, sampleRate, spectrumBusesCount, spectrumBusMargin, FPS, spectrumWidth, spectrumHeight, spectrumX, spectrumY, spectrumRotation, spectrumColor, spectrumOpacity, ffmpeg_cfr, ffmpeg_preset, frame_processing_delay, audioDuration, framesCount, audioDataStep, ffmpegVideoWriter, bpmEncoder, backgroundImageBuffer, processSpectrum, _loop_1, i, state_1;
95
+ var audioFilePath, backgroundImagePath, outVideoPath, backgroundImageBmpBuffer, backgroundImage, audioReader, audioBuffer, sampleRate, spectrumBusMargin, FPS, ffmpeg_cfr, ffmpeg_preset, frame_processing_delay, createVisualizerFrame, audioDuration, framesCount, audioDataStep, processingBuffer, ffmpegVideoWriter, bpmEncoder, backgroundImageBuffer, skipFramesCount, processSpectrum, i, currentFrameData, audioDataParser, spectrum, commonVisualizerFrameProps, frameImage, isFrameProcessed;
67
96
  return __generator(this, function (_a) {
68
97
  switch (_a.label) {
69
98
  case 0:
99
+ // Validate that only one visualizer type is specified
100
+ if (config.outVideo.spectrum && config.outVideo.polar) {
101
+ throw new Error('Cannot use both "spectrum" and "polar" options. Please specify only one visualizer type.');
102
+ }
70
103
  audioFilePath = config_1.getAudioFilePath(config);
71
104
  backgroundImagePath = config_1.getBackgroundImagePath(config);
72
105
  outVideoPath = config_1.getOutVideoPath(config);
@@ -82,80 +115,55 @@ exports.renderAudioVisualizer = function (config, onProgress, shouldStop) {
82
115
  if (!sampleRate) {
83
116
  throw new Error('ffmpeg didn\'t show audio sample rate');
84
117
  }
85
- spectrumBusesCount = config_1.getSpectrumBusesCount();
86
118
  spectrumBusMargin = config_1.getSpectrumBusMargin();
87
119
  FPS = config_1.getFPS(config);
88
- spectrumWidth = config_1.getSpectrumWidthAbsolute(config, backgroundImage.width);
89
- spectrumHeight = config_1.getSpectrumHeightAbsolute(config, backgroundImage.height);
90
- spectrumX = config_1.getSpectrumXAbsolute(config, spectrumWidth, backgroundImage.width);
91
- spectrumY = config_1.getSpectrumYAbsolute(config, spectrumHeight, backgroundImage.height);
92
- spectrumRotation = config_1.getSpectrumRotation(config);
93
- spectrumColor = config_1.getSpectrumColor(config) ||
94
- image_1.invertColor(image_1.getImageColor(backgroundImage));
95
- spectrumOpacity = config_1.getSpectrumOpacityParsed(config);
96
120
  ffmpeg_cfr = config_1.getFfmpeg_cfr(config);
97
121
  ffmpeg_preset = config_1.getFfmpeg_preset(config);
98
122
  frame_processing_delay = config_1.getFrame_processing_delay(config);
123
+ createVisualizerFrame = createVisualizerFrameGenerator(config, backgroundImage, spectrumBusMargin);
99
124
  audioDuration = audioBuffer.length / sampleRate;
100
125
  framesCount = Math.trunc(audioDuration * FPS);
101
126
  audioDataStep = Math.trunc(audioBuffer.length / framesCount);
127
+ processingBuffer = new Float32Array(PROCESSING_BUFFER_SIZE).fill(0);
102
128
  ffmpegVideoWriter = video_1.spawnFfmpegVideoWriter(__assign(__assign(__assign({ audioFilename: audioFilePath, videoFileName: outVideoPath, fps: FPS }, (!!onProgress && { onStderr: video_1.getProgress(video_1.calculateProgress(framesCount + 1, onProgress)) })), (ffmpeg_cfr && { crf: ffmpeg_cfr })), (ffmpeg_preset && { preset: ffmpeg_preset })));
103
129
  ffmpegVideoWriter.on('exit', function (code) { return resolve(code); });
104
130
  bpmEncoder = bpmEncoder_1.createBpmEncoder({ width: backgroundImage.width, height: backgroundImage.height });
105
131
  backgroundImageBuffer = bpmEncoder(backgroundImage.data);
106
- processSpectrum = audio_1.createSpectrumsProcessor(spectrumBusesCount);
107
- _loop_1 = function (i) {
108
- var audioDataParser, spectrum, frameImage, isFrameProcessed;
109
- return __generator(this, function (_a) {
110
- switch (_a.label) {
111
- case 0:
112
- audioDataParser = function () {
113
- return exports.PCM_FORMAT.parseFunction(audioBuffer, i * audioDataStep, i * audioDataStep + audioDataStep);
114
- };
115
- spectrum = processSpectrum(i, audioDataParser);
116
- frameImage = image_1.createVisualizerFrame({
117
- backgroundImageBuffer: backgroundImageBuffer,
118
- spectrum: spectrum,
119
- size: { width: spectrumWidth, height: spectrumHeight },
120
- position: { x: spectrumX, y: spectrumY },
121
- rotation: spectrumRotation,
122
- margin: spectrumBusMargin,
123
- color: spectrumColor,
124
- opacity: spectrumOpacity,
125
- });
126
- isFrameProcessed = ffmpegVideoWriter.stdin.write(frameImage.data);
127
- if (!!isFrameProcessed) return [3 /*break*/, 2];
128
- return [4 /*yield*/, video_1.waitDrain(ffmpegVideoWriter.stdin)];
129
- case 1:
130
- _a.sent();
131
- _a.label = 2;
132
- case 2:
133
- if (shouldStop && shouldStop()) {
134
- return [2 /*return*/, "break"];
135
- }
136
- if (!frame_processing_delay) return [3 /*break*/, 4];
137
- return [4 /*yield*/, sleep(frame_processing_delay)];
138
- case 3:
139
- _a.sent();
140
- _a.label = 4;
141
- case 4: return [2 /*return*/];
142
- }
143
- });
144
- };
132
+ skipFramesCount = FPS < 45 ? 1 : 2;
133
+ processSpectrum = audio_1.createSpectrumsProcessor(sampleRate, skipFramesCount);
145
134
  i = 0;
146
135
  _a.label = 3;
147
136
  case 3:
148
- if (!(i < framesCount)) return [3 /*break*/, 6];
149
- return [5 /*yield**/, _loop_1(i)];
137
+ if (!(i < framesCount)) return [3 /*break*/, 8];
138
+ currentFrameData = exports.PCM_FORMAT.parseFunction(audioBuffer, i * audioDataStep, i * audioDataStep + audioDataStep);
139
+ processingBuffer.copyWithin(0, currentFrameData.length);
140
+ processingBuffer.set(currentFrameData, PROCESSING_BUFFER_SIZE - currentFrameData.length);
141
+ audioDataParser = function () { return Array.from(processingBuffer); };
142
+ spectrum = processSpectrum(audioDataParser);
143
+ commonVisualizerFrameProps = {
144
+ backgroundImageBuffer: backgroundImageBuffer,
145
+ spectrum: spectrum,
146
+ };
147
+ frameImage = createVisualizerFrame(commonVisualizerFrameProps);
148
+ isFrameProcessed = ffmpegVideoWriter.stdin.write(frameImage.data);
149
+ if (!!isFrameProcessed) return [3 /*break*/, 5];
150
+ return [4 /*yield*/, video_1.waitDrain(ffmpegVideoWriter.stdin)];
150
151
  case 4:
151
- state_1 = _a.sent();
152
- if (state_1 === "break")
153
- return [3 /*break*/, 6];
152
+ _a.sent();
154
153
  _a.label = 5;
155
154
  case 5:
155
+ if (shouldStop && shouldStop()) {
156
+ return [3 /*break*/, 8];
157
+ }
158
+ if (!frame_processing_delay) return [3 /*break*/, 7];
159
+ return [4 /*yield*/, sleep(frame_processing_delay)];
160
+ case 6:
161
+ _a.sent();
162
+ _a.label = 7;
163
+ case 7:
156
164
  i++;
157
165
  return [3 /*break*/, 3];
158
- case 6:
166
+ case 8:
159
167
  ffmpegVideoWriter.stdin.end();
160
168
  return [2 /*return*/];
161
169
  }
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nodejs-audio-visualizer",
3
- "version": "2.1.4",
3
+ "version": "4.0.0",
4
4
  "description": "",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -9,7 +9,7 @@
9
9
  "src/"
10
10
  ],
11
11
  "scripts": {
12
- "test": "mocha -r ts-node/register src/**/*.test.ts",
12
+ "test": "ts-mocha -p tsconfig.json src/**/*.test.ts",
13
13
  "dev": "ts-node-dev --respawn --transpileOnly ./example/example.ts",
14
14
  "prebuild": "rimraf dist",
15
15
  "build": "tsc -m CommonJS",
@@ -37,6 +37,7 @@
37
37
  "mocha": "^6.2.3",
38
38
  "rimraf": "^3.0.2",
39
39
  "sinon": "^7.5.0",
40
+ "ts-mocha": "^11.1.0",
40
41
  "ts-node": "^8.5.0",
41
42
  "ts-node-dev": "^1.0.0-pre.43",
42
43
  "typescript": "^3.7.2"
@@ -54,6 +55,7 @@
54
55
  "@types/sinon": "^7.5.0",
55
56
  "bmp-js": "^0.1.0",
56
57
  "ffmpeg-static": "^5.2.0",
58
+ "fft-js": "^0.0.12",
57
59
  "jimp": "^0.9.3"
58
60
  }
59
61
  }