summaryrefslogtreecommitdiff
path: root/tools/editor/script.js
diff options
context:
space:
mode:
Diffstat (limited to 'tools/editor/script.js')
-rw-r--r--tools/editor/script.js13
1 files changed, 10 insertions, 3 deletions
diff --git a/tools/editor/script.js b/tools/editor/script.js
index abfd4f4..ebc543a 100644
--- a/tools/editor/script.js
+++ b/tools/editor/script.js
@@ -631,11 +631,18 @@ async function playSpectrogramData(specData) {
// Convert spectrogram frames (frequency domain) to audio samples (time domain)
for (let frameIndex = 0; frameIndex < numFrames; frameIndex++) {
const spectralFrame = specData.data.slice(frameIndex * dctSize, (frameIndex + 1) * dctSize);
- const timeDomainFrame = javascript_idct_512(spectralFrame);
- // Apply Hanning window for smooth transitions
+ // Apply window to spectrum before IDCT (matches C++ synth.cc)
+ const windowedSpectral = new Float32Array(dctSize);
for (let i = 0; i < dctSize; i++) {
- audioData[frameIndex * dctSize + i] = timeDomainFrame[i] * hanningWindowArray[i];
+ windowedSpectral[i] = spectralFrame[i] * hanningWindowArray[i];
+ }
+
+ const timeDomainFrame = javascript_idct_512(windowedSpectral);
+
+ // Direct output (no additional windowing)
+ for (let i = 0; i < dctSize; i++) {
+ audioData[frameIndex * dctSize + i] = timeDomainFrame[i];
}
}