diff --git a/Resources/audio/sosci.flac b/Resources/audio/sosci.flac new file mode 100644 index 0000000..745e2b8 Binary files /dev/null and b/Resources/audio/sosci.flac differ diff --git a/Source/CommonPluginProcessor.cpp b/Source/CommonPluginProcessor.cpp index 168671c..9587168 100644 --- a/Source/CommonPluginProcessor.cpp +++ b/Source/CommonPluginProcessor.cpp @@ -39,6 +39,8 @@ CommonAudioProcessor::CommonAudioProcessor() permanentEffects.push_back(thresholdEffect); effects.push_back(volumeEffect); effects.push_back(thresholdEffect); + + wavParser.setLooping(false); } void CommonAudioProcessor::addAllParameters() { @@ -187,6 +189,12 @@ double CommonAudioProcessor::getSampleRate() { void CommonAudioProcessor::loadAudioFile(const juce::File& file) { auto stream = std::make_unique(file); if (stream->openedOk()) { + loadAudioFile(std::move(stream)); + } +} + +void CommonAudioProcessor::loadAudioFile(std::unique_ptr stream) { + if (stream != nullptr) { juce::SpinLock::ScopedLockType lock(wavParserLock); wavParser.parse(std::move(stream)); diff --git a/Source/CommonPluginProcessor.h b/Source/CommonPluginProcessor.h index 98decb6..0daf153 100644 --- a/Source/CommonPluginProcessor.h +++ b/Source/CommonPluginProcessor.h @@ -55,6 +55,7 @@ public: void changeProgramName(int index, const juce::String& newName) override; double getSampleRate() override; void loadAudioFile(const juce::File& file); + void loadAudioFile(std::unique_ptr stream); void stopAudioFile(); void addAudioPlayerListener(AudioPlayerListener* listener); void removeAudioPlayerListener(AudioPlayerListener* listener); diff --git a/Source/SosciPluginProcessor.cpp b/Source/SosciPluginProcessor.cpp index 30e0b7c..05477d5 100644 --- a/Source/SosciPluginProcessor.cpp +++ b/Source/SosciPluginProcessor.cpp @@ -3,6 +3,12 @@ #include "audio/EffectParameter.h" SosciAudioProcessor::SosciAudioProcessor() { + // demo audio file on standalone only + if (juce::JUCEApplicationBase::isStandaloneApp()) { + std::unique_ptr stream = std::make_unique(BinaryData::sosci_flac, BinaryData::sosci_flacSize, false); + loadAudioFile(std::move(stream)); + } + addAllParameters(); } diff --git a/Source/components/AudioPlayerComponent.cpp b/Source/components/AudioPlayerComponent.cpp index 69cfa19..73604c3 100644 --- a/Source/components/AudioPlayerComponent.cpp +++ b/Source/components/AudioPlayerComponent.cpp @@ -26,8 +26,6 @@ AudioPlayerComponent::AudioPlayerComponent(CommonAudioProcessor& processor) : au playButton.setTooltip("Play audio file"); pauseButton.setTooltip("Pause audio file"); - repeatButton.setToggleState(true, juce::dontSendNotification); - playButton.onClick = [this]() { audioProcessor.wavParser.setPaused(false); if (audioProcessor.wavParser.isInitialised()) { @@ -73,6 +71,8 @@ AudioPlayerComponent::~AudioPlayerComponent() { // must hold lock void AudioPlayerComponent::setup() { + repeatButton.setToggleState(audioProcessor.wavParser.isLooping(), juce::dontSendNotification); + if (audioProcessor.wavParser.isInitialised()) { slider.setVisible(true); repeatButton.setVisible(true); @@ -88,7 +88,6 @@ void AudioPlayerComponent::setup() { }; playButton.setVisible(audioProcessor.wavParser.isPaused()); pauseButton.setVisible(!audioProcessor.wavParser.isPaused()); - audioProcessor.wavParser.setLooping(repeatButton.getToggleState()); } else { slider.setVisible(false); repeatButton.setVisible(false); diff --git a/sosci.jucer b/sosci.jucer index a10644b..fe3d7b0 100644 --- a/sosci.jucer +++ b/sosci.jucer @@ -9,6 +9,9 @@ pluginManufacturerCode="Jhba" pluginCode="Sosc" pluginAUMainType="'aufx'"> + + +