UNPKG

dsp-collection

Version:

A collection of JavaScript modules for digital signal processing (written in TypeScript)

27 lines 1.67 kB
import * as AdaptiveStft from "./AdaptiveStft.js"; export function instFreqSingle_relWindow(samples, position, roughtMeasuringFrequency, shiftFactor, relWindowWidth, windowFunction) { const shiftDistance = Math.max(1, shiftFactor / roughtMeasuringFrequency); const pos1 = position - shiftDistance / 2; const pos2 = position + shiftDistance / 2; const r1 = AdaptiveStft.getSingle_relWindow(samples, roughtMeasuringFrequency, pos1, relWindowWidth, windowFunction); const r2 = AdaptiveStft.getSingle_relWindow(samples, roughtMeasuringFrequency, pos2, relWindowWidth, windowFunction); if (!r1 || !r2) { return; } if (r1.frequency != r2.frequency || r1.windowStartPosition >= r2.windowStartPosition || r1.windowWidth != r2.windowWidth) { throw new Error(); } const measuringFrequency = r1.frequency; const realShiftDistance = r2.windowStartPosition - r1.windowStartPosition; const phase1 = r1.component.arg(); const phase2 = r2.component.arg(); const phaseDelta = (phase2 + 2 * Math.PI - phase1) % (2 * Math.PI); const instFrequency = phaseDelta / (2 * Math.PI) / realShiftDistance; const amplitude = (r1.component.abs() + r2.component.abs()) / 2; return { instFrequency, measuringFrequency, amplitude }; } export function instFreqSingle_maxWindow(samples, position, roughtMeasuringFrequency, shiftFactor, maxWindowWidth, windowFunction) { const relWindowWidth = Math.floor(maxWindowWidth * roughtMeasuringFrequency); return instFreqSingle_relWindow(samples, position, roughtMeasuringFrequency, shiftFactor, relWindowWidth, windowFunction); } //# sourceMappingURL=InstFreq.js.map