Pulp 1.88.0
Cross-platform audio plugin framework
Loading...
Searching...
No Matches
ara.hpp
Go to the documentation of this file.
1#pragma once
2
3// ARA (Audio Random Access) — minimal document controller stub.
4// Full ARA 2.0 support is a large undertaking; this provides the interface
5// structure so plugins can declare ARA capability without a full implementation.
6//
7// ARA allows DAWs to provide the plugin with direct access to audio content,
8// enabling features like spectral editing, chord detection, and time-stretching
9// without real-time playback.
10
11#include <string>
12#include <string_view>
13#include <cstdint>
14#include <vector>
15#include <functional>
16
17namespace pulp::format {
18
26
30public:
31 virtual ~AraDocumentController() = default;
32
34 virtual void begin_editing() {}
35
37 virtual void end_editing() {}
38
40 virtual void notify_audio_source_content_changed(int64_t audio_source_id) {
41 (void)audio_source_id;
42 }
43
45 virtual int supported_roles() const { return 0; }
46
48 virtual bool is_ara_supported() const { return false; }
49
51 virtual std::string ara_factory_name() const { return ""; }
52};
53
57
63
69
75constexpr const char* kClapAraFactoryExtension = "com.celemony.ara/clap-factory-v1";
76
82constexpr const char* kVst3AraFactoryContextKey = "com.celemony.ara/vst3-host-factory-v1";
83
87constexpr const char* kAuAraFactoryPropertyKey = "audioUnitARAFactory";
88
95const void* ara_companion_factory_for(class AraDocumentController* controller);
96
97} // namespace pulp::format
ARA document controller — manages the plugin's view of the DAW's audio content.
Definition ara.hpp:29
virtual bool is_ara_supported() const
Whether this plugin supports ARA.
Definition ara.hpp:48
virtual void begin_editing()
Called when the host creates a new document.
Definition ara.hpp:34
virtual ~AraDocumentController()=default
virtual void notify_audio_source_content_changed(int64_t audio_source_id)
Called when audio source data is available.
Definition ara.hpp:40
virtual int supported_roles() const
Get the supported ARA roles for this plugin.
Definition ara.hpp:45
virtual void end_editing()
Called when the host finishes editing the document.
Definition ara.hpp:37
virtual std::string ara_factory_name() const
ARA factory name (displayed in the DAW).
Definition ara.hpp:51
What the product grants a device: the quota table indexed by capability tier and live thermal state.
Definition aax_editor.hpp:31
const void * ara_companion_factory_for(class AraDocumentController *controller)
Return an opaque pointer to an ARA::ARAFactory-compatible struct when the processor is ARA-aware and ...
bool ara_sdk_compiled_in()
True when Pulp was built with the Celemony ARA SDK (PULP_ENABLE_ARA=ON.
constexpr const char * kVst3AraFactoryContextKey
VST3 — IPluginFactory3::setHostContext attribute key under which ARA-aware hosts (Cubase,...
Definition ara.hpp:82
constexpr const char * kAuAraFactoryPropertyKey
AU v3 — AUAudioUnit.audioUnitARAFactory property key.
Definition ara.hpp:87
constexpr const char * kClapAraFactoryExtension
Well-known extension id for the CLAP-ARA companion factory.
Definition ara.hpp:75
bool host_supports_ara()
Check if the current host supports ARA.
AraRole
ARA role capabilities.
Definition ara.hpp:20
@ EditorRenderer
Definition ara.hpp:23
@ None
Definition ara.hpp:21
@ PlaybackRenderer
Definition ara.hpp:22
@ EditorView
Definition ara.hpp:24
int ara_sdk_generation()
Highest ARA API generation Pulp was compiled against.