diff options
Diffstat (limited to 'src/audio')
| -rw-r--r-- | src/audio/gen.cc | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/src/audio/gen.cc b/src/audio/gen.cc index 148fc68..5604457 100644 --- a/src/audio/gen.cc +++ b/src/audio/gen.cc @@ -69,9 +69,14 @@ std::vector<float> generate_note_spectrogram(const NoteParams& params, float dct_chunk[DCT_SIZE]; fdct_512(pcm_chunk, dct_chunk); - // Copy to buffer + // Scale up to compensate for orthonormal normalization + // Old non-orthonormal DCT had no sqrt scaling, so output was ~sqrt(N/2) larger + // Scale factor: sqrt(DCT_SIZE / 2) = sqrt(256) = 16 + const float scale_factor = sqrtf(DCT_SIZE / 2.0f); + + // Copy to buffer with scaling for (int i = 0; i < DCT_SIZE; ++i) { - spec_data[f * DCT_SIZE + i] = dct_chunk[i]; + spec_data[f * DCT_SIZE + i] = dct_chunk[i] * scale_factor; } } |
