Audacity 3.2.0
AudioUnitValidator.h
Go to the documentation of this file.
1/*!********************************************************************
2
3 Audacity: A Digital Audio Editor
4
5 @file AudioUnitValidator.h
6
7 Dominic Mazzoni
8 Leland Lucius
9
10 Paul Licameli split from AudioUnitEffect.cpp
11
12**********************************************************************/
13
14#ifndef __AUDACITY_AUDIO_UNIT_VALIDATOR__
15#define __AUDACITY_AUDIO_UNIT_VALIDATOR__
16
17#include <AudioToolbox/AudioUnitUtilities.h>
18#include <unordered_map>
19#include "AudioUnitUtils.h"
20#include "EffectPlugin.h"
21
22class AUControl;
23
25
26class AudioUnitValidator : public wxEvtHandler, public EffectUIValidator {
27 struct CreateToken{};
28public:
29 static std::unique_ptr<EffectUIValidator> Create(
31 const wxString &uiType,
32 EffectInstance &instance, EffectSettingsAccess &access);
33
36 AudioUnitInstance &instance, AUControl *pControl, bool isGraphical);
37
38 ~AudioUnitValidator() override;
39
40 bool UpdateUI() override;
41 bool ValidateUI() override;
42 bool IsGraphicalUI() override;
43
44private:
45 static void EventListenerCallback(void *inCallbackRefCon,
46 void *inObject, const AudioUnitEvent *inEvent,
47 UInt64 inEventHostTime, AudioUnitParameterValue inParameterValue);
48 void EventListener(const AudioUnitEvent *inEvent,
49 AudioUnitParameterValue inParameterValue);
50 void OnIdle(wxIdleEvent &evt);
53
54 void Notify();
55
58
60
61 // The lifetime guarantee is assumed to be provided by the instance.
62 // See contract of PopulateUI
66 std::vector<
67 std::pair<AudioUnitParameterID, AudioUnitParameterValue>> mToUpdate;
68 const bool mIsGraphical;
69
70 // The map of parameter IDs to their current values
71 std::unordered_map<AudioUnitParameterID, AudioUnitParameterValue>
73};
74#endif
std::unique_ptr< T, AudioUnitCleaner< T, fn > > AudioUnitCleanup
RAII for cleaning up AU plugin state.
#define S(N)
Definition: ToChars.cpp:64
static Settings & settings()
Definition: TrackInfo.cpp:87
bool FetchSettingsFromInstance(EffectSettings &settings)
bool IsGraphicalUI() override
static std::unique_ptr< EffectUIValidator > Create(EffectUIClientInterface &effect, ShuttleGui &S, const wxString &uiType, EffectInstance &instance, EffectSettingsAccess &access)
const EventListenerPtr mEventListenerRef
void EventListener(const AudioUnitEvent *inEvent, AudioUnitParameterValue inParameterValue)
AudioUnitValidator(CreateToken, EffectUIClientInterface &effect, EffectSettingsAccess &access, AudioUnitInstance &instance, AUControl *pControl, bool isGraphical)
void OnIdle(wxIdleEvent &evt)
AudioUnitCleanup< AUEventListenerRef, AUListenerDispose > EventListenerPtr
std::vector< std::pair< AudioUnitParameterID, AudioUnitParameterValue > > mToUpdate
EventListenerPtr MakeListener()
static void EventListenerCallback(void *inCallbackRefCon, void *inObject, const AudioUnitEvent *inEvent, UInt64 inEventHostTime, AudioUnitParameterValue inParameterValue)
bool StoreSettingsToInstance(const EffectSettings &settings)
AUControl *const mpControl
bool ValidateUI() override
Get settings data from the panel; may make error dialogs and return false.
bool UpdateUI() override
Update appearance of the panel for changes in settings.
std::unordered_map< AudioUnitParameterID, AudioUnitParameterValue > mParameterValues
AudioUnitInstance & mInstance
Performs effect computation.
EffectUIClientInterface is an abstract base class to populate a UI and validate UI values....
Definition: EffectPlugin.h:170
Interface for transferring values from a panel of effect controls.
Definition: EffectPlugin.h:239
Derived from ShuttleGuiBase, an Audacity specific class for shuttling data to and from GUI.
Definition: ShuttleGui.h:627
Externalized state of a plug-in.