From 373a69d7f3502375a09e5b53d7a7203dd9113dcb Mon Sep 17 00:00:00 2001 From: rami Date: Fri, 26 Dec 2025 10:28:06 -0800 Subject: [PATCH 1/6] build issue workaround --- CMakeLists.txt | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index ab2d8e0..190d7ab 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,5 +1,17 @@ cmake_minimum_required(VERSION 3.24.1) +# TODO figure this out +# https://stackoverflow.com/questions/47087237/cmake-and-ninja-rebuild-unnecessary-files +option(LINUX_REBUILD_WORKAROUND "ignore system headers for detecting dirty files" OFF) +if(LINUX_REBUILD_WORKAROUND) + file( + WRITE "${CMAKE_BINARY_DIR}/GNUMakeRulesOverwrite.cmake" + "STRING(REPLACE \"-MD\" \"-MMD\" CMAKE_DEPFILE_FLAGS_C \"\${CMAKE_DEPFILE_FLAGS_C}\")\n" + "STRING(REPLACE \"-MD\" \"-MMD\" CMAKE_DEPFILE_FLAGS_CXX \"\${CMAKE_DEPFILE_FLAGS_CXX}\")\n" + ) + set(CMAKE_USER_MAKE_RULES_OVERRIDE "${CMAKE_BINARY_DIR}/GNUMakeRulesOverwrite.cmake" CACHE INTERNAL "") +endif() + project(VainSpectrumAnalyzer VERSION 1.0.0) include(FetchContent) From 36c52b2d719480ace40287fda81196ef789a948e Mon Sep 17 00:00:00 2001 From: rami Date: Fri, 26 Dec 2025 10:50:55 -0800 Subject: [PATCH 2/6] powf bad --- .../SpectrumAnalyzer/SpectrumAnalyzerCurve.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Modules/vsa_spectrum_analyzer/SpectrumAnalyzer/SpectrumAnalyzerCurve.cpp b/Modules/vsa_spectrum_analyzer/SpectrumAnalyzer/SpectrumAnalyzerCurve.cpp index c5f09bb..2848726 100644 --- a/Modules/vsa_spectrum_analyzer/SpectrumAnalyzer/SpectrumAnalyzerCurve.cpp +++ b/Modules/vsa_spectrum_analyzer/SpectrumAnalyzer/SpectrumAnalyzerCurve.cpp @@ -41,7 +41,7 @@ static float getParameterValueFromFrequency(const float frequency) const float num = std::log(frequency - MinFrequency); const float den = std::log(MaxFrequency - MinFrequency); - return std::powf(num / den, 2.0f); + return std::pow(num / den, 2.0f); } //----------------------------------------------------------------------------- From feedc3ea828426d1656f28e1c659f2cb2eae3723 Mon Sep 17 00:00:00 2001 From: rami Date: Fri, 26 Dec 2025 10:56:53 -0800 Subject: [PATCH 3/6] compiles --- Tests/CMakeLists.txt | 7 +++++++ Tests/SpectrumAnalyzerTests.h | 4 ++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/Tests/CMakeLists.txt b/Tests/CMakeLists.txt index fbd409a..39cdfda 100644 --- a/Tests/CMakeLists.txt +++ b/Tests/CMakeLists.txt @@ -11,6 +11,13 @@ FetchContent_MakeAvailable(gtest) add_executable(Tests Tests.cpp) +target_compile_definitions( + Tests + PUBLIC + JUCE_WEB_BROWSER=0 + JUCE_USE_CURL=0 +) + target_link_libraries( Tests diff --git a/Tests/SpectrumAnalyzerTests.h b/Tests/SpectrumAnalyzerTests.h index 1485ad0..b77ea63 100644 --- a/Tests/SpectrumAnalyzerTests.h +++ b/Tests/SpectrumAnalyzerTests.h @@ -199,10 +199,10 @@ TEST(SpectrumAnalyzerTests, SpectrumAnalyzerBufferTest) float f{ 0.0f }; int loopCount2{ Size }; - for(auto f : fftSpan) + for(auto ff : fftSpan) { loopCount2--; - EXPECT_EQ(f, f); + EXPECT_EQ(ff, f); f += 1.0f; } EXPECT_EQ(loopCount2, 0); From cc19a88aa2455126523cee6d559fdae210cbbe7d Mon Sep 17 00:00:00 2001 From: Bradly Landucci Date: Mon, 12 Jan 2026 19:34:57 -0800 Subject: [PATCH 4/6] Issue #2 - Remove static time slice thread in SpectrumAnalyzer --- DemoPlugin/PluginEditor.cpp | 13 +++-- DemoPlugin/PluginEditor.h | 2 +- .../SpectrumAnalyzer/SpectrumAnalyzer.cpp | 49 ++++--------------- .../SpectrumAnalyzer/SpectrumAnalyzer.h | 22 ++++----- .../SpectrumAnalyzerComponent.cpp | 19 +++---- .../SpectrumAnalyzerComponent.h | 6 +-- 6 files changed, 40 insertions(+), 71 deletions(-) diff --git a/DemoPlugin/PluginEditor.cpp b/DemoPlugin/PluginEditor.cpp index d2ac378..42a4012 100644 --- a/DemoPlugin/PluginEditor.cpp +++ b/DemoPlugin/PluginEditor.cpp @@ -2,10 +2,13 @@ //------------------------------------------------------------------------------------------------------- -SpectrumAnalyzerAudioProcessorEditor::SpectrumAnalyzerAudioProcessorEditor(juce::AudioProcessor &p, vsa::AudioBufferFifo &source) +SpectrumAnalyzerAudioProcessorEditor::SpectrumAnalyzerAudioProcessorEditor(juce::AudioProcessor &p, + vsa::AudioBufferFifo &source) : juce::AudioProcessorEditor(p) - , m_analyzer(source) + , m_thread("fft") + , m_analyzer(source, m_thread) { + m_thread.startThread(); setSize(1000, 400); addAndMakeVisible(m_analyzer); m_analyzer.startTimerHz(60); @@ -13,7 +16,11 @@ SpectrumAnalyzerAudioProcessorEditor::SpectrumAnalyzerAudioProcessorEditor(juce: //------------------------------------------------------------------------------------------------------- -SpectrumAnalyzerAudioProcessorEditor::~SpectrumAnalyzerAudioProcessorEditor() = default; +SpectrumAnalyzerAudioProcessorEditor::~SpectrumAnalyzerAudioProcessorEditor() +{ + m_thread.removeAllClients(); + m_thread.stopThread(100); +} //------------------------------------------------------------------------------------------------------- diff --git a/DemoPlugin/PluginEditor.h b/DemoPlugin/PluginEditor.h index 25c3dc6..3e04875 100644 --- a/DemoPlugin/PluginEditor.h +++ b/DemoPlugin/PluginEditor.h @@ -17,8 +17,8 @@ class SpectrumAnalyzerAudioProcessorEditor final : public juce::AudioProcessorEd void resized() override; private: + juce::TimeSliceThread m_thread; vsa::SpectrumAnalyzerComponent m_analyzer; }; //------------------------------------------------------------------------------------------------------- - diff --git a/Modules/vsa_spectrum_analyzer/SpectrumAnalyzer/SpectrumAnalyzer.cpp b/Modules/vsa_spectrum_analyzer/SpectrumAnalyzer/SpectrumAnalyzer.cpp index 0b0536e..4059a52 100644 --- a/Modules/vsa_spectrum_analyzer/SpectrumAnalyzer/SpectrumAnalyzer.cpp +++ b/Modules/vsa_spectrum_analyzer/SpectrumAnalyzer/SpectrumAnalyzer.cpp @@ -2,60 +2,44 @@ //----------------------------------------------------------------------------- -class vsa::SpectrumAnalyzer::SpectrumAnalyzerTimeSliceThread : public juce::TimeSliceThread -{ -public: - SpectrumAnalyzerTimeSliceThread() : juce::TimeSliceThread("fft") { startThread(); } - ~SpectrumAnalyzerTimeSliceThread() override { stopThread(100); } -}; - -//----------------------------------------------------------------------------- - void vsa::SpectrumAnalyzer::init() { const int fftSize = m_fft.getSize() * 2; const int stepSize = fftSize / static_cast(m_buffers.size()); - for(const auto &[index, buffer] : juce::enumerate(m_buffers)) + for (const auto &[index, buffer] : juce::enumerate(m_buffers)) { buffer.setSize(static_cast(fftSize)); const int writeSize = stepSize * static_cast(index); if (writeSize != 0) buffer.skip(writeSize); } - - m_thread->addTimeSliceClient(this); } //----------------------------------------------------------------------------- -vsa::SpectrumAnalyzer::SpectrumAnalyzer(vsa::AudioBufferFifo &source) +vsa::SpectrumAnalyzer::SpectrumAnalyzer(vsa::AudioBufferFifo &source, juce::TimeSliceThread &thread) : m_audioFifoFloat(&source) { + thread.addTimeSliceClient(this); init(); } //----------------------------------------------------------------------------- -vsa::SpectrumAnalyzer::SpectrumAnalyzer(vsa::AudioBufferFifo &source) +vsa::SpectrumAnalyzer::SpectrumAnalyzer(vsa::AudioBufferFifo &source, juce::TimeSliceThread &thread) : m_audioFifoDouble(&source) { + thread.addTimeSliceClient(this); init(); } //----------------------------------------------------------------------------- -vsa::SpectrumAnalyzer::~SpectrumAnalyzer() -{ - m_thread->removeTimeSliceClient(this); -} - -//----------------------------------------------------------------------------- - int vsa::SpectrumAnalyzer::useTimeSlice() { if (populateConduitBuffer()) { - for(auto &b : m_buffers) + for (auto &b : m_buffers) { b.write(m_conduitBuffer); @@ -63,7 +47,8 @@ int vsa::SpectrumAnalyzer::useTimeSlice() { auto fftSpan{ b.getFftSpan() }; - m_windowingFunction.multiplyWithWindowingTable(fftSpan.data(), std::min(fftSpan.size(), static_cast(m_fft.getSize()))); + m_windowingFunction.multiplyWithWindowingTable( + fftSpan.data(), std::min(fftSpan.size(), static_cast(m_fft.getSize()))); m_fft.performFrequencyOnlyForwardTransform(fftSpan.data()); m_analyzerCurve.pushCurve(fftSpan); @@ -75,21 +60,6 @@ int vsa::SpectrumAnalyzer::useTimeSlice() } //----------------------------------------------------------------------------- - -void vsa::SpectrumAnalyzer::startThread() -{ - m_thread->startThread(); -} - -//----------------------------------------------------------------------------- - -void vsa::SpectrumAnalyzer::suspendThread() -{ - m_thread->stopThread(100); -} - -//----------------------------------------------------------------------------- - bool vsa::SpectrumAnalyzer::populateConduitBuffer() { if (m_audioFifoFloat && m_audioFifoFloat->getAvailableSamples() > 0) @@ -128,7 +98,8 @@ bool vsa::SpectrumAnalyzer::populateConduitBuffer() vsa::SpectrumAnalyzerCurve::LockedCurve vsa::SpectrumAnalyzer::getAnalyzerCurve() { - m_analyzerCurve.setSampleRate(m_audioFifoFloat ? m_audioFifoFloat->getSampleRate() : m_audioFifoDouble->getSampleRate()); + m_analyzerCurve.setSampleRate(m_audioFifoFloat ? m_audioFifoFloat->getSampleRate() + : m_audioFifoDouble->getSampleRate()); return m_analyzerCurve.getCurve(); } diff --git a/Modules/vsa_spectrum_analyzer/SpectrumAnalyzer/SpectrumAnalyzer.h b/Modules/vsa_spectrum_analyzer/SpectrumAnalyzer/SpectrumAnalyzer.h index 7d3ac58..99d5ab3 100644 --- a/Modules/vsa_spectrum_analyzer/SpectrumAnalyzer/SpectrumAnalyzer.h +++ b/Modules/vsa_spectrum_analyzer/SpectrumAnalyzer/SpectrumAnalyzer.h @@ -16,22 +16,21 @@ BEGIN_VSA_NAMESPACE /** * @class SpectrumAnalyzer * @brief runs an fft in a time slice thread over whatever data it gets -*/ + */ class SpectrumAnalyzer : public juce::TimeSliceClient { + class SpectrumAnalyzerTimeSliceThread; + public: - explicit SpectrumAnalyzer(AudioBufferFifo &source); - explicit SpectrumAnalyzer(AudioBufferFifo &source); - ~SpectrumAnalyzer() override; + explicit SpectrumAnalyzer(AudioBufferFifo &source, juce::TimeSliceThread &thread); + explicit SpectrumAnalyzer(AudioBufferFifo &source, juce::TimeSliceThread &thread); + ~SpectrumAnalyzer() override = default; SpectrumAnalyzerCurve::LockedCurve getAnalyzerCurve(); - + // juce::TimeSliceClient int useTimeSlice() override; - void startThread(); - void suspendThread(); - private: bool populateConduitBuffer(); void init(); @@ -44,15 +43,12 @@ class SpectrumAnalyzer : public juce::TimeSliceClient std::array m_buffers; - juce::dsp::FFT m_fft{ 11 }; - juce::dsp::WindowingFunction m_windowingFunction{ static_cast(m_fft.getSize()), juce::dsp::WindowingFunction::hann, true }; + juce::dsp::WindowingFunction m_windowingFunction{ static_cast(m_fft.getSize()), + juce::dsp::WindowingFunction::hann, true }; SpectrumAnalyzerCurve m_analyzerCurve{ m_fft.getSize() }; - class SpectrumAnalyzerTimeSliceThread; - juce::SharedResourcePointer m_thread; - JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(SpectrumAnalyzer) }; diff --git a/Modules/vsa_spectrum_analyzer/SpectrumAnalyzer/SpectrumAnalyzerComponent.cpp b/Modules/vsa_spectrum_analyzer/SpectrumAnalyzer/SpectrumAnalyzerComponent.cpp index d4c8c07..eb08be6 100644 --- a/Modules/vsa_spectrum_analyzer/SpectrumAnalyzer/SpectrumAnalyzerComponent.cpp +++ b/Modules/vsa_spectrum_analyzer/SpectrumAnalyzer/SpectrumAnalyzerComponent.cpp @@ -3,15 +3,16 @@ //----------------------------------------------------------------------------- -vsa::SpectrumAnalyzerComponent::SpectrumAnalyzerComponent(AudioBufferFifo &source) - : m_fft(source) +vsa::SpectrumAnalyzerComponent::SpectrumAnalyzerComponent(AudioBufferFifo &source, juce::TimeSliceThread &thread) + : m_fft(source, thread) { } //----------------------------------------------------------------------------- -vsa::SpectrumAnalyzerComponent::SpectrumAnalyzerComponent(AudioBufferFifo& source) - : m_fft(source) +vsa::SpectrumAnalyzerComponent::SpectrumAnalyzerComponent(AudioBufferFifo &source, + juce::TimeSliceThread &thread) + : m_fft(source, thread) { } @@ -41,14 +42,8 @@ float vsa::SpectrumAnalyzerComponent::getPreSmoothingPathHeightMultiplier(float void vsa::SpectrumAnalyzerComponent::paintAnalyzerCurve(juce::Graphics &g, const juce::Path &p) { - const auto gradient{ - juce::ColourGradient::vertical( - juce::Colours::red, - 0.0f, - juce::Colours::red.withAlpha(0.25f), - static_cast(getHeight()) - ) - }; + const auto gradient{ juce::ColourGradient::vertical(juce::Colours::red, 0.0f, juce::Colours::red.withAlpha(0.25f), + static_cast(getHeight())) }; g.setGradientFill(gradient); g.fillPath(p); diff --git a/Modules/vsa_spectrum_analyzer/SpectrumAnalyzer/SpectrumAnalyzerComponent.h b/Modules/vsa_spectrum_analyzer/SpectrumAnalyzer/SpectrumAnalyzerComponent.h index 80e6af9..c8a3590 100644 --- a/Modules/vsa_spectrum_analyzer/SpectrumAnalyzer/SpectrumAnalyzerComponent.h +++ b/Modules/vsa_spectrum_analyzer/SpectrumAnalyzer/SpectrumAnalyzerComponent.h @@ -16,14 +16,14 @@ BEGIN_VSA_NAMESPACE * @brief Display a spectrum analyzer from data grabbed from AudioBufferFifo * * @see AudioBufferFifo -*/ + */ class SpectrumAnalyzerComponent : public juce::Component , public juce::Timer { public: - explicit SpectrumAnalyzerComponent(AudioBufferFifo &source); - explicit SpectrumAnalyzerComponent(AudioBufferFifo &source); + explicit SpectrumAnalyzerComponent(AudioBufferFifo &source, juce::TimeSliceThread &thread); + explicit SpectrumAnalyzerComponent(AudioBufferFifo &source, juce::TimeSliceThread &thread); ~SpectrumAnalyzerComponent() override; void paint(juce::Graphics &g) override; From adc2652505911c35a691abababac558240a78f95 Mon Sep 17 00:00:00 2001 From: Rami Hansen Date: Wed, 18 Feb 2026 15:56:47 -0800 Subject: [PATCH 5/6] set fft size in constructors --- .../SpectrumAnalyzer/SpectrumAnalyzer.cpp | 6 ++++-- .../SpectrumAnalyzer/SpectrumAnalyzer.h | 6 +++--- .../SpectrumAnalyzer/SpectrumAnalyzerComponent.cpp | 9 ++++----- .../SpectrumAnalyzer/SpectrumAnalyzerComponent.h | 4 ++-- 4 files changed, 13 insertions(+), 12 deletions(-) diff --git a/Modules/vsa_spectrum_analyzer/SpectrumAnalyzer/SpectrumAnalyzer.cpp b/Modules/vsa_spectrum_analyzer/SpectrumAnalyzer/SpectrumAnalyzer.cpp index 4059a52..079b16a 100644 --- a/Modules/vsa_spectrum_analyzer/SpectrumAnalyzer/SpectrumAnalyzer.cpp +++ b/Modules/vsa_spectrum_analyzer/SpectrumAnalyzer/SpectrumAnalyzer.cpp @@ -17,8 +17,9 @@ void vsa::SpectrumAnalyzer::init() //----------------------------------------------------------------------------- -vsa::SpectrumAnalyzer::SpectrumAnalyzer(vsa::AudioBufferFifo &source, juce::TimeSliceThread &thread) +vsa::SpectrumAnalyzer::SpectrumAnalyzer(vsa::AudioBufferFifo &source, juce::TimeSliceThread &thread, int fftSize) : m_audioFifoFloat(&source) + , m_fft(fftSize) { thread.addTimeSliceClient(this); init(); @@ -26,8 +27,9 @@ vsa::SpectrumAnalyzer::SpectrumAnalyzer(vsa::AudioBufferFifo &source, juc //----------------------------------------------------------------------------- -vsa::SpectrumAnalyzer::SpectrumAnalyzer(vsa::AudioBufferFifo &source, juce::TimeSliceThread &thread) +vsa::SpectrumAnalyzer::SpectrumAnalyzer(vsa::AudioBufferFifo &source, juce::TimeSliceThread &thread, int fftSize) : m_audioFifoDouble(&source) + , m_fft(fftSize) { thread.addTimeSliceClient(this); init(); diff --git a/Modules/vsa_spectrum_analyzer/SpectrumAnalyzer/SpectrumAnalyzer.h b/Modules/vsa_spectrum_analyzer/SpectrumAnalyzer/SpectrumAnalyzer.h index 99d5ab3..3d2a4a4 100644 --- a/Modules/vsa_spectrum_analyzer/SpectrumAnalyzer/SpectrumAnalyzer.h +++ b/Modules/vsa_spectrum_analyzer/SpectrumAnalyzer/SpectrumAnalyzer.h @@ -22,8 +22,8 @@ class SpectrumAnalyzer : public juce::TimeSliceClient class SpectrumAnalyzerTimeSliceThread; public: - explicit SpectrumAnalyzer(AudioBufferFifo &source, juce::TimeSliceThread &thread); - explicit SpectrumAnalyzer(AudioBufferFifo &source, juce::TimeSliceThread &thread); + explicit SpectrumAnalyzer(AudioBufferFifo &source, juce::TimeSliceThread &thread, int fftSize = 11); + explicit SpectrumAnalyzer(AudioBufferFifo &source, juce::TimeSliceThread &thread, int fftSize = 11); ~SpectrumAnalyzer() override = default; SpectrumAnalyzerCurve::LockedCurve getAnalyzerCurve(); @@ -43,7 +43,7 @@ class SpectrumAnalyzer : public juce::TimeSliceClient std::array m_buffers; - juce::dsp::FFT m_fft{ 11 }; + juce::dsp::FFT m_fft; juce::dsp::WindowingFunction m_windowingFunction{ static_cast(m_fft.getSize()), juce::dsp::WindowingFunction::hann, true }; diff --git a/Modules/vsa_spectrum_analyzer/SpectrumAnalyzer/SpectrumAnalyzerComponent.cpp b/Modules/vsa_spectrum_analyzer/SpectrumAnalyzer/SpectrumAnalyzerComponent.cpp index eb08be6..5c4ff85 100644 --- a/Modules/vsa_spectrum_analyzer/SpectrumAnalyzer/SpectrumAnalyzerComponent.cpp +++ b/Modules/vsa_spectrum_analyzer/SpectrumAnalyzer/SpectrumAnalyzerComponent.cpp @@ -3,16 +3,15 @@ //----------------------------------------------------------------------------- -vsa::SpectrumAnalyzerComponent::SpectrumAnalyzerComponent(AudioBufferFifo &source, juce::TimeSliceThread &thread) - : m_fft(source, thread) +vsa::SpectrumAnalyzerComponent::SpectrumAnalyzerComponent(AudioBufferFifo &source, juce::TimeSliceThread &thread, int fftSize) + : m_fft(source, thread, fftSize) { } //----------------------------------------------------------------------------- -vsa::SpectrumAnalyzerComponent::SpectrumAnalyzerComponent(AudioBufferFifo &source, - juce::TimeSliceThread &thread) - : m_fft(source, thread) +vsa::SpectrumAnalyzerComponent::SpectrumAnalyzerComponent(AudioBufferFifo &source, juce::TimeSliceThread &thread, int fftSize) + : m_fft(source, thread, fftSize) { } diff --git a/Modules/vsa_spectrum_analyzer/SpectrumAnalyzer/SpectrumAnalyzerComponent.h b/Modules/vsa_spectrum_analyzer/SpectrumAnalyzer/SpectrumAnalyzerComponent.h index c8a3590..966653f 100644 --- a/Modules/vsa_spectrum_analyzer/SpectrumAnalyzer/SpectrumAnalyzerComponent.h +++ b/Modules/vsa_spectrum_analyzer/SpectrumAnalyzer/SpectrumAnalyzerComponent.h @@ -22,8 +22,8 @@ class SpectrumAnalyzerComponent , public juce::Timer { public: - explicit SpectrumAnalyzerComponent(AudioBufferFifo &source, juce::TimeSliceThread &thread); - explicit SpectrumAnalyzerComponent(AudioBufferFifo &source, juce::TimeSliceThread &thread); + explicit SpectrumAnalyzerComponent(AudioBufferFifo &source, juce::TimeSliceThread &thread, int fftSize = 11); + explicit SpectrumAnalyzerComponent(AudioBufferFifo &source, juce::TimeSliceThread &thread, int fftSize = 11); ~SpectrumAnalyzerComponent() override; void paint(juce::Graphics &g) override; From 00984dd1faed43e2dac5be1251dbf6dea51b54b8 Mon Sep 17 00:00:00 2001 From: Rami Hansen Date: Sun, 9 Aug 2026 16:18:45 -0700 Subject: [PATCH 6/6] little polish --- CMakeLists.txt | 12 ------------ README.md | 19 +++++++++++++++++++ 2 files changed, 19 insertions(+), 12 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 190d7ab..ab2d8e0 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,17 +1,5 @@ cmake_minimum_required(VERSION 3.24.1) -# TODO figure this out -# https://stackoverflow.com/questions/47087237/cmake-and-ninja-rebuild-unnecessary-files -option(LINUX_REBUILD_WORKAROUND "ignore system headers for detecting dirty files" OFF) -if(LINUX_REBUILD_WORKAROUND) - file( - WRITE "${CMAKE_BINARY_DIR}/GNUMakeRulesOverwrite.cmake" - "STRING(REPLACE \"-MD\" \"-MMD\" CMAKE_DEPFILE_FLAGS_C \"\${CMAKE_DEPFILE_FLAGS_C}\")\n" - "STRING(REPLACE \"-MD\" \"-MMD\" CMAKE_DEPFILE_FLAGS_CXX \"\${CMAKE_DEPFILE_FLAGS_CXX}\")\n" - ) - set(CMAKE_USER_MAKE_RULES_OVERRIDE "${CMAKE_BINARY_DIR}/GNUMakeRulesOverwrite.cmake" CACHE INTERNAL "") -endif() - project(VainSpectrumAnalyzer VERSION 1.0.0) include(FetchContent) diff --git a/README.md b/README.md index 12f169a..b3d3189 100644 --- a/README.md +++ b/README.md @@ -20,3 +20,22 @@ m_fifo.pushAudioData(buffer); // push all audio data into the fifo vsa::SpectrumAnalyzerComponent spectrumAnalyzer{ fifo }; addAndMakeVisible(spectrumAnalyzer); ``` + +# Adding it to Your Project + +SpectrumAnalyzer is organized as a JUCE module. +To use it in your project include the `Modules` directory in `CMakeLists.txt`: + +```cmake +add_subdirectory("SpectrumAnalyzer/Modules") +``` + +Link to the following targets: + +```cmake +target_link_libraries("Project" + PRIVATE + vsa::vsa + vsa::vsa_spectrum_analyzer +) +```