nodejs-audio-visualizer 3.0.0 → 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/README.md CHANGED
@@ -15,7 +15,7 @@ const config = {
15
15
  outVideo: {
16
16
  path: 'media/out.mp4',
17
17
  fps: 25, // Default value: 30
18
- spectrum: { // Audio spectrum configuration. Optional.
18
+ spectrum: { // Audio spectrum configuration (linear bar visualizer). Optional. If neither 'spectrum' nor 'polar' is specified, 'polar' is used by default.
19
19
  width: '30%', // 30% of background image width. Default value: 33%. Also you can use absolute values. For example, value 300 for 300 pixels width.
20
20
  height: '15%', // 15% of background image height. Default value: 160. Also you can use absolute values. For example, value 300 for 300 pixels height.
21
21
  x: 'center', // Available values: 'left', 'center', right'. Also you can use absolute number values. For example, value 300 for 300 pixels x.
@@ -24,6 +24,16 @@ const config = {
24
24
  effect: 'volume', // Available values: 'volume', 'smooth', undefined. Default value: undefined.
25
25
  color: '#cccc99', // Default value: inverted color of background image
26
26
  opacity: '70%' // Default value: '80%'.
27
+ },
28
+ polar: { // Polar/circular audio spectrum configuration (DEFAULT). Optional. Use either 'spectrum' or 'polar', not both.
29
+ x: 'center', // Available values: 'left', 'center', 'right'. Also you can use absolute number values. Default value: 'center'.
30
+ y: 'middle', // Available values: 'top', 'middle', 'bottom'. Also you can use absolute number values. Default value: 'middle'.
31
+ innerRadius: 100, // Inner radius of the circular spectrum in pixels. Default value: 100.
32
+ maxBarLength: 160, // Maximum bar length in pixels. Default value: 160.
33
+ barWidth: 15, // Width of each bar in pixels. Default value: 15.
34
+ effect: 'volume', // Available values: 'volume', 'smooth', undefined. Default value: undefined.
35
+ color: '#cccc99', // Default value: inverted color of background image
36
+ opacity: '70%' // Default value: '80%'.
27
37
  }
28
38
  },
29
39
  tweaks: { // Optional
package/dist/config.d.ts CHANGED
@@ -8,6 +8,11 @@ export declare const defaults: {
8
8
  spectrumRotation: string;
9
9
  spectrumBusMargin: number;
10
10
  spectrumOpacity: string;
11
+ polarX: string;
12
+ polarY: string;
13
+ polarInnerRadius: number;
14
+ polarMaxBarLength: number;
15
+ polarBarWidth: number;
11
16
  };
12
17
  export declare type SpectrumEffect = 'volume' | 'smooth';
13
18
  export declare const rotationAliasValues: readonly ["up", "down", "mirror"];
@@ -30,3 +35,12 @@ export declare const getSpectrumOpacityParsed: (config: Config) => number;
30
35
  export declare const getFfmpeg_cfr: (config: Config) => string | undefined;
31
36
  export declare const getFfmpeg_preset: (config: Config) => string | undefined;
32
37
  export declare const getFrame_processing_delay: (config: Config) => number | undefined;
38
+ export declare const getPolarXAbsolute: (config: Config, backgroundImageWidth: number) => number;
39
+ export declare const getPolarYAbsolute: (config: Config, backgroundImageHeight: number) => number;
40
+ export declare const getPolarInnerRadius: (config: Config) => number;
41
+ export declare const getPolarMaxBarLength: (config: Config) => number;
42
+ export declare const getPolarBarWidth: (config: Config) => number;
43
+ export declare const getPolarEffect: (config: Config) => "smooth" | "volume" | undefined;
44
+ export declare const getPolarColor: (config: Config) => string | import("./image").Color | undefined;
45
+ export declare const getPolarOpacity: (config: Config) => string;
46
+ export declare const getPolarOpacityParsed: (config: Config) => number;
package/dist/config.js CHANGED
@@ -14,6 +14,11 @@ exports.defaults = {
14
14
  spectrumRotation: 'mirror',
15
15
  spectrumBusMargin: 12,
16
16
  spectrumOpacity: '80%',
17
+ polarX: 'center',
18
+ polarY: 'middle',
19
+ polarInnerRadius: 100,
20
+ polarMaxBarLength: 160,
21
+ polarBarWidth: 15,
17
22
  };
18
23
  var postitionAliases = [
19
24
  { name: 'left', value: 0 },
@@ -182,4 +187,91 @@ exports.getFfmpeg_preset = function (config) {
182
187
  exports.getFrame_processing_delay = function (config) {
183
188
  return config.tweaks && config.tweaks.frame_processing_delay;
184
189
  };
190
+ // Polar visualizer config getters
191
+ var getPolarX = function (config) {
192
+ return parseNumberIfPossible((config.outVideo.polar && config.outVideo.polar.x) ||
193
+ exports.defaults.polarX);
194
+ };
195
+ var getPolarY = function (config) {
196
+ return parseNumberIfPossible((config.outVideo.polar && config.outVideo.polar.y) ||
197
+ exports.defaults.polarY);
198
+ };
199
+ exports.getPolarXAbsolute = function (config, backgroundImageWidth) {
200
+ var polarX = getPolarX(config);
201
+ if (typeof polarX !== 'string') {
202
+ return polarX;
203
+ }
204
+ try {
205
+ var polarXParsed = parsePositionAlias(polarX);
206
+ if (polarXParsed.value === 0) {
207
+ var polarLength = exports.getPolarMaxBarLength(config);
208
+ var polarRadius = exports.getPolarInnerRadius(config);
209
+ return polarRadius + polarLength;
210
+ }
211
+ if (polarXParsed.value === 1) {
212
+ var polarLength = exports.getPolarMaxBarLength(config);
213
+ var polarRadius = exports.getPolarInnerRadius(config);
214
+ return backgroundImageWidth - polarRadius - polarLength;
215
+ }
216
+ return polarXParsed.value * backgroundImageWidth;
217
+ }
218
+ catch (_a) {
219
+ throw new Error("Invalid polar x value: " + polarX + ". Valid values: " + getValidPositionAliasValues() + ".");
220
+ }
221
+ };
222
+ exports.getPolarYAbsolute = function (config, backgroundImageHeight) {
223
+ var polarY = getPolarY(config);
224
+ if (typeof polarY !== 'string') {
225
+ return polarY;
226
+ }
227
+ try {
228
+ var polarYParsed = parsePositionAlias(polarY);
229
+ if (polarYParsed.value === 0) {
230
+ var polarLength = exports.getPolarMaxBarLength(config);
231
+ var polarRadius = exports.getPolarInnerRadius(config);
232
+ return polarRadius + polarLength;
233
+ }
234
+ if (polarYParsed.value === 1) {
235
+ var polarLength = exports.getPolarMaxBarLength(config);
236
+ var polarRadius = exports.getPolarInnerRadius(config);
237
+ return backgroundImageHeight - polarRadius - polarLength;
238
+ }
239
+ return polarYParsed.value * backgroundImageHeight;
240
+ }
241
+ catch (_a) {
242
+ throw new Error("Invalid polar y value: " + polarY + ". Valid values: " + getValidPositionAliasValues() + ".");
243
+ }
244
+ };
245
+ exports.getPolarInnerRadius = function (config) {
246
+ return (config.outVideo.polar && config.outVideo.polar.innerRadius) ||
247
+ exports.defaults.polarInnerRadius;
248
+ };
249
+ exports.getPolarMaxBarLength = function (config) {
250
+ return (config.outVideo.polar && config.outVideo.polar.maxBarLength) ||
251
+ exports.defaults.polarMaxBarLength;
252
+ };
253
+ exports.getPolarBarWidth = function (config) {
254
+ return (config.outVideo.polar && config.outVideo.polar.barWidth) ||
255
+ exports.defaults.polarBarWidth;
256
+ };
257
+ exports.getPolarEffect = function (config) { var _a; return (_a = config.outVideo.polar) === null || _a === void 0 ? void 0 : _a.effect; };
258
+ exports.getPolarColor = function (config) {
259
+ return config.outVideo.polar && config.outVideo.polar.color;
260
+ };
261
+ exports.getPolarOpacity = function (config) {
262
+ return (config.outVideo.polar && config.outVideo.polar.opacity) ||
263
+ exports.defaults.spectrumOpacity;
264
+ };
265
+ exports.getPolarOpacityParsed = function (config) {
266
+ var polarOpacity = exports.getPolarOpacity(config);
267
+ if (!exports.checkIsPercentValue(polarOpacity)) {
268
+ throw new Error("Invalid polar opacity value: '" + polarOpacity + "'. Use string percent value, for example '80%'.");
269
+ }
270
+ var percentValue = parseInt(polarOpacity);
271
+ if ((percentValue < 0) ||
272
+ (percentValue > 100)) {
273
+ throw new Error("Invalid polar opacity value: '" + polarOpacity + "'. Percent values must be in range from '0%' to '100%'.");
274
+ }
275
+ return percentValue / 100;
276
+ };
185
277
  //# sourceMappingURL=config.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":";;;;;AAAA,8CAAwB;AAExB,6BAAwC;AAE3B,QAAA,QAAQ,GAAG;IACtB,GAAG,EAAE,EAAE;IACP,aAAa,EAAE,KAAK;IACpB,cAAc,EAAE,GAAG;IACnB,SAAS,EAAE,QAAQ;IACnB,SAAS,EAAE,QAAQ;IACnB,gBAAgB,EAAE,QAAQ;IAC1B,iBAAiB,EAAE,EAAE;IACrB,eAAe,EAAE,KAAK;IACtB,MAAM,EAAE,QAAQ;IAChB,MAAM,EAAE,QAAQ;IAChB,gBAAgB,EAAE,GAAG;IACrB,iBAAiB,EAAE,GAAG;IACtB,aAAa,EAAE,EAAE;CAClB,CAAC;AAWF,IAAM,gBAAgB,GAAoB;IACxC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE;IAC1B,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE;IAC9B,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE;IAC3B,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE;IACzB,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE;IAC9B,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE;CAC7B,CAAC;AAEW,QAAA,mBAAmB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAU,CAAC;AAExD,QAAA,mBAAmB,GAAG,UAAC,KAAa;IAC/C,OAAA,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;AAA1B,CAA0B,CAAA;AAEf,QAAA,gBAAgB,GAAG,UAAC,MAAc;IAC7C,OAAA,cAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC;AAA/B,CAA+B,CAAC;AAErB,QAAA,sBAAsB,GAAG,UAAC,MAAc;IACnD,OAAA,cAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC;AAA/B,CAA+B,CAAC;AAErB,QAAA,eAAe,GAAG,UAAC,MAAc;IAC5C,OAAA,cAAI,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;AAAlC,CAAkC,CAAC;AAExB,QAAA,MAAM,GAAG,UAAC,MAAc;IACnC,OAAA,MAAM,CAAC,QAAQ,CAAC,GAAG,IAAI,gBAAQ,CAAC,GAAG;AAAnC,CAAmC,CAAC;AAEzB,QAAA,oBAAoB,GAAG,cAAM,OAAA,gBAAQ,CAAC,iBAAiB,EAA1B,CAA0B,CAAC;AAErE,IAAM,gBAAgB,GAAG,UAAC,MAAc;IACtC,OAAA,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC;QAC5D,gBAAQ,CAAC,aAAa;AADtB,CACsB,CAAC;AAEZ,QAAA,iBAAiB,GAAG,UAAC,MAAc,yBAC9C,MAAM,CAAC,QAAQ,CAAC,QAAQ,0CAAE,MAAM,GAAA,CAAC;AAEnC,IAAM,uBAAuB,GAAG,UAC9B,YAA+B,EAC/B,mBAA2B,EAC3B,SAAiB;IAEjB,IAAI,OAAO,YAAY,KAAK,QAAQ,EAAE;QACpC,OAAO,YAAY,CAAC;KACrB;IACD,IAAM,cAAc,GAAG,2BAAmB,CAAC,YAAY,CAAC,CAAC;IACzD,IAAI,CAAC,cAAc,EAAE;QACnB,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC,CAAC;KAC5E;IACD,IAAM,YAAY,GAAG,QAAQ,CAAC,YAAY,CAAC,GAAG,GAAG,CAAC;IAClD,OAAO,mBAAmB,GAAG,YAAY,CAAC;AAC5C,CAAC,CAAC;AAEF,IAAM,gCAAgC,GAAG,UACvC,SAAiB,EAAE,KAAwB;IAE3C,OAAA,sBAAoB,SAAS,iBAAY,KAAK,wEAAqE;AAAnH,CAAmH,CAAA;AAExG,QAAA,wBAAwB,GAAG,UACtC,MAAc,EAAE,oBAA4B;IAE5C,IAAM,aAAa,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAC/C,IAAM,qBAAqB,GAAG,uBAAuB,CAAC,aAAa,EAAE,oBAAoB,EAAE,OAAO,CAAC,CAAC;IACpG,IAAM,0BAA0B,GAC9B,IAAI,CAAC,KAAK,CAAC,qBAAqB,GAAG,qBAAe,CAAC,MAAM,CAAC,GAAG,gBAAQ,CAAC,iBAAiB,GAAG,CAAC,CAAC;IAC9F,IAAI,0BAA0B,IAAI,CAAC,EAAE;QACnC,MAAM,IAAI,KAAK,CAAC,qBAAmB,aAAa,oBAAiB,CAAC,CAAC;KACpE;IACD,OAAO,qBAAqB,CAAC;AAC/B,CAAC,CAAC;AAEF,IAAM,iBAAiB,GAAG,UAAC,MAAc;IACvC,OAAA,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC;QAC7D,gBAAQ,CAAC,cAAc;AADvB,CACuB,CAAC;AAEb,QAAA,yBAAyB,GAAG,UACvC,MAAc,EAAE,qBAA6B;IAE7C,IAAM,cAAc,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC;IACjD,OAAO,uBAAuB,CAAC,cAAc,EAAE,qBAAqB,EAAE,QAAQ,CAAC,CAAC;AAClF,CAAC,CAAC;AAEF,IAAM,YAAY,GAAG,UAAC,MAAc;IAClC,OAAA,qBAAqB,CACnB,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;QACxD,gBAAQ,CAAC,SAAS,CACnB;AAHD,CAGC,CAAC;AAEJ,IAAM,YAAY,GAAG,UAAC,MAAc;IAClC,OAAA,qBAAqB,CACnB,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;QACxD,gBAAQ,CAAC,SAAS,CACnB;AAHD,CAGC,CAAC;AAEJ,IAAM,qBAAqB,GAAG,UAAC,KAAsB;IACnD,IAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC7B,IAAI,KAAK,CAAC,MAAM,CAAC,EAAE;QACjB,OAAO,KAAK,CAAC;KACd;IACD,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAEF,IAAM,kBAAkB,GAAG,UAAC,SAAiB;IAC3C,IAAM,cAAc,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACtD,IAAM,KAAK,GAAG,gBAAgB,CAAC,IAAI,CACjC,UAAA,GAAG,IAAI,OAAA,GAAG,CAAC,IAAI,KAAK,cAAc,EAA3B,CAA2B,CACnC,CAAC;IACF,IAAI,CAAC,KAAK,EAAE;QACV,MAAM,IAAI,KAAK,EAAE,CAAC;KACnB;IACD,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAEF,IAAM,2BAA2B,GAAG;IAClC,OAAA,gBAAgB,CAAC,GAAG,CAAC,UAAA,OAAO,IAAI,OAAA,OAAO,CAAC,IAAI,EAAZ,CAAY,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;AAAxD,CAAwD,CAAC;AAE3D,IAAM,2BAA2B,GAAG,UAClC,gBAAuC,EACvC,YAAoB,EACpB,mBAA2B;IAE3B,QAAQ,gBAAgB,EAAE;QACxB,KAAK,CAAC;YACJ,OAAO,CAAC,CAAC;QACX,KAAK,GAAG;YACN,OAAO,gBAAgB,GAAG,mBAAmB,GAAG,YAAY,GAAG,CAAC,CAAC;QACnE,KAAK,CAAC;YACJ,OAAO,gBAAgB,GAAG,mBAAmB,GAAG,YAAY,CAAC;QAC/D;YACE,MAAM,IAAI,KAAK,EAAE,CAAC;KACrB;AACH,CAAC,CAAC;AAEW,QAAA,oBAAoB,GAAG,UAClC,MAAc,EACd,aAAqB,EACrB,oBAA4B;IAE5B,IAAM,SAAS,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;IACvC,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE;QACjC,OAAO,SAAS,CAAC;KAClB;IACD,IAAI;QACF,IAAM,eAAe,GAAG,kBAAkB,CAAC,SAAS,CAAC,CAAC;QACtD,OAAO,2BAA2B,CAChC,eAAe,CAAC,KAAK,EACrB,aAAa,EACb,oBAAoB,CACrB,CAAC;KACH;IAAC,WAAM;QACN,MAAM,IAAI,KAAK,CAAC,+BAA6B,SAAS,wBAAmB,2BAA2B,EAAE,MAAG,CAAC,CAAC;KAC5G;AACH,CAAC,CAAC;AAEW,QAAA,oBAAoB,GAAG,UAClC,MAAc,EACd,cAAsB,EACtB,qBAA6B;IAE7B,IAAM,SAAS,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;IACvC,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE;QACjC,OAAO,SAAS,CAAC;KAClB;IACD,IAAI;QACF,IAAM,eAAe,GAAG,kBAAkB,CAAC,SAAS,CAAC,CAAC;QACtD,OAAO,2BAA2B,CAChC,eAAe,CAAC,KAAK,EACrB,cAAc,EACd,qBAAqB,CACtB,CAAC;KACH;IAAC,WAAM;QACN,MAAM,IAAI,KAAK,CAAC,+BAA6B,SAAS,wBAAmB,2BAA2B,EAAE,MAAG,CAAC,CAAC;KAC5G;AACH,CAAC,CAAC;AAEF,IAAM,2BAA2B,GAAG;IAClC,OAAA,2BAAmB,CAAC,IAAI,CAAC,IAAI,CAAC;AAA9B,CAA8B,CAAC;AAEpB,QAAA,yBAAyB,GAAG,UAAC,SAAiB;IACzD,OAAO,CAAC,CAAC,2BAAmB,CAAC,IAAI,CAAC,UAAA,EAAE,IAAI,OAAA,EAAE,KAAK,SAAS,EAAhB,CAAgB,CAAC,CAAC;AAC5D,CAAC,CAAC;AAEW,QAAA,mBAAmB,GAAG,UAAC,MAAc;IAChD,IAAM,aAAa,GACjB,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAC/D,gBAAQ,CAAC,gBAAgB,CAAC;IAC5B,IAAI,CAAC,iCAAyB,CAAC,aAAa,CAAC,EAAE;QAC7C,MAAM,IAAI,KAAK,CAAC,sCAAoC,aAAa,wBAAmB,2BAA2B,MAAG,CAAC,CAAC;KACrH;IACD,OAAO,aAAkC,CAAC;AAC5C,CAAC,CAAC;AAEW,QAAA,gBAAgB,GAAG,UAAC,MAAc;IAC7C,OAAA,MAAM,CAAC,QAAQ,CAAC,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK;AAA1D,CAA0D,CAAC;AAEhD,QAAA,kBAAkB,GAAG,UAAC,MAAc;IAC/C,OAAA,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC;QAC9D,gBAAQ,CAAC,eAAe;AADxB,CACwB,CAAC;AAEd,QAAA,wBAAwB,GAAG,UAAC,MAAc;IACrD,IAAM,eAAe,GAAG,0BAAkB,CAAC,MAAM,CAAC,CAAC;IACnD,IAAI,CAAC,2BAAmB,CAAC,eAAe,CAAC,EAAE;QACzC,MAAM,IAAI,KAAK,CAAC,sCAAoC,eAAe,oDAAiD,CAAC,CAAC;KACvH;IACD,IAAM,YAAY,GAAG,QAAQ,CAAC,eAAe,CAAC,CAAC;IAC/C,IACE,CAAC,YAAY,GAAG,CAAC,CAAC;QAClB,CAAC,YAAY,GAAG,GAAG,CAAC,EACpB;QACA,MAAM,IAAI,KAAK,CAAC,sCAAoC,eAAe,4DAAyD,CAAC,CAAC;KAC/H;IACD,OAAO,YAAY,GAAG,GAAG,CAAC;AAC5B,CAAC,CAAC;AAEW,QAAA,aAAa,GAAG,UAAC,MAAc;IAC1C,OAAA,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,UAAU;AAAzC,CAAyC,CAAC;AAE/B,QAAA,gBAAgB,GAAG,UAAC,MAAc;IAC7C,OAAA,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,aAAa;AAA5C,CAA4C,CAAC;AAElC,QAAA,yBAAyB,GAAG,UAAC,MAAc;IACtD,OAAA,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,sBAAsB;AAArD,CAAqD,CAAC;AAExD,kCAAkC;AAClC,IAAM,SAAS,GAAG,UAAC,MAAc;IAC/B,OAAA,qBAAqB,CACnB,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;QAClD,gBAAQ,CAAC,MAAM,CAChB;AAHD,CAGC,CAAC;AAEJ,IAAM,SAAS,GAAG,UAAC,MAAc;IAC/B,OAAA,qBAAqB,CACnB,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;QAClD,gBAAQ,CAAC,MAAM,CAChB;AAHD,CAGC,CAAC;AAES,QAAA,iBAAiB,GAAG,UAC/B,MAAc,EACd,oBAA4B;IAE5B,IAAM,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;IACjC,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;QAC9B,OAAO,MAAM,CAAC;KACf;IACD,IAAI;QACF,IAAM,YAAY,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;QAChD,IAAI,YAAY,CAAC,KAAK,KAAK,CAAC,EAAE;YAC5B,IAAM,WAAW,GAAG,4BAAoB,CAAC,MAAM,CAAC,CAAC;YACjD,IAAM,WAAW,GAAG,2BAAmB,CAAC,MAAM,CAAC,CAAC;YAChD,OAAO,WAAW,GAAG,WAAW,CAAC;SAClC;QACD,IAAI,YAAY,CAAC,KAAK,KAAK,CAAC,EAAE;YAC5B,IAAM,WAAW,GAAG,4BAAoB,CAAC,MAAM,CAAC,CAAC;YACjD,IAAM,WAAW,GAAG,2BAAmB,CAAC,MAAM,CAAC,CAAC;YAChD,OAAO,oBAAoB,GAAG,WAAW,GAAG,WAAW,CAAC;SACzD;QACD,OAAO,YAAY,CAAC,KAAK,GAAG,oBAAoB,CAAC;KAClD;IAAC,WAAM;QACN,MAAM,IAAI,KAAK,CAAC,4BAA0B,MAAM,wBAAmB,2BAA2B,EAAE,MAAG,CAAC,CAAC;KACtG;AACH,CAAC,CAAC;AAEW,QAAA,iBAAiB,GAAG,UAC/B,MAAc,EACd,qBAA6B;IAE7B,IAAM,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;IACjC,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;QAC9B,OAAO,MAAM,CAAC;KACf;IACD,IAAI;QACF,IAAM,YAAY,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;QAChD,IAAI,YAAY,CAAC,KAAK,KAAK,CAAC,EAAE;YAC5B,IAAM,WAAW,GAAG,4BAAoB,CAAC,MAAM,CAAC,CAAC;YACjD,IAAM,WAAW,GAAG,2BAAmB,CAAC,MAAM,CAAC,CAAC;YAChD,OAAO,WAAW,GAAG,WAAW,CAAC;SAClC;QACD,IAAI,YAAY,CAAC,KAAK,KAAK,CAAC,EAAE;YAC5B,IAAM,WAAW,GAAG,4BAAoB,CAAC,MAAM,CAAC,CAAC;YACjD,IAAM,WAAW,GAAG,2BAAmB,CAAC,MAAM,CAAC,CAAC;YAChD,OAAO,qBAAqB,GAAG,WAAW,GAAG,WAAW,CAAC;SAC1D;QACD,OAAO,YAAY,CAAC,KAAK,GAAG,qBAAqB,CAAC;KACnD;IAAC,WAAM;QACN,MAAM,IAAI,KAAK,CAAC,4BAA0B,MAAM,wBAAmB,2BAA2B,EAAE,MAAG,CAAC,CAAC;KACtG;AACH,CAAC,CAAC;AAEW,QAAA,mBAAmB,GAAG,UAAC,MAAc;IAChD,OAAA,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC;QAC5D,gBAAQ,CAAC,gBAAgB;AADzB,CACyB,CAAC;AAEf,QAAA,oBAAoB,GAAG,UAAC,MAAc;IACjD,OAAA,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,YAAY,CAAC;QAC7D,gBAAQ,CAAC,iBAAiB;AAD1B,CAC0B,CAAC;AAEhB,QAAA,gBAAgB,GAAG,UAAC,MAAc;IAC7C,OAAA,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC;QACzD,gBAAQ,CAAC,aAAa;AADtB,CACsB,CAAC;AAEZ,QAAA,cAAc,GAAG,UAAC,MAAc,yBAC3C,MAAM,CAAC,QAAQ,CAAC,KAAK,0CAAE,MAAM,GAAA,CAAC;AAEnB,QAAA,aAAa,GAAG,UAAC,MAAc;IAC1C,OAAA,MAAM,CAAC,QAAQ,CAAC,KAAK,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK;AAApD,CAAoD,CAAC;AAE1C,QAAA,eAAe,GAAG,UAAC,MAAc;IAC5C,OAAA,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC;QACxD,gBAAQ,CAAC,eAAe;AADxB,CACwB,CAAC;AAEd,QAAA,qBAAqB,GAAG,UAAC,MAAc;IAClD,IAAM,YAAY,GAAG,uBAAe,CAAC,MAAM,CAAC,CAAC;IAC7C,IAAI,CAAC,2BAAmB,CAAC,YAAY,CAAC,EAAE;QACtC,MAAM,IAAI,KAAK,CAAC,mCAAiC,YAAY,oDAAiD,CAAC,CAAC;KACjH;IACD,IAAM,YAAY,GAAG,QAAQ,CAAC,YAAY,CAAC,CAAC;IAC5C,IACE,CAAC,YAAY,GAAG,CAAC,CAAC;QAClB,CAAC,YAAY,GAAG,GAAG,CAAC,EACpB;QACA,MAAM,IAAI,KAAK,CAAC,mCAAiC,YAAY,4DAAyD,CAAC,CAAC;KACzH;IACD,OAAO,YAAY,GAAG,GAAG,CAAC;AAC5B,CAAC,CAAC"}
package/dist/image.d.ts CHANGED
@@ -31,9 +31,22 @@ interface DrawRectPorps {
31
31
  opacity: number;
32
32
  }
33
33
  export declare const drawRect: ({ imageDstBuffer, position, size, color, opacity, }: DrawRectPorps) => void;
34
- interface CreateVisualizerFrameProps {
34
+ interface FillRectProps {
35
+ imageDstBuffer: EncodedBmp;
36
+ points: [Position, Position, Position, Position];
37
+ color: Color;
38
+ opacity: number;
39
+ }
40
+ /**
41
+ * Fills a quadrilateral (4-sided polygon) using scan-line algorithm
42
+ * Only the outer edges are anti-aliased
43
+ */
44
+ export declare const fillRect: ({ imageDstBuffer, points, color, opacity, }: FillRectProps) => void;
45
+ export interface CommonVisualizerFrameProps {
35
46
  backgroundImageBuffer: EncodedBmp;
36
47
  spectrum: number[];
48
+ }
49
+ export interface CreateVisualizerFrameProps {
37
50
  size: Size;
38
51
  position: Position;
39
52
  rotation: RotationAliasName;
@@ -42,7 +55,18 @@ interface CreateVisualizerFrameProps {
42
55
  opacity: number;
43
56
  spectrumEffect?: SpectrumEffect;
44
57
  }
45
- export declare const createVisualizerFrameGenerator: () => ({ backgroundImageBuffer, spectrum, size, position, rotation, margin, color, opacity, spectrumEffect, }: CreateVisualizerFrameProps) => EncodedBmp;
58
+ export interface CreatePolarVisualizerFrameProps {
59
+ centerX: number;
60
+ centerY: number;
61
+ innerRadius: number;
62
+ maxBarLength: number;
63
+ barWidth: number;
64
+ color: Color | string;
65
+ opacity: number;
66
+ spectrumEffect?: SpectrumEffect;
67
+ }
68
+ export declare const createSpectrumVisualizerFrameGenerator: () => ({ backgroundImageBuffer, spectrum, size, position, rotation, margin, color, opacity, spectrumEffect, }: CommonVisualizerFrameProps & CreateVisualizerFrameProps) => EncodedBmp;
69
+ export declare const createPolarVisualizerFrameGenerator: () => ({ backgroundImageBuffer, spectrum, centerX, centerY, innerRadius, maxBarLength, barWidth, color, opacity, spectrumEffect, }: CommonVisualizerFrameProps & CreatePolarVisualizerFrameProps) => EncodedBmp;
46
70
  export declare const convertToBmp: (filePath: string) => Promise<Buffer>;
47
71
  export declare const parseImage: (buffer: Buffer) => BmpDecoder;
48
72
  export declare const getImageColor: (image: BmpDecoder) => Color;
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,94 @@ 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
+ };
89
188
  var getRectY = function (rotation, top, height, rectHeight) {
90
189
  switch (rotation) {
91
190
  case 'up':
@@ -127,7 +226,48 @@ var drawSpectrum = function (_a) {
127
226
  });
128
227
  }
129
228
  };
130
- exports.createVisualizerFrameGenerator = function () {
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 () {
131
271
  var prevSpectrum = null;
132
272
  return function (_a) {
133
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;
@@ -172,6 +312,57 @@ exports.createVisualizerFrameGenerator = function () {
172
312
  return imageDstBuffer;
173
313
  };
174
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
+ };
365
+ };
175
366
  exports.convertToBmp = function (filePath) { return __awaiter(void 0, void 0, void 0, function () {
176
367
  return __generator(this, function (_a) {
177
368
  return [2 /*return*/, new Promise(function (resolve, reject) { return __awaiter(void 0, void 0, void 0, function () {
package/dist/image.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"image.js","sourceRoot":"","sources":["../src/image.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"image.js","sourceRoot":"","sources":["../src/image.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -26,6 +26,16 @@ export interface Config {
26
26
  color?: Color | string;
27
27
  opacity?: string;
28
28
  };
29
+ polar?: {
30
+ x?: number | PositionAliasName;
31
+ y?: number | PositionAliasName;
32
+ innerRadius?: number;
33
+ maxBarLength?: number;
34
+ barWidth?: number;
35
+ effect?: SpectrumEffect;
36
+ color?: Color | string;
37
+ opacity?: string;
38
+ };
29
39
  };
30
40
  tweaks?: {
31
41
  ffmpeg_cfr?: string;
package/dist/index.js CHANGED
@@ -62,12 +62,44 @@ var PROCESSING_BUFFER_SIZE = Math.pow(2, 12);
62
62
  var sleep = function (timeout) {
63
63
  return new Promise(function (resolve) { return setTimeout(resolve, timeout); });
64
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
+ };
65
93
  exports.renderAudioVisualizer = function (config, onProgress, shouldStop) {
66
94
  return new Promise(function (resolve) { return __awaiter(void 0, void 0, void 0, function () {
67
- var audioFilePath, backgroundImagePath, outVideoPath, backgroundImageBmpBuffer, backgroundImage, audioReader, audioBuffer, sampleRate, spectrumBusMargin, FPS, spectrumWidth, spectrumHeight, spectrumX, spectrumY, spectrumRotation, spectrumColor, spectrumEffect, spectrumOpacity, ffmpeg_cfr, ffmpeg_preset, frame_processing_delay, audioDuration, framesCount, audioDataStep, processingBuffer, ffmpegVideoWriter, bpmEncoder, backgroundImageBuffer, skipFramesCount, processSpectrum, createVisualizerFrame, i, currentFrameData, audioDataParser, spectrum, frameImage, isFrameProcessed;
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;
68
96
  return __generator(this, function (_a) {
69
97
  switch (_a.label) {
70
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
+ }
71
103
  audioFilePath = config_1.getAudioFilePath(config);
72
104
  backgroundImagePath = config_1.getBackgroundImagePath(config);
73
105
  outVideoPath = config_1.getOutVideoPath(config);
@@ -85,18 +117,10 @@ exports.renderAudioVisualizer = function (config, onProgress, shouldStop) {
85
117
  }
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
- spectrumEffect = config_1.getSpectrumEffect(config);
96
- spectrumOpacity = config_1.getSpectrumOpacityParsed(config);
97
120
  ffmpeg_cfr = config_1.getFfmpeg_cfr(config);
98
121
  ffmpeg_preset = config_1.getFfmpeg_preset(config);
99
122
  frame_processing_delay = config_1.getFrame_processing_delay(config);
123
+ createVisualizerFrame = createVisualizerFrameGenerator(config, backgroundImage, spectrumBusMargin);
100
124
  audioDuration = audioBuffer.length / sampleRate;
101
125
  framesCount = Math.trunc(audioDuration * FPS);
102
126
  audioDataStep = Math.trunc(audioBuffer.length / framesCount);
@@ -107,7 +131,6 @@ exports.renderAudioVisualizer = function (config, onProgress, shouldStop) {
107
131
  backgroundImageBuffer = bpmEncoder(backgroundImage.data);
108
132
  skipFramesCount = FPS < 45 ? 1 : 2;
109
133
  processSpectrum = audio_1.createSpectrumsProcessor(sampleRate, skipFramesCount);
110
- createVisualizerFrame = image_1.createVisualizerFrameGenerator();
111
134
  i = 0;
112
135
  _a.label = 3;
113
136
  case 3:
@@ -117,17 +140,11 @@ exports.renderAudioVisualizer = function (config, onProgress, shouldStop) {
117
140
  processingBuffer.set(currentFrameData, PROCESSING_BUFFER_SIZE - currentFrameData.length);
118
141
  audioDataParser = function () { return Array.from(processingBuffer); };
119
142
  spectrum = processSpectrum(audioDataParser);
120
- frameImage = createVisualizerFrame({
143
+ commonVisualizerFrameProps = {
121
144
  backgroundImageBuffer: backgroundImageBuffer,
122
145
  spectrum: spectrum,
123
- size: { width: spectrumWidth, height: spectrumHeight },
124
- position: { x: spectrumX, y: spectrumY },
125
- rotation: spectrumRotation,
126
- margin: spectrumBusMargin,
127
- color: spectrumColor,
128
- opacity: spectrumOpacity,
129
- spectrumEffect: spectrumEffect,
130
- });
146
+ };
147
+ frameImage = createVisualizerFrame(commonVisualizerFrameProps);
131
148
  isFrameProcessed = ffmpegVideoWriter.stdin.write(frameImage.data);
132
149
  if (!!isFrameProcessed) return [3 /*break*/, 5];
133
150
  return [4 /*yield*/, video_1.waitDrain(ffmpegVideoWriter.stdin)];