|
- /*
- ==============================================================================
-
- This file is part of the JUCE library.
- Copyright (c) 2022 - Raw Material Software Limited
-
- JUCE is an open source library subject to commercial or open-source
- licensing.
-
- The code included in this file is provided under the terms of the ISC license
- http://www.isc.org/downloads/software-support-policy/isc-license. Permission
- To use, copy, modify, and/or distribute this software for any purpose with or
- without fee is hereby granted provided that the above copyright notice and
- this permission notice appear in all copies.
-
- JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
- EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE
- DISCLAIMED.
-
- ==============================================================================
- */
-
- namespace juce
- {
-
- //==============================================================================
- /**
- An AudioSource that uses the Reverb class to apply a reverb to another AudioSource.
-
- @see Reverb
-
- @tags{Audio}
- */
- class JUCE_API ReverbAudioSource : public AudioSource
- {
- public:
- /** Creates a ReverbAudioSource to process a given input source.
-
- @param inputSource the input source to read from - this must not be null
- @param deleteInputWhenDeleted if true, the input source will be deleted when
- this object is deleted
- */
- ReverbAudioSource (AudioSource* inputSource,
- bool deleteInputWhenDeleted);
-
- /** Destructor. */
- ~ReverbAudioSource() override;
-
- //==============================================================================
- /** Returns the parameters from the reverb. */
- const Reverb::Parameters& getParameters() const noexcept { return reverb.getParameters(); }
-
- /** Changes the reverb's parameters. */
- void setParameters (const Reverb::Parameters& newParams);
-
- void setBypassed (bool isBypassed) noexcept;
- bool isBypassed() const noexcept { return bypass; }
-
- //==============================================================================
- void prepareToPlay (int samplesPerBlockExpected, double sampleRate) override;
- void releaseResources() override;
- void getNextAudioBlock (const AudioSourceChannelInfo&) override;
-
- private:
- //==============================================================================
- CriticalSection lock;
- OptionalScopedPointer<AudioSource> input;
- Reverb reverb;
- std::atomic<bool> bypass;
-
- JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (ReverbAudioSource)
- };
-
- } // namespace juce
|