nodejs-audio-visualizer 5.2.0 → 5.4.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 +82 -81
- package/dist/config.d.ts +1 -0
- package/dist/config.js +11 -0
- package/dist/config.js.map +1 -1
- package/dist/highlight.d.ts +60 -3
- package/dist/highlight.js +338 -66
- package/dist/highlight.js.map +1 -1
- package/dist/index.d.ts +10 -2
- package/dist/index.js +150 -80
- package/dist/index.js.map +1 -1
- package/dist/video.d.ts +19 -0
- package/dist/video.js +62 -3
- package/dist/video.js.map +1 -1
- package/package.json +1 -1
- package/src/config.ts +11 -0
- package/src/highlight.ts +365 -39
- package/src/index.ts +882 -811
- package/src/tests/config.test.ts +19 -0
- package/src/tests/highlight.test.ts +222 -3
- package/src/tests/video.test.ts +80 -1
- package/src/video.ts +81 -0
package/dist/highlight.js
CHANGED
|
@@ -1,5 +1,16 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
/** Output length per segment when `audio.autoHighlight` is true (seconds). */
|
|
3
|
+
var __assign = (this && this.__assign) || function () {
|
|
4
|
+
__assign = Object.assign || function(t) {
|
|
5
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
6
|
+
s = arguments[i];
|
|
7
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
8
|
+
t[p] = s[p];
|
|
9
|
+
}
|
|
10
|
+
return t;
|
|
11
|
+
};
|
|
12
|
+
return __assign.apply(this, arguments);
|
|
13
|
+
};
|
|
3
14
|
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
4
15
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
5
16
|
return new (P || (P = Promise))(function (resolve, reject) {
|
|
@@ -36,28 +47,51 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
|
36
47
|
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
37
48
|
}
|
|
38
49
|
};
|
|
50
|
+
var __spreadArrays = (this && this.__spreadArrays) || function () {
|
|
51
|
+
for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
|
|
52
|
+
for (var r = Array(s), k = 0, i = 0; i < il; i++)
|
|
53
|
+
for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
|
|
54
|
+
r[k] = a[j];
|
|
55
|
+
return r;
|
|
56
|
+
};
|
|
39
57
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
40
58
|
var waitForEventLoop_1 = require("./waitForEventLoop");
|
|
41
59
|
exports.HIGHLIGHT_DURATION_SEC = 15;
|
|
60
|
+
/**
|
|
61
|
+
* How far (seconds) a highlight boundary may move to land on a beat. The final length can
|
|
62
|
+
* therefore differ from `HIGHLIGHT_DURATION_SEC` by up to twice this value.
|
|
63
|
+
*/
|
|
64
|
+
exports.MAX_BEAT_SNAP_SEC = 1.5;
|
|
65
|
+
/** Beats per bar used when preferring highlight lengths made of whole bars. */
|
|
66
|
+
var BEATS_PER_BAR = 4;
|
|
67
|
+
/** Cost (in beats of boundary shift) for each beat the length is away from a whole bar. */
|
|
68
|
+
var OFF_BAR_PENALTY = 3;
|
|
69
|
+
/** Grid beats past the analyzed tempo region snap to a detected onset within this share of a beat. */
|
|
70
|
+
var GRID_ONSET_SNAP_SHARE = 0.2;
|
|
71
|
+
/** Seconds of audio compared before and after a frame to score it as a drop. */
|
|
72
|
+
exports.DROP_WINDOW_SEC = 4;
|
|
73
|
+
/** Share of the track's biggest energy rise a peak needs to count as a drop. */
|
|
74
|
+
var MIN_DROP_SCORE_SHARE = 0.5;
|
|
75
|
+
/** With a tempo grid, a drop moves onto a beat within this share of a beat, so the hook ends on the beat. */
|
|
76
|
+
var DROP_BEAT_SNAP_SHARE = 0.2;
|
|
77
|
+
/**
|
|
78
|
+
* `seg.startFrame` may be negative (a lead-in reaching back past the track start): those
|
|
79
|
+
* frames get silent spectrums and are played as silence before the audio.
|
|
80
|
+
*/
|
|
42
81
|
function buildHighlightRun(fps, seg, spectrums, beatEvents) {
|
|
43
|
-
var
|
|
44
|
-
var
|
|
82
|
+
var _a, _b;
|
|
83
|
+
var startFrame = seg.startFrame, highlightFrames = seg.highlightFrames, leadInFrames = seg.leadInFrames;
|
|
84
|
+
var silentFrames = Math.max(0, -startFrame);
|
|
85
|
+
var silentSpectrum = new Array((_b = (_a = spectrums[0]) === null || _a === void 0 ? void 0 : _a.length, (_b !== null && _b !== void 0 ? _b : 0))).fill(0);
|
|
86
|
+
var spectrumsSlice = __spreadArrays(Array.from({ length: silentFrames }, function () { return silentSpectrum.slice(); }), spectrums.slice(startFrame + silentFrames, startFrame + highlightFrames));
|
|
45
87
|
var beatsInWindow = beatEvents
|
|
46
88
|
.filter(function (b) { return b.frameIndex >= startFrame && b.frameIndex < startFrame + highlightFrames; })
|
|
47
89
|
.sort(function (a, b) { return a.frameIndex - b.frameIndex; });
|
|
48
90
|
var beatFrameIndices = beatsInWindow.map(function (b) { return b.frameIndex - startFrame; });
|
|
49
91
|
var beatIntensities = beatsInWindow.map(function (b) { return b.intensity; });
|
|
50
|
-
return {
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
spectrums: spectrumsSlice,
|
|
54
|
-
beatFrameIndices: beatFrameIndices,
|
|
55
|
-
beatIntensities: beatIntensities,
|
|
56
|
-
audioSegment: {
|
|
57
|
-
seekSeconds: startFrame / fps,
|
|
58
|
-
durationSeconds: highlightFrames / fps,
|
|
59
|
-
},
|
|
60
|
-
};
|
|
92
|
+
return __assign({ startFrame: startFrame,
|
|
93
|
+
highlightFrames: highlightFrames, spectrums: spectrumsSlice, beatFrameIndices: beatFrameIndices,
|
|
94
|
+
beatIntensities: beatIntensities, audioSegment: __assign({ seekSeconds: (startFrame + silentFrames) / fps, durationSeconds: (highlightFrames - silentFrames) / fps }, (silentFrames > 0 && { delaySeconds: silentFrames / fps })) }, (leadInFrames !== undefined && { leadInFrames: leadInFrames }));
|
|
61
95
|
}
|
|
62
96
|
function frameEnergy(spectrum) {
|
|
63
97
|
var s = 0;
|
|
@@ -215,16 +249,234 @@ function findBestHighlightStart(energies, totalFrames, windowFrames, excludeRang
|
|
|
215
249
|
});
|
|
216
250
|
}
|
|
217
251
|
/**
|
|
218
|
-
*
|
|
219
|
-
*
|
|
252
|
+
* Scores each frame by the rise in mean energy from the `dropWindowFrames` before it to the
|
|
253
|
+
* `dropWindowFrames` after it, and picks the best drop, i.e. a frame whose rise is the biggest
|
|
254
|
+
* within `dropWindowFrames` on either side, such that the lead-in before it plus `mainFrames`
|
|
255
|
+
* after it fit in the track and miss the excluded ranges. Frames rather than beat candidates are
|
|
256
|
+
* scored so the drop lands on the actual energy onset (a beat grid can be off by a fraction of a
|
|
257
|
+
* beat), and only peaks count so a frame just past a drop is never taken for one. Peaks rising
|
|
258
|
+
* less than `MIN_DROP_SCORE_SHARE` of the biggest one are not drops. The window
|
|
259
|
+
* starts exactly `leadInFrames` before the drop, so the whole lead-in plays. Drops too close to
|
|
260
|
+
* the track start for the full lead-in are only used (with the window starting before the track,
|
|
261
|
+
* i.e. at a negative frame) when no other drop fits.
|
|
220
262
|
*/
|
|
221
|
-
function
|
|
222
|
-
|
|
263
|
+
function findBestDropSegment(energies, totalFrames, mainFrames, leadInFrames, dropWindowFrames, excludeRanges) {
|
|
264
|
+
var _a;
|
|
265
|
+
var prefix = new Float64Array(totalFrames + 1);
|
|
266
|
+
for (var i = 0; i < totalFrames; i++) {
|
|
267
|
+
prefix[i + 1] = prefix[i] + energies[i];
|
|
268
|
+
}
|
|
269
|
+
var meanEnergy = function (from, to) {
|
|
270
|
+
var a = Math.max(0, from);
|
|
271
|
+
var b = Math.min(totalFrames, to);
|
|
272
|
+
return b > a ? (prefix[b] - prefix[a]) / (b - a) : 0;
|
|
273
|
+
};
|
|
274
|
+
var scores = new Float64Array(totalFrames);
|
|
275
|
+
for (var f = 0; f < totalFrames; f++) {
|
|
276
|
+
scores[f] = meanEnergy(f, f + dropWindowFrames) - meanEnergy(f - dropWindowFrames, f);
|
|
277
|
+
}
|
|
278
|
+
var dropFrames = [];
|
|
279
|
+
for (var f = 1; f < totalFrames; f++) {
|
|
280
|
+
if (!(scores[f] > 0)) {
|
|
281
|
+
continue;
|
|
282
|
+
}
|
|
283
|
+
var isPeak = true;
|
|
284
|
+
var from = Math.max(0, f - dropWindowFrames);
|
|
285
|
+
var to = Math.min(totalFrames - 1, f + dropWindowFrames);
|
|
286
|
+
for (var g = from; g <= to && isPeak; g++) {
|
|
287
|
+
// Ties go to the earliest frame, where the rise starts.
|
|
288
|
+
isPeak = scores[g] < scores[f] || (scores[g] === scores[f] && g >= f);
|
|
289
|
+
}
|
|
290
|
+
if (isPeak) {
|
|
291
|
+
dropFrames.push(f);
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
var maxScore = dropFrames.reduce(function (max, f) { return Math.max(max, scores[f]); }, 0);
|
|
295
|
+
var strongDropFrames = dropFrames.filter(function (f) { return scores[f] >= maxScore * MIN_DROP_SCORE_SHARE; });
|
|
296
|
+
var findBest = function (allowBeforeTrackStart) {
|
|
297
|
+
var best = null;
|
|
298
|
+
var bestScore = -Infinity;
|
|
299
|
+
for (var _i = 0, strongDropFrames_1 = strongDropFrames; _i < strongDropFrames_1.length; _i++) {
|
|
300
|
+
var dropFrame = strongDropFrames_1[_i];
|
|
301
|
+
var startFrame = dropFrame - leadInFrames;
|
|
302
|
+
if (startFrame < 0 && !allowBeforeTrackStart) {
|
|
303
|
+
continue;
|
|
304
|
+
}
|
|
305
|
+
if (dropFrame + mainFrames > totalFrames ||
|
|
306
|
+
rangesOverlap(startFrame, dropFrame + mainFrames, excludeRanges)) {
|
|
307
|
+
continue;
|
|
308
|
+
}
|
|
309
|
+
if (scores[dropFrame] > bestScore) {
|
|
310
|
+
bestScore = scores[dropFrame];
|
|
311
|
+
best = { startFrame: startFrame, dropFrame: dropFrame };
|
|
312
|
+
}
|
|
313
|
+
}
|
|
314
|
+
return best;
|
|
315
|
+
};
|
|
316
|
+
return _a = findBest(false), (_a !== null && _a !== void 0 ? _a : findBest(true));
|
|
317
|
+
}
|
|
318
|
+
/**
|
|
319
|
+
* Moves a drop (and its window start with it) onto the nearest beat within `DROP_BEAT_SNAP_SHARE`
|
|
320
|
+
* of a beat. Only done with a tempo grid: raw onsets alone are too unreliable to override the
|
|
321
|
+
* energy onset. A lead-in that fit in the track is never pushed back past its start.
|
|
322
|
+
*/
|
|
323
|
+
function snapDropToBeat(drop, beatFrames, periodFrames) {
|
|
324
|
+
if (!periodFrames || !(periodFrames > 0) || !isFinite(periodFrames)) {
|
|
325
|
+
return;
|
|
326
|
+
}
|
|
327
|
+
var beat = nearestOnset(beatFrames, drop.dropFrame);
|
|
328
|
+
if (beat === null || Math.abs(beat - drop.dropFrame) > periodFrames * DROP_BEAT_SNAP_SHARE) {
|
|
329
|
+
return;
|
|
330
|
+
}
|
|
331
|
+
var startFrame = drop.startFrame + (beat - drop.dropFrame);
|
|
332
|
+
if (startFrame < 0 && drop.startFrame >= 0) {
|
|
333
|
+
return;
|
|
334
|
+
}
|
|
335
|
+
drop.startFrame = startFrame;
|
|
336
|
+
drop.dropFrame = beat;
|
|
337
|
+
}
|
|
338
|
+
exports.snapDropToBeat = snapDropToBeat;
|
|
339
|
+
function nearestOnset(sortedOnsets, frame) {
|
|
340
|
+
var lo = 0;
|
|
341
|
+
var hi = sortedOnsets.length;
|
|
342
|
+
while (lo < hi) {
|
|
343
|
+
var mid = (lo + hi) >> 1;
|
|
344
|
+
if (sortedOnsets[mid] < frame) {
|
|
345
|
+
lo = mid + 1;
|
|
346
|
+
}
|
|
347
|
+
else {
|
|
348
|
+
hi = mid;
|
|
349
|
+
}
|
|
350
|
+
}
|
|
351
|
+
var best = null;
|
|
352
|
+
for (var _i = 0, _a = [lo - 1, lo]; _i < _a.length; _i++) {
|
|
353
|
+
var i = _a[_i];
|
|
354
|
+
if (i >= 0 && i < sortedOnsets.length) {
|
|
355
|
+
var v = sortedOnsets[i];
|
|
356
|
+
if (best === null || Math.abs(v - frame) < Math.abs(best - frame)) {
|
|
357
|
+
best = v;
|
|
358
|
+
}
|
|
359
|
+
}
|
|
360
|
+
}
|
|
361
|
+
return best;
|
|
362
|
+
}
|
|
363
|
+
/**
|
|
364
|
+
* Beat frames (sorted, unique, within [0, totalFrames]) where a highlight may start or end.
|
|
365
|
+
* With a tempo grid: tracked beats from the analyzed region, then the regular grid beyond it
|
|
366
|
+
* (each grid beat nudged onto a nearby detected onset to follow slight tempo drift).
|
|
367
|
+
* Without one: the detected onset beats.
|
|
368
|
+
*/
|
|
369
|
+
function buildBeatCandidates(fps, totalFrames, beatEvents, beatGrid) {
|
|
223
370
|
var _a, _b, _c;
|
|
371
|
+
var onsets = Array.from(new Set(beatEvents.map(function (b) { return b.frameIndex; })))
|
|
372
|
+
.filter(function (f) { return f >= 0 && f <= totalFrames; })
|
|
373
|
+
.sort(function (a, b) { return a - b; });
|
|
374
|
+
var period = (_b = (_a = beatGrid) === null || _a === void 0 ? void 0 : _a.periodFrames, (_b !== null && _b !== void 0 ? _b : 0));
|
|
375
|
+
if (!beatGrid || !(period > 0) || !isFinite(period)) {
|
|
376
|
+
return onsets;
|
|
377
|
+
}
|
|
378
|
+
var frames = new Set();
|
|
379
|
+
var lastTracked = -Infinity;
|
|
380
|
+
for (var _i = 0, _d = (_c = beatGrid.beatsSec, (_c !== null && _c !== void 0 ? _c : [])); _i < _d.length; _i++) {
|
|
381
|
+
var t = _d[_i];
|
|
382
|
+
var f = Math.round(t * fps);
|
|
383
|
+
if (f >= 0 && f <= totalFrames) {
|
|
384
|
+
frames.add(f);
|
|
385
|
+
lastTracked = Math.max(lastTracked, f);
|
|
386
|
+
}
|
|
387
|
+
}
|
|
388
|
+
var maxOnsetShift = period * GRID_ONSET_SNAP_SHARE;
|
|
389
|
+
var firstN = Math.ceil(-beatGrid.phaseFrame / period);
|
|
390
|
+
for (var n = firstN;; n++) {
|
|
391
|
+
var gridFrame = beatGrid.phaseFrame + n * period;
|
|
392
|
+
if (gridFrame > totalFrames) {
|
|
393
|
+
break;
|
|
394
|
+
}
|
|
395
|
+
if (gridFrame <= lastTracked + period / 2) {
|
|
396
|
+
continue;
|
|
397
|
+
}
|
|
398
|
+
var onset = nearestOnset(onsets, gridFrame);
|
|
399
|
+
var f = onset !== null && Math.abs(onset - gridFrame) <= maxOnsetShift
|
|
400
|
+
? onset
|
|
401
|
+
: Math.round(gridFrame);
|
|
402
|
+
if (f >= 0 && f <= totalFrames) {
|
|
403
|
+
frames.add(f);
|
|
404
|
+
}
|
|
405
|
+
}
|
|
406
|
+
return Array.from(frames).sort(function (a, b) { return a - b; });
|
|
407
|
+
}
|
|
408
|
+
exports.buildBeatCandidates = buildBeatCandidates;
|
|
409
|
+
/**
|
|
410
|
+
* Moves a fixed-length window's start and end onto beats (each by at most `maxShiftFrames`),
|
|
411
|
+
* preferring lengths that span whole bars when the beat period is known.
|
|
412
|
+
* Boundaries without a nearby beat stay where they are.
|
|
413
|
+
*/
|
|
414
|
+
function snapSegmentToBeats(seg, totalFrames, beatFrames, maxShiftFrames, periodFrames,
|
|
415
|
+
/** Keep the start where it is and only move the end. */
|
|
416
|
+
lockStart) {
|
|
417
|
+
if (lockStart === void 0) { lockStart = false; }
|
|
418
|
+
var rawStart = seg.startFrame;
|
|
419
|
+
var rawEnd = seg.startFrame + seg.highlightFrames;
|
|
420
|
+
var near = function (target, max) {
|
|
421
|
+
return beatFrames.filter(function (f) { return Math.abs(f - target) <= maxShiftFrames && f >= 0 && f <= max; });
|
|
422
|
+
};
|
|
423
|
+
var startCands = lockStart ? [rawStart] : near(rawStart, totalFrames - 1);
|
|
424
|
+
var endCands = near(rawEnd, totalFrames);
|
|
425
|
+
if (startCands.length === 0) {
|
|
426
|
+
startCands.push(rawStart);
|
|
427
|
+
}
|
|
428
|
+
if (endCands.length === 0) {
|
|
429
|
+
endCands.push(Math.min(rawEnd, totalFrames));
|
|
430
|
+
}
|
|
431
|
+
var period = periodFrames && periodFrames > 0 && isFinite(periodFrames) ? periodFrames : 0;
|
|
432
|
+
var shiftUnit = period > 0 ? period : Math.max(1, maxShiftFrames);
|
|
433
|
+
var best = null;
|
|
434
|
+
var bestCost = Infinity;
|
|
435
|
+
for (var _i = 0, startCands_1 = startCands; _i < startCands_1.length; _i++) {
|
|
436
|
+
var s = startCands_1[_i];
|
|
437
|
+
for (var _a = 0, endCands_1 = endCands; _a < endCands_1.length; _a++) {
|
|
438
|
+
var e = endCands_1[_a];
|
|
439
|
+
if (e - s < seg.highlightFrames / 2) {
|
|
440
|
+
continue;
|
|
441
|
+
}
|
|
442
|
+
var cost = (Math.abs(s - rawStart) + Math.abs(e - rawEnd)) / shiftUnit;
|
|
443
|
+
if (period > 0) {
|
|
444
|
+
var beats = Math.round((e - s) / period);
|
|
445
|
+
var offBar = Math.abs(beats - BEATS_PER_BAR * Math.round(beats / BEATS_PER_BAR));
|
|
446
|
+
cost += offBar * OFF_BAR_PENALTY;
|
|
447
|
+
}
|
|
448
|
+
if (cost < bestCost) {
|
|
449
|
+
bestCost = cost;
|
|
450
|
+
best = { startFrame: s, endFrame: e };
|
|
451
|
+
}
|
|
452
|
+
}
|
|
453
|
+
}
|
|
454
|
+
if (!best) {
|
|
455
|
+
return seg;
|
|
456
|
+
}
|
|
457
|
+
return { startFrame: best.startFrame, highlightFrames: best.endFrame - best.startFrame };
|
|
458
|
+
}
|
|
459
|
+
exports.snapSegmentToBeats = snapSegmentToBeats;
|
|
460
|
+
/**
|
|
461
|
+
* Picks up to `segmentCount` non-overlapping ~15s windows with highest summed spectral energy each,
|
|
462
|
+
* moves their boundaries onto beats (see `snapSegmentToBeats`), sorts them chronologically,
|
|
463
|
+
* concatenates spectrums, and remaps beat indices.
|
|
464
|
+
*
|
|
465
|
+
* With `leadInFrames` (e.g. a hook video's length), each window is instead built around a detected
|
|
466
|
+
* drop: it starts `leadInFrames` before the drop, so the whole lead-in plays and ends on the drop
|
|
467
|
+
* (see `HighlightRun.leadInFrames`), and runs ~15s past the drop, so the lead-in is added on top of
|
|
468
|
+
* the ~15s rather than taken out of it. With a tempo grid, the drop is moved onto a nearby beat
|
|
469
|
+
* (see `snapDropToBeat`), so the hook ends on the beat. When no drop fits, the lead-in is put before the energy
|
|
470
|
+
* window instead. The lead-in is never shortened: where it reaches back past the track start,
|
|
471
|
+
* the run starts at a negative frame and that part is silent (see `buildHighlightRun`).
|
|
472
|
+
*/
|
|
473
|
+
function computeHighlightSlice(fps, totalFrames, spectrums, beatEvents, segmentCount, beatGrid, leadInFrames) {
|
|
474
|
+
if (segmentCount === void 0) { segmentCount = 1; }
|
|
475
|
+
var _a, _b, _c, _d, _e, _f;
|
|
224
476
|
return __awaiter(this, void 0, void 0, function () {
|
|
225
|
-
var highlightFramesTarget,
|
|
226
|
-
return __generator(this, function (
|
|
227
|
-
switch (
|
|
477
|
+
var highlightFramesTarget, leadIn, fullSeg, fullRun, highlightFrames, energies, excludeRanges, rawSegments, beatFrames, maxShiftFrames, useDrops, dropWindowFrames, n, k, drop, main, dropLeadIn, startFrame, snapped, windowLeadIn, runs, slicedSpectrums, beatFrameIndices, beatIntensities, outOffset, _i, runs_1, run_1, totalHighlightFrames, audioSegments, first;
|
|
478
|
+
return __generator(this, function (_g) {
|
|
479
|
+
switch (_g.label) {
|
|
228
480
|
case 0:
|
|
229
481
|
highlightFramesTarget = Math.ceil(exports.HIGHLIGHT_DURATION_SEC * fps);
|
|
230
482
|
if (totalFrames <= 0) {
|
|
@@ -241,50 +493,83 @@ function computeHighlightSlice(fps, totalFrames, spectrums, beatEvents, segmentC
|
|
|
241
493
|
}];
|
|
242
494
|
}
|
|
243
495
|
if (totalFrames <= highlightFramesTarget) {
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
},
|
|
249
|
-
];
|
|
250
|
-
fullSeg = { startFrame: 0, highlightFrames: totalFrames };
|
|
496
|
+
leadIn = leadInFrames !== undefined && leadInFrames > 0 ? leadInFrames : 0;
|
|
497
|
+
fullSeg = leadIn > 0
|
|
498
|
+
? { startFrame: -leadIn, highlightFrames: leadIn + totalFrames, leadInFrames: leadIn }
|
|
499
|
+
: { startFrame: 0, highlightFrames: totalFrames };
|
|
251
500
|
fullRun = buildHighlightRun(fps, fullSeg, spectrums, beatEvents);
|
|
252
501
|
return [2 /*return*/, {
|
|
253
|
-
startFrame:
|
|
254
|
-
highlightFrames:
|
|
255
|
-
spectrums: spectrums
|
|
502
|
+
startFrame: fullRun.startFrame,
|
|
503
|
+
highlightFrames: fullRun.highlightFrames,
|
|
504
|
+
spectrums: fullRun.spectrums,
|
|
256
505
|
beatFrameIndices: fullRun.beatFrameIndices,
|
|
257
506
|
beatIntensities: fullRun.beatIntensities,
|
|
258
|
-
audioSeekSeconds:
|
|
259
|
-
audioDurationSeconds:
|
|
260
|
-
audioSegments:
|
|
507
|
+
audioSeekSeconds: fullRun.audioSegment.seekSeconds,
|
|
508
|
+
audioDurationSeconds: fullRun.audioSegment.durationSeconds,
|
|
509
|
+
audioSegments: [fullRun.audioSegment],
|
|
261
510
|
runs: [fullRun],
|
|
262
511
|
}];
|
|
263
512
|
}
|
|
264
513
|
highlightFrames = highlightFramesTarget;
|
|
265
514
|
return [4 /*yield*/, buildFrameEnergies(spectrums, totalFrames)];
|
|
266
515
|
case 1:
|
|
267
|
-
energies =
|
|
516
|
+
energies = _g.sent();
|
|
268
517
|
excludeRanges = [];
|
|
269
518
|
rawSegments = [];
|
|
519
|
+
beatFrames = buildBeatCandidates(fps, totalFrames, beatEvents, beatGrid);
|
|
520
|
+
maxShiftFrames = Math.round(exports.MAX_BEAT_SNAP_SEC * fps);
|
|
521
|
+
useDrops = leadInFrames !== undefined && leadInFrames > 0;
|
|
522
|
+
dropWindowFrames = Math.round(exports.DROP_WINDOW_SEC * fps);
|
|
270
523
|
n = Math.max(1, Math.floor(segmentCount));
|
|
271
524
|
k = 0;
|
|
272
|
-
|
|
525
|
+
_g.label = 2;
|
|
273
526
|
case 2:
|
|
274
|
-
if (!(k < n)) return [3 /*break*/,
|
|
275
|
-
|
|
527
|
+
if (!(k < n)) return [3 /*break*/, 7];
|
|
528
|
+
drop = useDrops
|
|
529
|
+
? findBestDropSegment(energies, totalFrames, highlightFrames, leadInFrames, dropWindowFrames, excludeRanges)
|
|
530
|
+
: null;
|
|
531
|
+
if (!drop) return [3 /*break*/, 4];
|
|
532
|
+
snapDropToBeat(drop, beatFrames, (_a = beatGrid) === null || _a === void 0 ? void 0 : _a.periodFrames);
|
|
533
|
+
main = snapSegmentToBeats({ startFrame: drop.dropFrame, highlightFrames: highlightFrames }, totalFrames, beatFrames, maxShiftFrames, (_b = beatGrid) === null || _b === void 0 ? void 0 : _b.periodFrames, true);
|
|
534
|
+
dropLeadIn = drop.dropFrame - drop.startFrame;
|
|
535
|
+
rawSegments.push({
|
|
536
|
+
startFrame: drop.startFrame,
|
|
537
|
+
highlightFrames: dropLeadIn + main.highlightFrames,
|
|
538
|
+
leadInFrames: dropLeadIn,
|
|
539
|
+
});
|
|
540
|
+
excludeRanges.push({
|
|
541
|
+
start: drop.startFrame - maxShiftFrames,
|
|
542
|
+
endExclusive: main.startFrame + main.highlightFrames + maxShiftFrames,
|
|
543
|
+
});
|
|
544
|
+
return [4 /*yield*/, waitForEventLoop_1.waitForEventLoop()];
|
|
276
545
|
case 3:
|
|
277
|
-
|
|
546
|
+
_g.sent();
|
|
547
|
+
return [3 /*break*/, 6];
|
|
548
|
+
case 4: return [4 /*yield*/, findBestHighlightStart(energies, totalFrames, highlightFrames, excludeRanges)];
|
|
549
|
+
case 5:
|
|
550
|
+
startFrame = _g.sent();
|
|
278
551
|
if (startFrame === null) {
|
|
279
|
-
return [3 /*break*/,
|
|
552
|
+
return [3 /*break*/, 7];
|
|
280
553
|
}
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
554
|
+
snapped = snapSegmentToBeats({ startFrame: startFrame, highlightFrames: highlightFrames }, totalFrames, beatFrames, maxShiftFrames, (_c = beatGrid) === null || _c === void 0 ? void 0 : _c.periodFrames);
|
|
555
|
+
windowLeadIn = useDrops ? leadInFrames : 0;
|
|
556
|
+
rawSegments.push(windowLeadIn > 0
|
|
557
|
+
? {
|
|
558
|
+
startFrame: snapped.startFrame - windowLeadIn,
|
|
559
|
+
highlightFrames: windowLeadIn + snapped.highlightFrames,
|
|
560
|
+
leadInFrames: windowLeadIn,
|
|
561
|
+
}
|
|
562
|
+
: snapped);
|
|
563
|
+
// Padded so the next raw window, once snapped, cannot reach back into this one.
|
|
564
|
+
excludeRanges.push({
|
|
565
|
+
start: snapped.startFrame - maxShiftFrames,
|
|
566
|
+
endExclusive: snapped.startFrame + snapped.highlightFrames + maxShiftFrames,
|
|
567
|
+
});
|
|
568
|
+
_g.label = 6;
|
|
569
|
+
case 6:
|
|
285
570
|
k++;
|
|
286
571
|
return [3 /*break*/, 2];
|
|
287
|
-
case
|
|
572
|
+
case 7:
|
|
288
573
|
rawSegments.sort(function (a, b) { return a.startFrame - b.startFrame; });
|
|
289
574
|
runs = rawSegments.map(function (seg) {
|
|
290
575
|
return buildHighlightRun(fps, seg, spectrums, beatEvents);
|
|
@@ -293,31 +578,18 @@ function computeHighlightSlice(fps, totalFrames, spectrums, beatEvents, segmentC
|
|
|
293
578
|
beatFrameIndices = [];
|
|
294
579
|
beatIntensities = [];
|
|
295
580
|
outOffset = 0;
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
slicedSpectrums.push.apply(slicedSpectrums,
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
for (var _i = 0, beatsInSeg_1 = beatsInSeg; _i < beatsInSeg_1.length; _i++) {
|
|
303
|
-
var b = beatsInSeg_1[_i];
|
|
304
|
-
beatFrameIndices.push(b.frameIndex - seg.startFrame + outOffset);
|
|
305
|
-
beatIntensities.push(b.intensity);
|
|
306
|
-
}
|
|
307
|
-
outOffset += seg.highlightFrames;
|
|
308
|
-
};
|
|
309
|
-
for (_i = 0, rawSegments_1 = rawSegments; _i < rawSegments_1.length; _i++) {
|
|
310
|
-
seg = rawSegments_1[_i];
|
|
311
|
-
_loop_1(seg);
|
|
581
|
+
for (_i = 0, runs_1 = runs; _i < runs_1.length; _i++) {
|
|
582
|
+
run_1 = runs_1[_i];
|
|
583
|
+
slicedSpectrums.push.apply(slicedSpectrums, run_1.spectrums);
|
|
584
|
+
beatFrameIndices.push.apply(beatFrameIndices, run_1.beatFrameIndices.map(function (frameIndex) { return frameIndex + outOffset; }));
|
|
585
|
+
beatIntensities.push.apply(beatIntensities, run_1.beatIntensities);
|
|
586
|
+
outOffset += run_1.highlightFrames;
|
|
312
587
|
}
|
|
313
588
|
totalHighlightFrames = slicedSpectrums.length;
|
|
314
|
-
audioSegments =
|
|
315
|
-
|
|
316
|
-
durationSeconds: seg.highlightFrames / fps,
|
|
317
|
-
}); });
|
|
318
|
-
first = (_a = audioSegments[0], (_a !== null && _a !== void 0 ? _a : { seekSeconds: 0, durationSeconds: 0 }));
|
|
589
|
+
audioSegments = runs.map(function (run) { return run.audioSegment; });
|
|
590
|
+
first = (_d = audioSegments[0], (_d !== null && _d !== void 0 ? _d : { seekSeconds: 0, durationSeconds: 0 }));
|
|
319
591
|
return [2 /*return*/, {
|
|
320
|
-
startFrame: (
|
|
592
|
+
startFrame: (_f = (_e = rawSegments[0]) === null || _e === void 0 ? void 0 : _e.startFrame, (_f !== null && _f !== void 0 ? _f : 0)),
|
|
321
593
|
highlightFrames: totalHighlightFrames,
|
|
322
594
|
spectrums: slicedSpectrums,
|
|
323
595
|
beatFrameIndices: beatFrameIndices,
|
package/dist/highlight.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"highlight.js","sourceRoot":"","sources":["../src/highlight.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"highlight.js","sourceRoot":"","sources":["../src/highlight.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import { rotationAliasValues, SpectrumEffect } from './config';
|
|
3
3
|
import { Color } from './image';
|
|
4
4
|
export { BeatInfo, BeatDetectorOptions, TempoEstimate, estimateTempo, beatGridFrameIndices, shiftTempoPhase, tempoForWindow } from './beats';
|
|
5
|
-
export { computeHighlightSlice, HIGHLIGHT_DURATION_SEC, BeatFrameEvent, HighlightAudioSegment, HighlightRun } from './highlight';
|
|
5
|
+
export { computeHighlightSlice, HIGHLIGHT_DURATION_SEC, MAX_BEAT_SNAP_SEC, BeatFrameEvent, HighlightAudioSegment, HighlightRun, HighlightBeatGrid } from './highlight';
|
|
6
6
|
export declare const PCM_FORMAT: {
|
|
7
7
|
bit: number;
|
|
8
8
|
sign: string;
|
|
@@ -12,7 +12,7 @@ export interface Config {
|
|
|
12
12
|
audio: {
|
|
13
13
|
path: string;
|
|
14
14
|
autoHighlight?: boolean;
|
|
15
|
-
/** When `autoHighlight` is true, number of non-overlapping 15s windows to stitch (default 1). */
|
|
15
|
+
/** When `autoHighlight` is true, number of non-overlapping ~15s beat-aligned windows to stitch (default 1). */
|
|
16
16
|
autoHighlightCount?: number;
|
|
17
17
|
};
|
|
18
18
|
image?: {
|
|
@@ -26,6 +26,14 @@ export interface Config {
|
|
|
26
26
|
* videos instead of auto-detecting scene changes within a single video.
|
|
27
27
|
*/
|
|
28
28
|
path: string | string[];
|
|
29
|
+
/**
|
|
30
|
+
* Video played once, always in full, before the `path` video(s). When `audio.autoHighlight`
|
|
31
|
+
* is true, each highlight is chosen so the hook ends on a detected drop and `path` starts with it,
|
|
32
|
+
* playing ~15s from the drop (the hook comes on top of the ~15s rather than being counted in it).
|
|
33
|
+
* If the drop is closer to the track start than the hook's length, the track is preceded by silence.
|
|
34
|
+
* The hook's sound, if any, is mixed over the track, which fades in from silence to full volume while the hook plays.
|
|
35
|
+
*/
|
|
36
|
+
hookPath?: string;
|
|
29
37
|
autoEdit?: boolean;
|
|
30
38
|
/** When `autoEdit` is true, disables the brief camera shake applied on cuts, or every 2 beats when there are no cuts (default true). */
|
|
31
39
|
cameraShake?: boolean;
|