diff --git a/src/spectrogram.c b/src/spectrogram.c index 65c2c6d..bfe1dd7 100644 --- a/src/spectrogram.c +++ b/src/spectrogram.c @@ -614,6 +614,7 @@ static void ApplyHannWindow(float* samples, int n) static void ComputeSTFTInit(AudioSignal* signal, StftResult* result, int fftSize) { + FreeSTFT(result); // release any previous result before reallocating int hopSize = fftSize / HOP_RATIO; // 75% overlap int numSegments = (signal->numSamples - fftSize) / hopSize + 1; if (numSegments <= 0) numSegments = 1; @@ -913,6 +914,7 @@ static bool LoadWavFile(const char* filepath, AudioSignal* signal) signal->channels = wave.channels; signal->numSamples = wave.frameCount * wave.channels; signal->duration = (float)wave.frameCount / wave.sampleRate; + if (signal->samples) free(signal->samples); // free previous file's samples signal->samples = (float*)malloc(signal->numSamples * sizeof(float)); if (wave.sampleSize == 16) { @@ -965,6 +967,7 @@ static void GenerateSpectrogramTexture(StftResult* stft, Image* image, Texture2D int fftSize = (height - 1) * 2; float freqPerBin = (float)stft->sampleRate / fftSize; + UnloadImage(*image); // release previous image (NULL-safe on first call) *image = GenImageColor(width, height, BLACK); Color* pixels = (Color*)image->data;