Krotos Modules 3
Loading...
Searching...
No Matches
KwidgetGUI_OfflineAnalyser.h
Go to the documentation of this file.
1namespace krotos
2{
4 {
5 public:
7
9
10 void paint(Graphics& g) override;
11 void resized() override;
12
13 private:
14 void openButtonClicked();
15 void clearButtonClicked();
16 void stftButtonClicked();
17 void erbButtonClicked();
18
19 void averageToMono(AudioSampleBuffer& buffer)
20 {
21 if (buffer.getNumChannels() == 2) // Check if the buffer is stereo
22 {
23 const int numSamples = buffer.getNumSamples();
24
25 // Create a temporary buffer for the mono signal
26 AudioSampleBuffer monoBuffer(1, numSamples);
27
28 // Average the stereo channels to mono
29 monoBuffer.addFrom(0, 0, buffer, 0, 0, numSamples);
30 monoBuffer.addFrom(0, 0, buffer, 1, 0, numSamples);
31 monoBuffer.applyGain(0.5f); // Scale the mono signal
32
33 // Replace the stereo buffer with the mono buffer
34 buffer.setSize(1, numSamples);
35 buffer.copyFrom(0, 0, monoBuffer, 0, 0, numSamples);
36 }
37 }
38
39 std::vector<float> extractData(const AudioSampleBuffer& buffer)
40 {
41 const int numChannels = buffer.getNumChannels();
42 const int numSamples = buffer.getNumSamples();
43
44 std::vector<float> data(numSamples);
45
46 if (numChannels > 0)
47 {
48 const float* channelData = buffer.getReadPointer(0);
49
50 for (int i = 0; i < numSamples; ++i)
51 {
52 data[i] = channelData[i];
53 }
54 }
55
56 return data;
57 }
58
62
64 Rectangle<int> m_imageBounds;
65
66 TextButton m_openButton;
67 TextButton m_clearButton;
68 TextButton m_stftButton;
69 TextButton m_erbButton;
70
71 std::unique_ptr<juce::FileChooser> m_chooser;
72 std::unique_ptr<AudioFormatReader> m_wavReader;
73 AudioSampleBuffer m_fileBuffer;
74
75 JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(KwidgetGUI_OfflineAnalyser)
76 };
77
78} // namespace krotos
FFT-based cochlear power spectrogram.
Definition ERB_FFTSpectrogram.h:35
Definition KwidgetGUI_OfflineAnalyser.h:4
TextButton m_erbButton
Definition KwidgetGUI_OfflineAnalyser.h:69
TextButton m_openButton
Definition KwidgetGUI_OfflineAnalyser.h:66
TextButton m_stftButton
Definition KwidgetGUI_OfflineAnalyser.h:68
ERB_FFTSpectrogram m_erbSTFT
Definition KwidgetGUI_OfflineAnalyser.h:60
void paint(Graphics &g) override
Definition KwidgetGUI_OfflineAnalyser.cpp:92
void stftButtonClicked()
Definition KwidgetGUI_OfflineAnalyser.cpp:84
void resized() override
Definition KwidgetGUI_OfflineAnalyser.cpp:99
void clearButtonClicked()
Definition KwidgetGUI_OfflineAnalyser.cpp:58
KwidgetGUI_OfflineAnalyser(Kwidget &owner)
Definition KwidgetGUI_OfflineAnalyser.cpp:3
float m_sampleRate
Definition KwidgetGUI_OfflineAnalyser.h:61
void erbButtonClicked()
Definition KwidgetGUI_OfflineAnalyser.cpp:68
void openButtonClicked()
Definition KwidgetGUI_OfflineAnalyser.cpp:29
std::unique_ptr< AudioFormatReader > m_wavReader
Definition KwidgetGUI_OfflineAnalyser.h:72
void averageToMono(AudioSampleBuffer &buffer)
Definition KwidgetGUI_OfflineAnalyser.h:19
TextButton m_clearButton
Definition KwidgetGUI_OfflineAnalyser.h:67
Rectangle< int > m_imageBounds
Definition KwidgetGUI_OfflineAnalyser.h:64
std::unique_ptr< juce::FileChooser > m_chooser
Definition KwidgetGUI_OfflineAnalyser.h:71
AudioSampleBuffer m_fileBuffer
Definition KwidgetGUI_OfflineAnalyser.h:73
std::vector< float > extractData(const AudioSampleBuffer &buffer)
Definition KwidgetGUI_OfflineAnalyser.h:39
Image m_spectrogramImage
Definition KwidgetGUI_OfflineAnalyser.h:63
ShortTimeFourierTransform m_stft
Definition KwidgetGUI_OfflineAnalyser.h:59
Interface for a UI Component that controls a KwidgetProcessor.
Definition KwidgetGUI.h:24
Definition Kwidget.h:8
Apply STFT analysis to a full audio signal offline.
Definition ShortTimeFourierTransform.h:15
Definition AirAbsorptionFilter.cpp:2
Definition Kwidget_OfflineAnalyser.h:7