From f78841e0d90b739e4dcfb08d5bf27cb64cd84bdc Mon Sep 17 00:00:00 2001 From: Oliver James Date: Thu, 8 Aug 2024 14:01:46 +0100 Subject: [PATCH] SimpleFFTDemo: Use BitmapData to improve performance when modifying pixel colours --- examples/Audio/SimpleFFTDemo.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/examples/Audio/SimpleFFTDemo.h b/examples/Audio/SimpleFFTDemo.h index bdffbd2028..897f8619c3 100644 --- a/examples/Audio/SimpleFFTDemo.h +++ b/examples/Audio/SimpleFFTDemo.h @@ -164,13 +164,15 @@ public: // show up the detail clearly auto maxLevel = FloatVectorOperations::findMinAndMax (fftData, fftSize / 2); + Image::BitmapData bitmap { spectrogramImage, rightHandEdge, 0, 1, imageHeight, Image::BitmapData::writeOnly }; + for (auto y = 1; y < imageHeight; ++y) { auto skewedProportionY = 1.0f - std::exp (std::log ((float) y / (float) imageHeight) * 0.2f); auto fftDataIndex = jlimit (0, fftSize / 2, (int) (skewedProportionY * (int) fftSize / 2)); auto level = jmap (fftData[fftDataIndex], 0.0f, jmax (maxLevel.getEnd(), 1e-5f), 0.0f, 1.0f); - spectrogramImage.setPixelAt (rightHandEdge, y, Colour::fromHSV (level, 1.0f, level, 1.0f)); + bitmap.setPixelColour (0, y, Colour::fromHSV (level, 1.0f, level, 1.0f)); } }