#pragma once #include class CommonAudioProcessor; class WavParser { public: WavParser(CommonAudioProcessor& p); ~WavParser(); osci::Point getSample(); void setProgress(double progress); void setPaused(bool paused); bool isPaused(); void setLooping(bool looping); bool isLooping(); bool parse(std::unique_ptr stream); void close(); bool isInitialised(); std::atomic currentSample = 0; std::atomic totalSamples; private: void setSampleRate(double sampleRate); std::atomic initialised = false; juce::AudioFormatReaderSource* afSource = nullptr; std::atomic looping = true; std::unique_ptr source = nullptr; juce::AudioBuffer audioBuffer; std::atomic counter = 0; std::atomic paused = false; int fileSampleRate; int currentSampleRate; CommonAudioProcessor& audioProcessor; };