Pulp 1.88.0
Cross-platform audio plugin framework
Loading...
Searching...
No Matches
parameter_target.hpp
Go to the documentation of this file.
1#pragma once
2
4
5#include <cstddef>
6#include <cstdint>
7#include <optional>
8#include <string_view>
9#include <variant>
10
11namespace pulp::timeline {
12
16
24 std::uint32_t param_id = 0;
25
27 constexpr bool valid() const noexcept {
28 return device_placement_id.valid();
29 }
30
31 constexpr bool operator==(const DeviceParameterTarget&) const = default;
32};
33
37enum class TrackMixerParameter : std::uint8_t {
40};
41
44constexpr std::string_view track_mixer_parameter_name(TrackMixerParameter value) noexcept {
45 switch (value) {
47 return "gain";
49 return "pan";
50 }
51 return "gain";
52}
53
56constexpr std::optional<TrackMixerParameter>
57track_mixer_parameter_from_name(std::string_view name) noexcept {
58 if (name == "gain")
60 if (name == "pan")
62 return std::nullopt;
63}
64
71
73 constexpr bool valid() const noexcept {
74 switch (parameter) {
77 return true;
78 }
79 return false;
80 }
81
82 constexpr bool operator==(const TrackMixerTarget&) const = default;
83};
84
92using ParameterTarget = std::variant<DeviceParameterTarget, TrackMixerTarget>;
93
102inline constexpr std::size_t kParameterTargetAlternativeCount =
103 std::variant_size_v<ParameterTarget>;
104
106
107} // namespace pulp::timeline
constexpr std::size_t kParameterTargetAlternativeCount
Number of alternatives in ParameterTarget.
Definition parameter_target.hpp:102
TrackMixerParameter
The mixer controls a track owns directly, independent of any device it hosts.
Definition parameter_target.hpp:37
constexpr std::string_view track_mixer_parameter_name(TrackMixerParameter value) noexcept
The canonical persisted spelling of a mixer parameter, shared by the encoder, the decoder,...
Definition parameter_target.hpp:44
constexpr std::optional< TrackMixerParameter > track_mixer_parameter_from_name(std::string_view name) noexcept
Parses the canonical persisted mixer-parameter spelling.
Definition parameter_target.hpp:57
std::variant< DeviceParameterTarget, TrackMixerTarget > ParameterTarget
Exhaustive set of document parameters an authored control can address.
Definition parameter_target.hpp:92
@ Gain
Definition parameter_target.hpp:38
@ Pan
Definition parameter_target.hpp:39
Definition program_compiler.hpp:18
Format-neutral document target for a placed device parameter.
Definition parameter_target.hpp:22
constexpr bool valid() const noexcept
Returns whether the referenced device-placement identity is nonzero.
Definition parameter_target.hpp:27
std::uint32_t param_id
Definition parameter_target.hpp:24
constexpr bool operator==(const DeviceParameterTarget &) const =default
ItemId device_placement_id
Definition parameter_target.hpp:23
Nonzero monotonic identity for a Timeline-owned object.
Definition item_id.hpp:19
Format-neutral document target for one of the owning track's own mixer controls.
Definition parameter_target.hpp:69
constexpr bool operator==(const TrackMixerTarget &) const =default
TrackMixerParameter parameter
Definition parameter_target.hpp:70
constexpr bool valid() const noexcept
Returns whether the parameter names a supported track mixer control.
Definition parameter_target.hpp:73