Pulp 1.88.0
Cross-platform audio plugin framework
Loading...
Searching...
No Matches
aax_model.hpp
Go to the documentation of this file.
1#pragma once
2
5#include <string>
6#include <string_view>
7#include <vector>
8#include <cstddef>
9#include <cstdint>
10#include <functional>
11
12namespace pulp::format::aax {
13
15 uint32_t manufacturer_id = 0;
16 uint32_t product_id = 0;
17 uint32_t native_id_base = 0;
18};
19
34
38 std::string aax_id;
39 std::string name;
40 std::string unit;
42 std::function<std::string(float)> to_string;
43 std::function<float(const std::string&)> from_string;
44 bool discrete = false;
45 uint32_t step_count = 0;
46};
47
58
62 std::vector<ParameterBinding> parameters;
63 std::vector<ComponentLayout> components;
64 bool supports_midi_input = false;
66 bool uses_transport = true;
67 bool supports_sidechain = false;
69 // Packet layout: slot 0 is the AAX master bypass, slots 1..N are the
70 // plugin parameters in declaration order, and the last slot is the host
71 // render mode (see render_mode_packet_slot()).
72 std::size_t packet_float_count = 2;
73};
74
76 bool ok = false;
78 std::string error;
79};
80
81uint32_t fourcc(std::string_view text);
82std::string fourcc_string(uint32_t value);
84uint32_t derive_native_plugin_id(uint32_t base_id, std::size_t variant_index);
85
87
91std::size_t render_mode_packet_slot(const PluginDefinition& definition) noexcept;
92
94float render_mode_packet_value(bool offline) noexcept;
95
99 const float* packet) noexcept;
100
102const char* stem_signature(StemKind stem);
104
105} // namespace pulp::format::aax
Definition aax_editor.hpp:31
StemKind stem_kind_for_channels(int channels)
DefinitionResult build_plugin_definition(ProcessorFactory factory, const PluginCodes &codes)
uint32_t fourcc(std::string_view text)
int stem_channel_count(StemKind stem)
uint32_t derive_native_plugin_id(uint32_t base_id, std::size_t variant_index)
std::size_t render_mode_packet_slot(const PluginDefinition &definition) noexcept
Index of the parameter-packet slot that carries the host render mode.
StemKind
Definition aax_model.hpp:20
@ lcr
Definition aax_model.hpp:24
@ surround_5_0
Definition aax_model.hpp:27
@ lcrs
Definition aax_model.hpp:25
@ none
Definition aax_model.hpp:21
@ stereo
Definition aax_model.hpp:23
@ mono
Definition aax_model.hpp:22
@ surround_6_0
Definition aax_model.hpp:29
@ surround_7_1
Definition aax_model.hpp:32
@ quad
Definition aax_model.hpp:26
@ surround_6_1
Definition aax_model.hpp:30
@ surround_5_1
Definition aax_model.hpp:28
@ surround_7_0
Definition aax_model.hpp:31
float render_mode_packet_value(bool offline) noexcept
The render mode the data model publishes for an instance.
ProcessMode process_mode_from_packet(const PluginDefinition &definition, const float *packet) noexcept
The ProcessMode a block runs under, decoded from the parameter packet.
std::string fourcc_string(uint32_t value)
std::string parameter_id_string(state::ParamID id)
const char * stem_signature(StemKind stem)
std::unique_ptr< Processor >(*)() ProcessorFactory
Factory function type — plugins provide this to create processor instances.
Definition processor.hpp:1416
ProcessMode
Coarse processing mode for one block.
Definition process_block.hpp:29
uint32_t ParamID
Unique parameter identifier, stable across plugin versions.
Definition parameter.hpp:55
Plugin metadata — declared once, immutable.
Definition plugin_descriptor.hpp:245
Definition aax_model.hpp:48
uint32_t native_plugin_id
Definition aax_model.hpp:54
std::string short_name
Definition aax_model.hpp:55
StemKind output_stem
Definition aax_model.hpp:50
StemKind input_stem
Definition aax_model.hpp:49
int sidechain_channels
Definition aax_model.hpp:53
int main_output_channels
Definition aax_model.hpp:52
int main_input_channels
Definition aax_model.hpp:51
std::string description
Definition aax_model.hpp:56
Definition aax_model.hpp:75
bool ok
Definition aax_model.hpp:76
std::string error
Definition aax_model.hpp:78
PluginDefinition definition
Definition aax_model.hpp:77
Definition aax_model.hpp:35
state::ParamInfo info
Definition aax_model.hpp:36
std::function< float(const std::string &)> from_string
Definition aax_model.hpp:43
bool discrete
Definition aax_model.hpp:44
state::ParamRange range
Definition aax_model.hpp:41
std::function< std::string(float)> to_string
Definition aax_model.hpp:42
uint32_t step_count
Definition aax_model.hpp:45
std::string name
Definition aax_model.hpp:39
std::string aax_id
Definition aax_model.hpp:38
std::string unit
Definition aax_model.hpp:40
Definition aax_model.hpp:14
uint32_t native_id_base
Definition aax_model.hpp:17
uint32_t manufacturer_id
Definition aax_model.hpp:15
uint32_t product_id
Definition aax_model.hpp:16
Definition aax_model.hpp:59
PluginDescriptor descriptor
Definition aax_model.hpp:60
bool supports_sidechain
Definition aax_model.hpp:67
std::vector< ParameterBinding > parameters
Definition aax_model.hpp:62
bool supports_midi_output
Definition aax_model.hpp:65
std::size_t packet_float_count
Definition aax_model.hpp:72
std::vector< ComponentLayout > components
Definition aax_model.hpp:63
PluginCodes codes
Definition aax_model.hpp:61
bool uses_transport
Definition aax_model.hpp:66
bool supports_midi_input
Definition aax_model.hpp:64
int latency_samples
Definition aax_model.hpp:68
Immutable parameter metadata, registered once at plugin initialization.
Definition parameter.hpp:316
Defines the numeric range of a parameter, including normalization.
Definition parameter.hpp:131