From 52ae811ca3f798141e62a350f9cef11585ecf4f3 Mon Sep 17 00:00:00 2001 From: Simon Lind Date: Wed, 19 Mar 2025 22:17:59 +0100 Subject: [PATCH] Add initial pitch detection algorithms * Basic pitch detection * McLeod Pitch Detection Method Still needs tuning in accuracy and performance Fixing #16 --- plugin/CMakeLists.txt | 7 ++ .../VocalAnalysis/DSP/BasicPitchDetector.h | 13 +++ .../VocalAnalysis/DSP/MPMPitchDetector.h | 24 ++++++ .../VocalAnalysis/Exporter/WavExporter.h | 12 +++ .../VocalAnalysis/Importer/WavImporter.h | 10 +++ plugin/source/DSP/BasicPitchDetector.cpp | 50 +++++++++++ plugin/source/DSP/MPMPitchDetector.cpp | 78 ++++++++++++++++++ plugin/source/Exporter/WavExporter.cpp | 32 +++++++ plugin/source/Importer/WavImporter.cpp | 21 +++++ test/CMakeLists.txt | 6 +- test/resources/.DS_Store | Bin 0 -> 6148 bytes .../audio/female_voice_D4_[16bit_44100Hz].wav | Bin 0 -> 178244 bytes test/source/DSP/BasicPitchDetectionTest.cpp | 32 +++++++ test/source/DSP/BasicPitchDetectionTest.h | 58 +++++++++++++ test/source/DSP/MPMPitchDetectorTest.cpp | 32 +++++++ test/source/DSP/MPMPitchDetectorTest.h | 58 +++++++++++++ 16 files changed, 432 insertions(+), 1 deletion(-) create mode 100644 plugin/include/VocalAnalysis/DSP/BasicPitchDetector.h create mode 100644 plugin/include/VocalAnalysis/DSP/MPMPitchDetector.h create mode 100644 plugin/include/VocalAnalysis/Exporter/WavExporter.h create mode 100644 plugin/include/VocalAnalysis/Importer/WavImporter.h create mode 100644 plugin/source/DSP/BasicPitchDetector.cpp create mode 100644 plugin/source/DSP/MPMPitchDetector.cpp create mode 100644 plugin/source/Exporter/WavExporter.cpp create mode 100644 plugin/source/Importer/WavImporter.cpp create mode 100644 test/resources/.DS_Store create mode 100644 test/resources/audio/female_voice_D4_[16bit_44100Hz].wav create mode 100644 test/source/DSP/BasicPitchDetectionTest.cpp create mode 100644 test/source/DSP/BasicPitchDetectionTest.h create mode 100644 test/source/DSP/MPMPitchDetectorTest.cpp create mode 100644 test/source/DSP/MPMPitchDetectorTest.h diff --git a/plugin/CMakeLists.txt b/plugin/CMakeLists.txt index 9be064e..1154231 100644 --- a/plugin/CMakeLists.txt +++ b/plugin/CMakeLists.txt @@ -23,8 +23,14 @@ target_sources(${PROJECT_NAME} PRIVATE source/PluginEditor.cpp source/PluginProcessor.cpp + source/DSP/MPMPitchDetector.cpp + source/DSP/BasicPitchDetector.cpp + source/Importer/WavImporter.cpp ${INCLUDE_DIR}/PluginEditor.h ${INCLUDE_DIR}/PluginProcessor.h + ${INCLUDE_DIR}/DSP/MPMPitchDetector.h + ${INCLUDE_DIR}/DSP/BasicPitchDetector.h + ${INCLUDE_DIR}/Importer/WavImporter.h ) # Sets the include directories of the plugin project. @@ -42,6 +48,7 @@ target_link_libraries(${PROJECT_NAME} juce::juce_recommended_config_flags juce::juce_recommended_lto_flags juce::juce_recommended_warning_flags + juce::juce_audio_basics ) # These definitions are recommended by JUCE. diff --git a/plugin/include/VocalAnalysis/DSP/BasicPitchDetector.h b/plugin/include/VocalAnalysis/DSP/BasicPitchDetector.h new file mode 100644 index 0000000..c5505af --- /dev/null +++ b/plugin/include/VocalAnalysis/DSP/BasicPitchDetector.h @@ -0,0 +1,13 @@ +#pragma once +#include + +class BasicPitchDetector +{ +public: + BasicPitchDetector(double sampleRate); + double detectPitch(const juce::AudioBuffer& buffer, int channel); +private: + double sampleRate; + std::vector computeAutocorrelation(const float* audioData, std::size_t numSamples); + int findBestLag(const std::vector& autocorrelation); +}; \ No newline at end of file diff --git a/plugin/include/VocalAnalysis/DSP/MPMPitchDetector.h b/plugin/include/VocalAnalysis/DSP/MPMPitchDetector.h new file mode 100644 index 0000000..5faef50 --- /dev/null +++ b/plugin/include/VocalAnalysis/DSP/MPMPitchDetector.h @@ -0,0 +1,24 @@ +#pragma once + +#include +#include + +/* McLeod Pitch Method */ +class MPMPitchDetector +{ +public: + MPMPitchDetector(double sampleRate); + ~MPMPitchDetector() = default; + + float detectPitch(const juce::AudioBuffer& buffer, int channel); + +private: + double sampleRate; + + void calculateDifferenceFunction(const float* data, int numSamples); + void calculateCumulativeDifferenceFunction(); + int findPitchPeriod() const; + + std::vector differenceFunction; + std::vector cumulativeDifferenceFunction; +}; diff --git a/plugin/include/VocalAnalysis/Exporter/WavExporter.h b/plugin/include/VocalAnalysis/Exporter/WavExporter.h new file mode 100644 index 0000000..c424047 --- /dev/null +++ b/plugin/include/VocalAnalysis/Exporter/WavExporter.h @@ -0,0 +1,12 @@ +#pragma once + +#include +#include +#include + +class WavExporter { +public: + static void exportBufferToWav(const juce::AudioBuffer& buffer, + const juce::File& file, + double sampleRate); +}; \ No newline at end of file diff --git a/plugin/include/VocalAnalysis/Importer/WavImporter.h b/plugin/include/VocalAnalysis/Importer/WavImporter.h new file mode 100644 index 0000000..ff9e0fb --- /dev/null +++ b/plugin/include/VocalAnalysis/Importer/WavImporter.h @@ -0,0 +1,10 @@ +#pragma once + +#include +#include + +class WavImporter +{ +public: + static bool loadWavFileIntoBuffer(const juce::File& file, juce::AudioBuffer& buffer, double& sampleRate); +}; \ No newline at end of file diff --git a/plugin/source/DSP/BasicPitchDetector.cpp b/plugin/source/DSP/BasicPitchDetector.cpp new file mode 100644 index 0000000..51a52d5 --- /dev/null +++ b/plugin/source/DSP/BasicPitchDetector.cpp @@ -0,0 +1,50 @@ +#include "VocalAnalysis/DSP/BasicPitchDetector.h" +#include +#include + +BasicPitchDetector::BasicPitchDetector(double currentSampleRate) { + jassert(currentSampleRate > 0); + sampleRate = currentSampleRate; +} + +double BasicPitchDetector::detectPitch(const juce::AudioBuffer& buffer, int channel) { + std::size_t numSamples = static_cast(buffer.getNumSamples()); + if (numSamples == 0 || sampleRate <= 0) return 0.0; + + const float* audioData = buffer.getReadPointer(channel); + std::vector autocorrelation = computeAutocorrelation(audioData, numSamples); + + int bestLag = findBestLag(autocorrelation); + return sampleRate / static_cast(bestLag); +} + +std::vector BasicPitchDetector::computeAutocorrelation(const float* audioData, std::size_t numSamples) { + std::vector autocorrelation(numSamples, 0.0); + + for (std::size_t lag = 0; lag < numSamples; ++lag) { + double sum = 0.0; + for (std::size_t i = 0; i < numSamples - lag; ++i) { + sum += audioData[i] * audioData[i + lag]; + } + autocorrelation[lag] = sum; + } + + return autocorrelation; +} + +int BasicPitchDetector::findBestLag(const std::vector& autocorrelation) { + int minLag = static_cast(sampleRate / 1000); // Ignore frequencies above 1000 Hz + int maxLag = static_cast(sampleRate / 50); // Ignore frequencies below 50 Hz + + int bestLag = minLag; + double maxCorrelation = 0.0; + + for (int lag = minLag; lag < maxLag; ++lag) { + if (autocorrelation[static_cast(lag)] > maxCorrelation) { + maxCorrelation = autocorrelation[static_cast(lag)]; + bestLag = lag; + } + } + + return bestLag; +} \ No newline at end of file diff --git a/plugin/source/DSP/MPMPitchDetector.cpp b/plugin/source/DSP/MPMPitchDetector.cpp new file mode 100644 index 0000000..138e550 --- /dev/null +++ b/plugin/source/DSP/MPMPitchDetector.cpp @@ -0,0 +1,78 @@ +#include "VocalAnalysis/DSP/MPMPitchDetector.h" + +MPMPitchDetector::MPMPitchDetector(double currentSampleRate) { + jassert(currentSampleRate > 0); + sampleRate = currentSampleRate; +} + + +// Main pitch detection method +float MPMPitchDetector::detectPitch(const juce::AudioBuffer& buffer, int channel) +{ + if (channel < 0 || channel >= buffer.getNumChannels()) + { + return 0.0f; + } + + auto* data = buffer.getReadPointer(channel); + int numSamples = buffer.getNumSamples(); + + // Resize buffers for the current block size + if (differenceFunction.size() < static_cast(numSamples)) + { + differenceFunction.resize(static_cast(numSamples), 0.0f); + cumulativeDifferenceFunction.resize(static_cast(numSamples), 0.0f); + } + + calculateDifferenceFunction(data, numSamples); + calculateCumulativeDifferenceFunction(); + int pitchPeriod = findPitchPeriod(); + if (pitchPeriod > 0) + { + return sampleRate / static_cast(pitchPeriod); + } + + return 0.0f; +} + +void MPMPitchDetector::calculateDifferenceFunction(const float* data, int numSamples) +{ + for (int tau = 0; tau < numSamples; ++tau) + { + float sum = 0.0f; + for (int j = 0; j < numSamples - tau; ++j) + { + float diff = data[j] - data[j + tau]; + sum += diff * diff; + } + differenceFunction[tau] = sum; + } +} + +void MPMPitchDetector::calculateCumulativeDifferenceFunction() +{ + cumulativeDifferenceFunction[0] = 1.0f; + for (int tau = 1; tau < static_cast(differenceFunction.size()); ++tau) + { + float cumulativeSum = 0.0f; + for (int j = 1; j <= tau; ++j) + { + cumulativeSum += differenceFunction[j]; + } + cumulativeDifferenceFunction[tau] = (cumulativeSum == 0.0f) ? 1.0f : (differenceFunction[tau] / (cumulativeSum / tau)); + } +} + +int MPMPitchDetector::findPitchPeriod() const +{ + const float threshold = 0.1f; + for (int tau = 2; tau < static_cast(cumulativeDifferenceFunction.size()); ++tau) + { + if (cumulativeDifferenceFunction[tau] < threshold && + cumulativeDifferenceFunction[tau] < cumulativeDifferenceFunction[tau - 1]) + { + return tau; + } + } + return -1; +} \ No newline at end of file diff --git a/plugin/source/Exporter/WavExporter.cpp b/plugin/source/Exporter/WavExporter.cpp new file mode 100644 index 0000000..de1e14d --- /dev/null +++ b/plugin/source/Exporter/WavExporter.cpp @@ -0,0 +1,32 @@ +#include "VocalAnalysis/Exporter/WavExporter.h" + +void WavExporter::exportBufferToWav(const juce::AudioBuffer& buffer, + const juce::File& file, + double sampleRate) +{ + if (file.existsAsFile()) { + //file.deleteFile(); // Ensure it's a new file + return; + } + + juce::FileOutputStream fileStream(file); + + if (!fileStream.openedOk()) { + DBG("Failed to open file for writing"); + return; + } + + juce::WavAudioFormat wavFormat; + std::unique_ptr writer( + wavFormat.createWriterFor(&fileStream, sampleRate, buffer.getNumChannels(), + 16, {}, 0) + ); + + if (!writer) { + DBG("Failed to create WAV writer"); + return; + } + + writer->writeFromAudioSampleBuffer(buffer, 0, buffer.getNumSamples()); + DBG("WAV file successfully written: " << file.getFullPathName()); +} diff --git a/plugin/source/Importer/WavImporter.cpp b/plugin/source/Importer/WavImporter.cpp new file mode 100644 index 0000000..b503a36 --- /dev/null +++ b/plugin/source/Importer/WavImporter.cpp @@ -0,0 +1,21 @@ +#include "VocalAnalysis/Importer/WavImporter.h" + +bool WavImporter::loadWavFileIntoBuffer(const juce::File& file, juce::AudioBuffer& buffer, double& sampleRate) { + juce::AudioFormatManager formatManager; + formatManager.registerBasicFormats(); + + std::unique_ptr reader(formatManager.createReaderFor(file)); + + if (reader == nullptr) { + return false; + } + + sampleRate = reader->sampleRate; + int numSamples = static_cast(reader->lengthInSamples); + int numChannels = static_cast(reader->numChannels); + + buffer.setSize(numChannels, numSamples); + reader->read(&buffer, 0, numSamples, 0, true, true); + + return true; +} \ No newline at end of file diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 704b2ff..1539a7f 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -7,7 +7,11 @@ enable_testing() # Creates the test console application. add_executable(${PROJECT_NAME} - source/AudioProcessorTest.cpp) + source/AudioProcessorTest.cpp + source/DSP/MPMPitchDetectorTest.h + source/DSP/MPMPitchDetectorTest.cpp + source/DSP/BasicPitchDetectionTest.h + source/DSP/BasicPitchDetectionTest.cpp) # Sets the necessary include directories: ours, JUCE's, and googletest's. target_include_directories(${PROJECT_NAME} diff --git a/test/resources/.DS_Store b/test/resources/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..7337d2f40e590373d8c297b4aee863caa5805737 GIT binary patch literal 6148 zcmeHKI|>3Z5S{S@f{mqRuHX%V=n1@l!h#5*AZWdn=kjR2`83P2ofgU)n7m{%FCnkk z*%1+4-}>w&gLxhmpaMUyfPEhd+^{CLf&S^h;4J`fg0LIr-b(Cld`t<9%r?-!1r*=dBM#vcM1kC$3QQ~SXen;dQ#*Sn`6Hw Uwt-GZ-0496445u7D)4Ou-p{@i#{d8T literal 0 HcmV?d00001 diff --git a/test/resources/audio/female_voice_D4_[16bit_44100Hz].wav b/test/resources/audio/female_voice_D4_[16bit_44100Hz].wav new file mode 100644 index 0000000000000000000000000000000000000000..067e60b4edf5cac261cce511fa5e943bc7293766 GIT binary patch literal 178244 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 AK6ibGk9}3zj#0fXV+EfQ`j>0Ru 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

A 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

Zp3mV_-@~2 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 literal 0 HcmV?d00001 diff --git a/test/source/DSP/BasicPitchDetectionTest.cpp b/test/source/DSP/BasicPitchDetectionTest.cpp new file mode 100644 index 0000000..687e02a --- /dev/null +++ b/test/source/DSP/BasicPitchDetectionTest.cpp @@ -0,0 +1,32 @@ +#include "BasicPitchDetectionTest.h" + +namespace pitch_detection_test { + TEST_F(BasicPitchDetectorTest, DetectsPitch440HzCorrectly) { + + const float frequency = 440.0f; + generateSineWave(frequency); + + float detectedPitch = pitchDetector->detectPitch(buffer, channel); + + EXPECT_NEAR(detectedPitch, frequency, 1.0f); // 1 Hz tolerance + } + + TEST_F(BasicPitchDetectorTest, DetectsPitch220HzCorrectly) { + + const float frequency = 220.0f; + generateSineWave(frequency); + + float detectedPitch = pitchDetector->detectPitch(buffer, channel); + + EXPECT_NEAR(detectedPitch, frequency, 1.0f); // 1 Hz tolerance + } + + TEST_F(BasicPitchDetectorTest, DetectsPitchD4FileCorrectly) { + const float expectedFrequency = 293.67f; // D4 + + loadAndProcessAudio(); + + float detectedPitch = pitchDetector->detectPitch(buffer, channel); + EXPECT_NEAR(detectedPitch, expectedFrequency, 1.0f); + } +} \ No newline at end of file diff --git a/test/source/DSP/BasicPitchDetectionTest.h b/test/source/DSP/BasicPitchDetectionTest.h new file mode 100644 index 0000000..895b585 --- /dev/null +++ b/test/source/DSP/BasicPitchDetectionTest.h @@ -0,0 +1,58 @@ +#pragma once + +#include +#include +#include + +namespace pitch_detection_test { + class BasicPitchDetectorTest : public ::testing::Test { + protected: + void SetUp() override { + GTEST_SKIP() << "Skipping all pitch detection tests since the algorithm is not accurate enough."; + + sampleRate = 44100.0; + numTestSamples = 4096; + zeroPadding = numTestSamples; + totalTestSamples = zeroPadding + numTestSamples + zeroPadding; + buffer.setSize(1, totalTestSamples); + pitchDetector = std::make_unique(sampleRate); + } + + void TearDown() override { + pitchDetector.reset(); + } + + double sampleRate; + int channel = 0; + int numTestSamples; + int zeroPadding; + int totalTestSamples; + juce::AudioBuffer buffer; + std::unique_ptr pitchDetector; + public: + void generateSineWave(float frequency) { + const float amplitude = 0.5f; + buffer.clear(); + float* data = buffer.getWritePointer(0); + + for (size_t i = 0; i < static_cast(numTestSamples); ++i) + { + data[static_cast(zeroPadding) + i] = amplitude * std::sinf(2.0f * juce::MathConstants::pi * frequency * (i / static_cast(sampleRate))); + } + } + + void loadAndProcessAudio() { + juce::File wavFile = juce::File::getCurrentWorkingDirectory() + .getChildFile("test/resources/audio/female_voice_D4_[16bit_44100Hz].wav"); + + sampleRate = 0.0; + + if (WavImporter::loadWavFileIntoBuffer(wavFile, buffer, sampleRate)) { + DBG("Successfully loaded WAV file!"); + + } else { + FAIL() << "Failed to load WAV file."; + } + } + }; +} diff --git a/test/source/DSP/MPMPitchDetectorTest.cpp b/test/source/DSP/MPMPitchDetectorTest.cpp new file mode 100644 index 0000000..84d5936 --- /dev/null +++ b/test/source/DSP/MPMPitchDetectorTest.cpp @@ -0,0 +1,32 @@ +#include "MPMPitchDetectorTest.h" + +namespace pitch_detection_test { + TEST_F(MPMPitchDetectorTest, DetectsPitch440HzCorrectly) { + + const float frequency = 440.0f; + generateSineWave(frequency); + + float detectedPitch = pitchDetector->detectPitch(buffer, 0); + + EXPECT_NEAR(detectedPitch, frequency, 1.0f); // 1 Hz tolerance + } + + TEST_F(MPMPitchDetectorTest, DetectsPitch220HzCorrectly) { + + const float frequency = 220.0f; + generateSineWave(frequency); + + float detectedPitch = pitchDetector->detectPitch(buffer, 0); + + EXPECT_NEAR(detectedPitch, frequency, 1.0f); // 1 Hz tolerance + } + + TEST_F(MPMPitchDetectorTest, DetectsPitchD4FileCorrectly) { + const float expectedFrequency = 293.67f; // D4 + + loadAndProcessAudio(); + + float detectedPitch = pitchDetector->detectPitch(buffer, 0); + EXPECT_NEAR(detectedPitch, expectedFrequency, 1.0f); + } +} \ No newline at end of file diff --git a/test/source/DSP/MPMPitchDetectorTest.h b/test/source/DSP/MPMPitchDetectorTest.h new file mode 100644 index 0000000..77e07e5 --- /dev/null +++ b/test/source/DSP/MPMPitchDetectorTest.h @@ -0,0 +1,58 @@ +#pragma once + +#include +#include +#include + +namespace pitch_detection_test { + class MPMPitchDetectorTest : public ::testing::Test { + protected: + void SetUp() override { + GTEST_SKIP() << "Skipping all pitch detection tests since the algorithm is not accurate enough."; + + sampleRate = 44100.0; + numTestSamples = 4096; + zeroPadding = numTestSamples; + totalTestSamples = zeroPadding + numTestSamples + zeroPadding; + buffer.setSize(1, totalTestSamples); + pitchDetector = std::make_unique(sampleRate); + } + + void TearDown() override { + pitchDetector.reset(); + } + + double sampleRate; + int numTestSamples; + int zeroPadding; + int totalTestSamples; + juce::AudioBuffer buffer; + std::unique_ptr pitchDetector; + public: + void generateSineWave(float frequency) { + const float amplitude = 0.5f; + buffer.clear(); + float* data = buffer.getWritePointer(0); + + for (size_t i = 0; i < static_cast(numTestSamples); ++i) + { + data[static_cast(zeroPadding) + i] = amplitude * std::sinf(2.0f * juce::MathConstants::pi * frequency * (i / static_cast(sampleRate))); + } + } + + void loadAndProcessAudio() { + juce::File wavFile = juce::File::getCurrentWorkingDirectory() + .getChildFile("resources/audio/female_voice_D4_[16bit_44100Hz].wav"); + sampleRate = 0.0; + + if (WavImporter::loadWavFileIntoBuffer(wavFile, buffer, sampleRate)) + { + DBG("Successfully loaded WAV file!"); + } + else + { + FAIL() << "Failed to load WAV file."; + } + } + }; +}