From b86153c110251af9c9302af53acacac3e8812791 Mon Sep 17 00:00:00 2001 From: Tortuga veloz Date: Wed, 12 Mar 2025 14:20:33 +0100 Subject: [PATCH] Fix spectrogram. --- src/audio/audio_general.c | 14 ++++++++++---- src/audio/audio_thread.c | 2 +- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/src/audio/audio_general.c b/src/audio/audio_general.c index c54407a5..22f0f7c6 100644 --- a/src/audio/audio_general.c +++ b/src/audio/audio_general.c @@ -2251,7 +2251,7 @@ void Audio_AnalyzeFrequencies(f32* buffer0, f32* buffer1, s32 length, f32* buffe s32 size; size = 1 << length; - half = size >> 1; + half = size / 2; // Initialize buffer 2 if it is the wrong size for this calculation if (size != (s32) buffer2[0]) { @@ -2335,9 +2335,15 @@ u8* Audio_UpdateFrequencyAnalysis(void) { Audio_ProcessPlaylist(); // clang-format off - aiData = gAiBuffers[gCurAiBuffIndex];\ - for(i3 = 0; i3 < 256; i3++) {\ - sAudioAnalyzerData[i3] = *aiData++; + aiData = gAiBuffers[gCurAiBuffIndex]; + int numChannels = GetNumAudioChannels(); + for(i3 = 0; i3 < 256; i3++) { + sAudioAnalyzerData[i3] = *aiData; + if (i3 % 2 == 0) { + aiData++; + } else { + aiData += numChannels - 1; + } } // clang-format on Audio_AnalyzeFrequencies(sAudioAnalyzerData, sAnalyzerBuffer1, 8, sAnalyzerBuffer2); diff --git a/src/audio/audio_thread.c b/src/audio/audio_thread.c index 4853158b..09eaa2f8 100644 --- a/src/audio/audio_thread.c +++ b/src/audio/audio_thread.c @@ -82,7 +82,7 @@ void AudioThread_CreateNextAudioBuffer(s16* samples, u32 num_samples) { AudioSynth_Update(gCurAbiCmdBuffer, &abiCmdCount, samples, num_samples); // Spectrum Analyzer fix - memcpy(gAiBuffers[gCurAiBuffIndex], samples, num_samples * sizeof(s16)); + memcpy(gAiBuffers[gCurAiBuffIndex], samples, GetNumAudioChannels() * num_samples * sizeof(s16)); gAudioRandom = osGetCount() * (gAudioRandom + gAudioTaskCountQ); }