LMMS
Loading...
Searching...
No Matches
juce_ARAPlugInInstanceRoles.h
Go to the documentation of this file.
1/*
2 ==============================================================================
3
4 This file is part of the JUCE library.
5 Copyright (c) 2022 - Raw Material Software Limited
6
7 JUCE is an open source library subject to commercial or open-source
8 licensing.
9
10 By using JUCE, you agree to the terms of both the JUCE 7 End-User License
11 Agreement and JUCE Privacy Policy.
12
13 End User License Agreement: www.juce.com/juce-7-licence
14 Privacy Policy: www.juce.com/juce-privacy-policy
15
16 Or: You may also use this code under the terms of the GPL v3 (see
17 www.gnu.org/licenses).
18
19 JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
20 EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE
21 DISCLAIMED.
22
23 ==============================================================================
24*/
25
26#pragma once
27
28namespace juce
29{
30
31//==============================================================================
39{
40public:
41 enum class AlwaysNonRealtime { no, yes };
42
43 virtual ~ARARenderer() = default;
44
58 virtual void prepareToPlay (double sampleRate,
59 int maximumSamplesPerBlock,
60 int numChannels,
62 AlwaysNonRealtime alwaysNonRealtime = AlwaysNonRealtime::no)
63 {
64 ignoreUnused (sampleRate, maximumSamplesPerBlock, numChannels, precision, alwaysNonRealtime);
65 }
66
68 virtual void releaseResources() {}
69
71 virtual void reset() {}
72
89 virtual bool processBlock (AudioBuffer<float>& buffer,
91 const AudioPlayHead::PositionInfo& positionInfo) noexcept = 0;
92
109 virtual bool processBlock (AudioBuffer<double>& buffer,
111 const AudioPlayHead::PositionInfo& positionInfo) noexcept;
112};
113
114//==============================================================================
123class JUCE_API ARAPlaybackRenderer : public ARA::PlugIn::PlaybackRenderer,
124 public ARARenderer
125{
126public:
127 using ARA::PlugIn::PlaybackRenderer::PlaybackRenderer;
128
131 const AudioPlayHead::PositionInfo& positionInfo) noexcept override
132 {
133 ignoreUnused (buffer, realtime, positionInfo);
134 return false;
135 }
136
137 // Shadowing templated getters to default to JUCE versions of the returned classes
143 template <typename PlaybackRegion_t = ARAPlaybackRegion>
144 std::vector<PlaybackRegion_t*> const& getPlaybackRegions() const noexcept
145 {
146 return ARA::PlugIn::PlaybackRenderer::getPlaybackRegions<PlaybackRegion_t>();
147 }
148
149#if ARA_VALIDATE_API_CALLS
150 void addPlaybackRegion (ARA::ARAPlaybackRegionRef playbackRegionRef) noexcept override;
151 void removePlaybackRegion (ARA::ARAPlaybackRegionRef playbackRegionRef) noexcept override;
152 AudioProcessorARAExtension* araExtension {};
153#endif
154
155private:
157};
158
159//==============================================================================
168class JUCE_API ARAEditorRenderer : public ARA::PlugIn::EditorRenderer,
169 public ARARenderer
170{
171public:
172 using ARA::PlugIn::EditorRenderer::EditorRenderer;
173
174 // Shadowing templated getters to default to JUCE versions of the returned classes
175 template <typename PlaybackRegion_t = ARAPlaybackRegion>
176 std::vector<PlaybackRegion_t*> const& getPlaybackRegions() const noexcept
177 {
178 return ARA::PlugIn::EditorRenderer::getPlaybackRegions<PlaybackRegion_t>();
179 }
180
181 template <typename RegionSequence_t = ARARegionSequence>
182 std::vector<RegionSequence_t*> const& getRegionSequences() const noexcept
183 {
184 return ARA::PlugIn::EditorRenderer::getRegionSequences<RegionSequence_t>();
185 }
186
187 // By default, editor renderers will just let the signal pass through unaltered.
188 // If you're overriding this to implement actual audio preview, remember to check
189 // isNonRealtime of the process context - typically preview is limited to realtime.
191 AudioProcessor::Realtime isNonRealtime,
192 const AudioPlayHead::PositionInfo& positionInfo) noexcept override
193 {
194 ignoreUnused (buffer, isNonRealtime, positionInfo);
195 return true;
196 }
197
198private:
200};
201
202//==============================================================================
210class JUCE_API ARAEditorView : public ARA::PlugIn::EditorView
211{
212public:
213 using ARA::PlugIn::EditorView::EditorView;
214
215 // Shadowing templated getters to default to JUCE versions of the returned classes
216 template <typename RegionSequence_t = ARARegionSequence>
217 std::vector<RegionSequence_t*> const& getHiddenRegionSequences() const noexcept
218 {
219 return ARA::PlugIn::EditorView::getHiddenRegionSequences<RegionSequence_t>();
220 }
221
222 // Base class implementation must be called if overridden
223 void doNotifySelection (const ARA::PlugIn::ViewSelection* currentSelection) noexcept override;
224
225 // Base class implementation must be called if overridden
226 void doNotifyHideRegionSequences (std::vector<ARA::PlugIn::RegionSequence*> const& regionSequences) noexcept override;
227
233 {
234 public:
236 virtual ~Listener() = default;
237
238 ARA_DISABLE_UNREFERENCED_PARAMETER_WARNING_BEGIN
239
243 virtual void onNewSelection (const ARA::PlugIn::ViewSelection& viewSelection)
244 {
245 ignoreUnused (viewSelection);
246 }
247
251 virtual void onHideRegionSequences (std::vector<ARARegionSequence*> const& regionSequences)
252 {
253 ignoreUnused (regionSequences);
254 }
255
256 ARA_DISABLE_UNREFERENCED_PARAMETER_WARNING_END
257 };
258
260 void addListener (Listener* l);
261
263 void removeListener (Listener* l);
264
265private:
267
269};
270
271}
#define noexcept
Definition DistrhoDefines.h:72
Definition juce_ARAPlugInInstanceRoles.h:170
std::vector< PlaybackRegion_t * > const & getPlaybackRegions() const noexcept
Definition juce_ARAPlugInInstanceRoles.h:176
bool processBlock(AudioBuffer< float > &buffer, AudioProcessor::Realtime isNonRealtime, const AudioPlayHead::PositionInfo &positionInfo) noexcept override
Definition juce_ARAPlugInInstanceRoles.h:190
std::vector< RegionSequence_t * > const & getRegionSequences() const noexcept
Definition juce_ARAPlugInInstanceRoles.h:182
Definition juce_ARAPlugInInstanceRoles.h:233
virtual ~Listener()=default
virtual void onHideRegionSequences(std::vector< ARARegionSequence * > const &regionSequences)
Definition juce_ARAPlugInInstanceRoles.h:251
virtual ARA_DISABLE_UNREFERENCED_PARAMETER_WARNING_BEGIN void onNewSelection(const ARA::PlugIn::ViewSelection &viewSelection)
Definition juce_ARAPlugInInstanceRoles.h:243
Definition juce_ARAPlugInInstanceRoles.h:211
ListenerList< Listener > listeners
Definition juce_ARAPlugInInstanceRoles.h:266
std::vector< RegionSequence_t * > const & getHiddenRegionSequences() const noexcept
Definition juce_ARAPlugInInstanceRoles.h:217
Definition juce_ARAPlugInInstanceRoles.h:125
std::vector< PlaybackRegion_t * > const & getPlaybackRegions() const noexcept
Definition juce_ARAPlugInInstanceRoles.h:144
bool processBlock(AudioBuffer< float > &buffer, AudioProcessor::Realtime realtime, const AudioPlayHead::PositionInfo &positionInfo) noexcept override
Definition juce_ARAPlugInInstanceRoles.h:129
Definition juce_ARAPlugInInstanceRoles.h:39
virtual void reset()
Definition juce_ARAPlugInInstanceRoles.h:71
virtual ~ARARenderer()=default
virtual void releaseResources()
Definition juce_ARAPlugInInstanceRoles.h:68
AlwaysNonRealtime
Definition juce_ARAPlugInInstanceRoles.h:41
@ no
Definition juce_ARAPlugInInstanceRoles.h:41
virtual bool processBlock(AudioBuffer< float > &buffer, AudioProcessor::Realtime realtime, const AudioPlayHead::PositionInfo &positionInfo) noexcept=0
virtual void prepareToPlay(double sampleRate, int maximumSamplesPerBlock, int numChannels, AudioProcessor::ProcessingPrecision precision, AlwaysNonRealtime alwaysNonRealtime=AlwaysNonRealtime::no)
Definition juce_ARAPlugInInstanceRoles.h:58
Definition juce_AudioSampleBuffer.h:34
Definition juce_AudioPlayHead.h:318
Definition juce_AudioProcessor_ARAExtensions.h:45
ProcessingPrecision
Definition juce_AudioProcessor.h:76
Realtime
Definition juce_AudioProcessor.h:82
Definition juce_ListenerList.h:70
int * l
Definition inflate.c:1579
#define JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(className)
#define JUCE_API
Definition juce_StandardHeader.h:152
Definition carla_juce.cpp:31
@ no
Definition juce_AlertWindow.cpp:567
@ yes
Definition juce_AlertWindow.cpp:567
void ignoreUnused(Types &&...) noexcept
Definition juce_MathsFunctions.h:333
#define const
Definition zconf.h:137