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/README.md CHANGED
@@ -14,15 +14,26 @@ const config = {
14
14
  },
15
15
  outVideo: {
16
16
  path: 'media/out.mp4',
17
- fps: 25, // Default value: 60
18
- spectrum: { // Audio spectrum configuration. Optional.
19
- width: '30%', // 30% of background image width. Default value: 40%. Also you can use absolute values. For example, value 300 for 300 pixels width.
20
- height: '15%', // 15% of background image height. Default value: 10%. Also you can use absolute values. For example, value 300 for 300 pixels height.
17
+ fps: 25, // Default value: 30
18
+ spectrum: { // Audio spectrum configuration (linear bar visualizer). Optional. If neither 'spectrum' nor 'polar' is specified, 'polar' is used by default.
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
+ 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.
22
22
  y: 'bottom', // Available values: 'top', 'middle', bottom'. Also you can use absolute number values. For example, value 300 for 300 pixels y.
23
- rotation: 'up', // Available values: 'up', 'down'. Default value: 'down'.
23
+ rotation: 'mirror', // Available values: 'up', 'down', 'mirror'. Default value: 'mirror'.
24
+ effect: 'volume', // Available values: 'volume', 'smooth', undefined. Default value: undefined.
24
25
  color: '#cccc99', // Default value: inverted color of background image
25
- opacity: '80%' // Default value: '100%'.
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%'.
26
37
  }
27
38
  },
28
39
  tweaks: { // Optional
package/dist/audio.d.ts CHANGED
@@ -2,8 +2,7 @@
2
2
  export declare const skipEvery: <T>(skipIndex: number) => (element: T, index: number) => boolean;
3
3
  export declare const getPeaks: (spectrums: number[], prevPeaks?: number[] | undefined) => number[];
4
4
  export declare const correctPeaks: (spectrums: number[], peaks: number[]) => number[];
5
- export declare const smoothValues: (spectrums: number[], prevSpectrums?: number[] | undefined) => number[];
6
- export declare const createSpectrumsProcessor: (busesCount: number) => (frameIndex: number, parseAudioData: () => number[]) => number[];
5
+ export declare const createSpectrumsProcessor: (sampleRate: number, skipFramesCount: number) => (parseAudioData: () => number[]) => number[];
7
6
  export declare const bufferToUInt8: (buffer: Buffer, start: number, end: number) => number[];
8
7
  export declare const normalizeAudioData: (PCMData: number[]) => number[];
9
8
  export declare const spawnFfmpegAudioReader: (filename: string, format: string) => import("child_process").ChildProcessWithoutNullStreams;
package/dist/audio.js CHANGED
@@ -1,4 +1,11 @@
1
1
  "use strict";
2
+ var __spreadArrays = (this && this.__spreadArrays) || function () {
3
+ for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
4
+ for (var r = Array(s), k = 0, i = 0; i < il; i++)
5
+ for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
6
+ r[k] = a[j];
7
+ return r;
8
+ };
2
9
  var __importDefault = (this && this.__importDefault) || function (mod) {
3
10
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
11
  };
@@ -35,39 +42,42 @@ exports.correctPeaks = function (spectrums, peaks) {
35
42
  }
36
43
  return resultSpectrum;
37
44
  };
38
- exports.smoothValues = function (spectrums, prevSpectrums) {
39
- if (!prevSpectrums) {
40
- return spectrums;
41
- }
42
- var resultSpectrum = [];
43
- for (var i = 0; i < spectrums.length; i++) {
44
- var currValue = spectrums[i];
45
- var currPrevValue = prevSpectrums[i] || 0;
46
- var avgValue = (currValue + currPrevValue) / 2;
47
- resultSpectrum.push(avgValue);
48
- }
49
- return resultSpectrum;
45
+ var oldMax = 1;
46
+ var newMin = 0.6;
47
+ var getInterpolationFactor = function (skippedFramesCount, skipFramesCount) {
48
+ var interpolationFactor = 1 - (skippedFramesCount / skipFramesCount);
49
+ var interpolationFactorInRange = (interpolationFactor * (oldMax - newMin)) + newMin;
50
+ return interpolationFactorInRange;
50
51
  };
51
- exports.createSpectrumsProcessor = function (busesCount) {
52
+ exports.createSpectrumsProcessor = function (sampleRate, skipFramesCount) {
52
53
  var prevAudioDataNormalized = [];
53
54
  var prevPeaks = [];
54
- var prevSpectrums = [];
55
- var skipFrameIndex = 2;
56
- return function (frameIndex, parseAudioData) {
57
- var isFrameSkiped = frameIndex && (frameIndex % skipFrameIndex === 0);
58
- var audioDataNomrmalized = isFrameSkiped ?
59
- prevAudioDataNormalized :
60
- exports.normalizeAudioData(parseAudioData());
61
- prevAudioDataNormalized = audioDataNomrmalized;
62
- var spectrum = dsp_1.getSpectrum(audioDataNomrmalized);
63
- var skipIndex = Math.trunc(spectrum.length / busesCount);
64
- var spectrumReduced = spectrum.filter(exports.skipEvery(skipIndex));
65
- var peaks = exports.getPeaks(spectrumReduced, prevPeaks);
66
- var correctedSpectrum = exports.correctPeaks(spectrumReduced, peaks);
67
- var smoothSpectrum = exports.smoothValues(correctedSpectrum, prevSpectrums);
68
- prevSpectrums = smoothSpectrum;
69
- prevPeaks = peaks;
70
- return smoothSpectrum;
55
+ var skippedFramesCount = 0;
56
+ var targetSpectrum = [];
57
+ var previousSpectrum = [];
58
+ return function (parseAudioData) {
59
+ if (skippedFramesCount === 0) {
60
+ skippedFramesCount = skipFramesCount;
61
+ var audioDataNomrmalized = exports.normalizeAudioData(parseAudioData());
62
+ prevAudioDataNormalized = audioDataNomrmalized;
63
+ var spectrum = dsp_1.getSpectrum(audioDataNomrmalized, sampleRate);
64
+ var peaks = exports.getPeaks(spectrum, prevPeaks);
65
+ var correctedSpectrum = prevPeaks.length === 0 ?
66
+ Array(dsp_1.FREQUENCY_BANDS.length).fill(0) :
67
+ exports.correctPeaks(spectrum, peaks);
68
+ prevPeaks = peaks;
69
+ previousSpectrum = __spreadArrays(targetSpectrum);
70
+ targetSpectrum = correctedSpectrum;
71
+ }
72
+ else {
73
+ skippedFramesCount--;
74
+ }
75
+ var interpolationFactor = getInterpolationFactor(skippedFramesCount, skipFramesCount);
76
+ var interpolatedSpectrum = targetSpectrum.map(function (target, i) {
77
+ var prev = previousSpectrum[i] || target;
78
+ return prev + (target - prev) * interpolationFactor;
79
+ });
80
+ return interpolatedSpectrum;
71
81
  };
72
82
  };
73
83
  exports.bufferToUInt8 = function (buffer, start, end) {
package/dist/audio.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"audio.js","sourceRoot":"","sources":["../src/audio.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"audio.js","sourceRoot":"","sources":["../src/audio.ts"],"names":[],"mappings":"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"}
package/dist/config.d.ts CHANGED
@@ -2,31 +2,45 @@ import { Config } from './index';
2
2
  export declare const defaults: {
3
3
  fps: number;
4
4
  spectrumWidth: string;
5
- spectrumHeight: string;
5
+ spectrumHeight: number;
6
6
  spectrumX: string;
7
7
  spectrumY: string;
8
8
  spectrumRotation: string;
9
- spectrumBusesCount: number;
10
9
  spectrumBusMargin: number;
11
10
  spectrumOpacity: string;
11
+ polarX: string;
12
+ polarY: string;
13
+ polarInnerRadius: number;
14
+ polarMaxBarLength: number;
15
+ polarBarWidth: number;
12
16
  };
13
- export declare const rotationAliasValues: readonly ["up", "down"];
17
+ export declare type SpectrumEffect = 'volume' | 'smooth';
18
+ export declare const rotationAliasValues: readonly ["up", "down", "mirror"];
14
19
  export declare const checkIsPercentValue: (value: string) => boolean;
15
20
  export declare const getAudioFilePath: (config: Config) => string;
16
21
  export declare const getBackgroundImagePath: (config: Config) => string;
17
22
  export declare const getOutVideoPath: (config: Config) => string;
18
23
  export declare const getFPS: (config: Config) => number;
19
- export declare const getSpectrumBusesCount: () => number;
20
24
  export declare const getSpectrumBusMargin: () => number;
25
+ export declare const getSpectrumEffect: (config: Config) => "smooth" | "volume" | undefined;
21
26
  export declare const getSpectrumWidthAbsolute: (config: Config, backgroundImageWidth: number) => number;
22
27
  export declare const getSpectrumHeightAbsolute: (config: Config, backgroundImageHeight: number) => number;
23
28
  export declare const getSpectrumXAbsolute: (config: Config, spectrumWidth: number, backgroundImageWidth: number) => number;
24
29
  export declare const getSpectrumYAbsolute: (config: Config, spectrumHeight: number, backgroundImageHeight: number) => number;
25
30
  export declare const checkIsValidRotationAlias: (aliasName: string) => boolean;
26
- export declare const getSpectrumRotation: (config: Config) => "up" | "down";
31
+ export declare const getSpectrumRotation: (config: Config) => "up" | "down" | "mirror";
27
32
  export declare const getSpectrumColor: (config: Config) => string | import("./image").Color | undefined;
28
33
  export declare const getSpectrumOpacity: (config: Config) => string;
29
34
  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
@@ -4,16 +4,21 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  var path_1 = __importDefault(require("path"));
7
+ var dsp_1 = require("./dsp");
7
8
  exports.defaults = {
8
- fps: 60,
9
- spectrumWidth: '40%',
10
- spectrumHeight: '10%',
9
+ fps: 30,
10
+ spectrumWidth: '33%',
11
+ spectrumHeight: 160,
11
12
  spectrumX: 'center',
12
- spectrumY: 'top',
13
- spectrumRotation: 'down',
14
- spectrumBusesCount: 64,
15
- spectrumBusMargin: 4,
16
- spectrumOpacity: '100%',
13
+ spectrumY: 'middle',
14
+ spectrumRotation: 'mirror',
15
+ spectrumBusMargin: 12,
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 },
@@ -23,7 +28,7 @@ var postitionAliases = [
23
28
  { name: 'middle', value: 0.5 },
24
29
  { name: 'bottom', value: 1 },
25
30
  ];
26
- exports.rotationAliasValues = ['up', 'down'];
31
+ exports.rotationAliasValues = ['up', 'down', 'mirror'];
27
32
  exports.checkIsPercentValue = function (value) {
28
33
  return RegExp(/\d+%/).test(value);
29
34
  };
@@ -39,12 +44,12 @@ exports.getOutVideoPath = function (config) {
39
44
  exports.getFPS = function (config) {
40
45
  return config.outVideo.fps || exports.defaults.fps;
41
46
  };
42
- exports.getSpectrumBusesCount = function () { return exports.defaults.spectrumBusesCount; };
43
47
  exports.getSpectrumBusMargin = function () { return exports.defaults.spectrumBusMargin; };
44
48
  var getSpectrumWidth = function (config) {
45
49
  return (config.outVideo.spectrum && config.outVideo.spectrum.width) ||
46
50
  exports.defaults.spectrumWidth;
47
51
  };
52
+ exports.getSpectrumEffect = function (config) { var _a; return (_a = config.outVideo.spectrum) === null || _a === void 0 ? void 0 : _a.effect; };
48
53
  var getSpectrumSizeAbsolute = function (spectrumSize, backgroundImageSize, fieldName) {
49
54
  if (typeof spectrumSize === 'number') {
50
55
  return spectrumSize;
@@ -62,7 +67,7 @@ var getSpectrumSizeValueErrorMessage = function (fieldName, value) {
62
67
  exports.getSpectrumWidthAbsolute = function (config, backgroundImageWidth) {
63
68
  var spectrumWidth = getSpectrumWidth(config);
64
69
  var spectrumWidthAbsolute = getSpectrumSizeAbsolute(spectrumWidth, backgroundImageWidth, 'width');
65
- var spectrumWidthWithoutMargin = Math.trunc(spectrumWidthAbsolute / exports.defaults.spectrumBusesCount) - exports.defaults.spectrumBusMargin / 2;
70
+ var spectrumWidthWithoutMargin = Math.trunc(spectrumWidthAbsolute / dsp_1.FREQUENCY_BANDS.length) - exports.defaults.spectrumBusMargin / 2;
66
71
  if (spectrumWidthWithoutMargin <= 0) {
67
72
  throw new Error("Spectrum width '" + spectrumWidth + "' is too small.");
68
73
  }
@@ -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":"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"}
package/dist/dsp.d.ts CHANGED
@@ -1,2 +1,16 @@
1
+ export interface SpectrumPoint {
2
+ frequency: number;
3
+ magnitude: number;
4
+ }
5
+ export interface FrequencyBus {
6
+ startFreq: number;
7
+ endFreq: number;
8
+ magnitude: number;
9
+ }
10
+ export declare const FREQUENCY_BANDS: {
11
+ name: string;
12
+ start: number;
13
+ end: number;
14
+ }[];
1
15
  export declare const brutForceFFTSignalLength: (PCMDataLength: number) => number;
2
- export declare const getSpectrum: (PCMData: number[]) => number[];
16
+ export declare const getSpectrum: (PCMData: number[], sampleRate: number) => number[];
package/dist/dsp.js CHANGED
@@ -1,6 +1,49 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- var spectrum_1 = require("./spectrum");
3
+ var fft_js_1 = require("fft-js");
4
+ // Common frequency bands (in Hz)
5
+ exports.FREQUENCY_BANDS = [
6
+ { name: 'Sub Bass 1', start: 20, end: 30 },
7
+ { name: 'Sub Bass 2', start: 30, end: 40 },
8
+ { name: 'Sub Bass 3', start: 50, end: 60 },
9
+ { name: 'Sub Bass 4', start: 20, end: 60 },
10
+ { name: 'Bass 1', start: 60, end: 107.5 },
11
+ { name: 'Bass 2', start: 107.5, end: 155 },
12
+ { name: 'Bass 3', start: 155, end: 202.5 },
13
+ { name: 'Bass 4', start: 202.5, end: 250 },
14
+ { name: 'Low Mids 1', start: 250, end: 312.5 },
15
+ { name: 'Low Mids 2', start: 312.5, end: 375 },
16
+ { name: 'Low Mids 3', start: 375, end: 437.5 },
17
+ { name: 'Low Mids 4', start: 437.5, end: 500 },
18
+ { name: 'Mids 1', start: 500, end: 875 },
19
+ { name: 'Mids 2', start: 875, end: 1250 },
20
+ { name: 'Mids 3', start: 1250, end: 1625 },
21
+ { name: 'Mids 4', start: 1625, end: 2000 },
22
+ { name: 'High Mids 1', start: 2000, end: 2500 },
23
+ { name: 'High Mids 2', start: 2500, end: 3000 },
24
+ { name: 'High Mids 3', start: 3000, end: 3500 },
25
+ { name: 'High Mids 4', start: 3500, end: 4000 },
26
+ { name: 'Presence 1', start: 4000, end: 5000 },
27
+ { name: 'Presence 2', start: 5000, end: 6000 },
28
+ { name: 'Brilliance 1', start: 6000, end: 13000 },
29
+ { name: 'Brilliance 2', start: 13000, end: 20000 },
30
+ ];
31
+ var combineToBuses = function (spectrum) {
32
+ return exports.FREQUENCY_BANDS.map(function (band) {
33
+ var pointsInBand = spectrum.filter(function (point) {
34
+ return point.frequency >= band.start && point.frequency < band.end;
35
+ });
36
+ // If no points found in this band, return zero magnitude
37
+ if (pointsInBand.length === 0) {
38
+ return 0;
39
+ }
40
+ // Average the magnitudes in this frequency band
41
+ var avgMagnitude = pointsInBand.reduce(function (sum, point) {
42
+ return sum + point.magnitude;
43
+ }, 0) / pointsInBand.length;
44
+ return avgMagnitude;
45
+ });
46
+ };
4
47
  exports.brutForceFFTSignalLength = function (PCMDataLength) {
5
48
  var exponent = 1;
6
49
  while (true) {
@@ -11,16 +54,24 @@ exports.brutForceFFTSignalLength = function (PCMDataLength) {
11
54
  exponent++;
12
55
  }
13
56
  };
14
- exports.getSpectrum = function (PCMData) {
57
+ exports.getSpectrum = function (PCMData, sampleRate) {
15
58
  var signalLength = exports.brutForceFFTSignalLength(PCMData.length);
16
59
  var signalStartIndex = Math.trunc(PCMData.length / 2 - signalLength / 2);
17
60
  var signal = PCMData.slice(signalStartIndex, signalStartIndex + signalLength);
18
- var spectrumAnalyzer = spectrum_1.createSpectrumAnalyzer(signalLength);
19
- var spectrum = spectrumAnalyzer(signal);
61
+ // Use fft-js to compute the FFT
62
+ var phasors = fft_js_1.fft(signal);
63
+ var frequencies = fft_js_1.util.fftFreq(phasors, sampleRate);
64
+ var magnitudes = fft_js_1.util.fftMag(phasors);
65
+ // Create combined spectrum array with both frequency and magnitude
66
+ var spectrum = frequencies.map(function (freq, i) { return ({
67
+ frequency: freq,
68
+ magnitude: magnitudes[i]
69
+ }); });
70
+ // Apply frequency-dependent scaling
20
71
  for (var i = 0; i < spectrum.length; i++) {
21
- // attenuates low freqs and boosts highs
22
- spectrum[i] *= -1 * Math.log((signalLength / 2 - i) * (0.5 / signalLength / 2)) * signalLength;
72
+ spectrum[i].magnitude *= -1 * Math.log((signalLength / 2 - i) * (0.5 / signalLength / 2)) * signalLength;
23
73
  }
24
- return spectrum;
74
+ // Combine frequencies into buses
75
+ return combineToBuses(spectrum);
25
76
  };
26
77
  //# sourceMappingURL=dsp.js.map
package/dist/dsp.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"dsp.js","sourceRoot":"","sources":["../src/dsp.ts"],"names":[],"mappings":";;AAAA,uCAAoD;AAEvC,QAAA,wBAAwB,GAAG,UAAC,aAAqB;IAC5D,IAAI,QAAQ,GAAG,CAAC,CAAC;IACjB,OAAO,IAAI,EAAE;QACX,IAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;QAClC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,aAAa,EAAE;YAC7B,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;SACtC;QACD,QAAQ,EAAE,CAAC;KACZ;AACH,CAAC,CAAC;AAEW,QAAA,WAAW,GAAG,UAAC,OAAiB;IAC3C,IAAM,YAAY,GAAG,gCAAwB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAC9D,IAAM,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,GAAG,YAAY,GAAG,CAAC,CAAC,CAAC;IAC3E,IAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,gBAAgB,EAAE,gBAAgB,GAAG,YAAY,CAAC,CAAC;IAEhF,IAAM,gBAAgB,GAAG,iCAAsB,CAAC,YAAY,CAAC,CAAC;IAC9D,IAAM,QAAQ,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAC1C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACxC,wCAAwC;QACxC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,YAAY,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,YAAY,GAAG,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC;KAChG;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC,CAAA"}
1
+ {"version":3,"file":"dsp.js","sourceRoot":"","sources":["../src/dsp.ts"],"names":[],"mappings":"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"}
package/dist/image.d.ts CHANGED
@@ -2,6 +2,7 @@
2
2
  import { RotationAliasName } from './index';
3
3
  import { BmpDecoder } from 'bmp-js';
4
4
  import { EncodedBmp } from './bpmEncoder';
5
+ import { SpectrumEffect } from './config';
5
6
  export interface Color {
6
7
  red: number;
7
8
  green: number;
@@ -30,17 +31,42 @@ interface DrawRectPorps {
30
31
  opacity: number;
31
32
  }
32
33
  export declare const drawRect: ({ imageDstBuffer, position, size, color, opacity, }: DrawRectPorps) => void;
33
- 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 {
34
46
  backgroundImageBuffer: EncodedBmp;
35
47
  spectrum: number[];
48
+ }
49
+ export interface CreateVisualizerFrameProps {
36
50
  size: Size;
37
51
  position: Position;
38
52
  rotation: RotationAliasName;
39
53
  margin: number;
40
54
  color: Color | string;
41
55
  opacity: number;
56
+ spectrumEffect?: SpectrumEffect;
57
+ }
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;
42
67
  }
43
- export declare const createVisualizerFrame: ({ backgroundImageBuffer, spectrum, size, position, rotation, margin, color, opacity, }: CreateVisualizerFrameProps) => EncodedBmp;
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;
44
70
  export declare const convertToBmp: (filePath: string) => Promise<Buffer>;
45
71
  export declare const parseImage: (buffer: Buffer) => BmpDecoder;
46
72
  export declare const getImageColor: (image: BmpDecoder) => Color;