summaryrefslogtreecommitdiff
path: root/tools/editor/dct.js
blob: e48ce2bd7cbf797108095d7408e83e0f1a31daf4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
const dctSize = 512; // Default DCT size, read from header

// --- Utility Functions for Audio Processing ---
// JavaScript equivalent of C++ idct_512
function javascript_idct_512(input) {
    const output = new Float32Array(dctSize);
    const PI = Math.PI;
    const N = dctSize;

    for (let n = 0; n < N; ++n) {
        let sum = input[0] / 2.0;
        for (let k = 1; k < N; ++k) {
            sum += input[k] * Math.cos((PI / N) * k * (n + 0.5));
        }
        output[n] = sum * (2.0 / N);
    }
    return output;
}

// Hanning window for smooth audio transitions (JavaScript equivalent)
function hanningWindow(size) {
    const window = new Float32Array(size);
    const PI = Math.PI;
    for (let i = 0; i < size; i++) {
        window[i] = 0.5 * (1 - Math.cos((2 * PI * i) / (size - 1)));
    }
    return window;
}

const hanningWindowArray = hanningWindow(dctSize); // Pre-calculate window