Skip to content

Commit 249b6e3

Browse files
committed
implements new window functions
1 parent 723a023 commit 249b6e3

24 files changed

+625
-152
lines changed

demo/demo1.html

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -44,14 +44,14 @@
4444
snapshotCanvas.width = 1024
4545

4646
const context = new AudioContext({ sampleRate: SAMPLE_RATE })
47-
47+
const nativeAnalyserNode = context.createAnalyser()
4848
const audioSource = context.createMediaStreamSource(stream);
4949

5050
const bottomMargin = 30
5151
const analyserNode = await advancedAnalyserNode.createAdvancedAnalyserNode(context, {
5252
fftSize: FFT_SIZE,
5353
samplesBetweenTransforms: FFT_SIZE,
54-
windowFunction: 'none'
54+
windowFunction: 'rectangular'
5555
})
5656

5757
const drawFrame = (canvas, context2d, data) => {
@@ -70,10 +70,12 @@
7070
drawFrame(canvas, context2d, detail)
7171
})
7272
audioSource.connect(analyserNode)
73+
audioSource.connect(nativeAnalyserNode);
74+
7375

7476
floatFrequencyButton.onclick = async () => {
7577
const response = await analyserNode.getFloatFrequencyData()
76-
78+
drawFrame(snapshotCanvas, snapshotContext2d, response)
7779
output.innerHTML =
7880
`
7981
\nFloat Frequency Data
@@ -84,8 +86,6 @@
8486
}
8587

8688
byteFrequencyButton.onclick = async () => {
87-
const response = await analyserNode.getByteFrequencyData()
88-
drawFrame(snapshotCanvas, snapshotContext2d, response)
8989
output.innerHTML =
9090
`
9191
\nByte Frequency Data

demo/demo2.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@
5151
const analyserNode = await advancedAnalyserNode.createAdvancedAnalyserNode(context, {
5252
fftSize: FFT_SIZE,
5353
samplesBetweenTransforms: FFT_SIZE,
54-
windowFunction: 'none'
54+
windowFunction: 'rectangular'
5555
})
5656

5757
const drawFrame = (canvas, context2d, data) => {

dist/bundle.js

Lines changed: 13 additions & 5 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/bundle.min.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/processor.worklet.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/src/constants.d.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
11
export declare const MAX_FFT_SIZE = 32768;
22
export declare const MIN_FFT_SIZE = 32;
3+
export declare const PROCESSOR_NAME = "AdvancedAnalyserProcessor";

dist/src/processor/index.d.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ export declare class AdvancedAnalyserProcessor extends AudioWorkletProcessor {
1010
_fftOutput: number[];
1111
_lastTransform: Float32Array;
1212
_samplesBetweenTransforms: number;
13-
_timeDomainSamplesCount: number;
1413
_windowFunctionType: WindowingFunctionTypes;
1514
_isListeningTo: Record<EventListenerTypes, boolean>;
1615
/**
@@ -27,10 +26,13 @@ export declare class AdvancedAnalyserProcessor extends AudioWorkletProcessor {
2726
_maxDecibels: number;
2827
_smoothingTimeConstant: number;
2928
_portMap: Map<any, any>;
29+
_timeDomainSamplesCountValue?: number;
3030
get _frequencyBinCount(): number;
3131
set frequencyBinCount(value: number);
3232
get _isListeningToFrequencyData(): boolean;
3333
get _isListeningToTimeDomainData(): boolean;
34+
get _timeDomainSamplesCount(): number;
35+
set _timeDomainSamplesCount(value: number);
3436
static get parameterDescriptors(): {
3537
name: string;
3638
defaultValue: number;

dist/src/processor/index.test.d.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
export {};
1+
import 'jest-extended';
Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,10 @@
1-
import { WindowingFunctionTypes } from "src/types";
2-
export declare const applyBlackmanWindow: (samples: Float32Array) => void;
3-
export declare const windowFunctionsMap: Record<WindowingFunctionTypes, (samples: Float32Array) => void>;
1+
import { WindowingFunctionTypes } from "../types";
2+
export declare const hann: (n: number, points: number) => number;
3+
export declare const hamming: (n: number, points: number) => number;
4+
export declare const blackman: (n: number, points: number) => number;
5+
export declare const nuttall: (n: number, points: number) => number;
6+
export declare const blackmanHarris: (n: number, points: number) => number;
7+
export declare const blackmanNuttall: (n: number, points: number) => number;
8+
export declare const barlett: (n: number, points: number) => number;
9+
export declare const applyWindowFunction: (data: Float32Array, windowingFunction: (n: number, points: number, alpha?: number) => number, alpha?: number) => void;
10+
export declare const windowFunctionsMap: Record<WindowingFunctionTypes, (samples: Float32Array, alpha?: number) => void>;
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export {};

0 commit comments

Comments
 (0)