osci-render/Source/wav/WavParser.h

40 wiersze
1.0 KiB
C
Czysty Zwykły widok Historia

2024-08-22 15:59:21 +00:00
#pragma once
#include "../shape/OsciPoint.h"
2024-08-22 15:59:21 +00:00
#include <JuceHeader.h>
class CommonAudioProcessor;
2024-08-22 15:59:21 +00:00
class WavParser {
public:
2025-01-07 17:51:08 +00:00
WavParser(CommonAudioProcessor& p);
2024-08-22 15:59:21 +00:00
~WavParser();
OsciPoint getSample();
2024-08-22 15:59:21 +00:00
void setProgress(double progress);
void setPaused(bool paused);
bool isPaused();
void setLooping(bool looping);
bool isLooping();
2025-01-07 17:51:08 +00:00
bool parse(std::unique_ptr<juce::InputStream> stream);
void close();
bool isInitialised();
std::function<void(double)> onProgress;
2024-08-22 15:59:21 +00:00
private:
void setSampleRate(double sampleRate);
2025-01-07 17:51:08 +00:00
std::atomic<bool> initialised = false;
juce::AudioFormatReaderSource* afSource = nullptr;
std::atomic<bool> looping = true;
std::unique_ptr<juce::ResamplingAudioSource> source = nullptr;
2024-08-22 15:59:21 +00:00
juce::AudioBuffer<float> audioBuffer;
2025-01-07 17:51:08 +00:00
std::atomic<long> totalSamples;
std::atomic<long> counter = 0;
std::atomic<double> currentSample = 0;
std::atomic<bool> paused = false;
2024-08-22 15:59:21 +00:00
int fileSampleRate;
int currentSampleRate;
CommonAudioProcessor& audioProcessor;
};