Pulp 1.88.0
Cross-platform audio plugin framework
Loading...
Searching...
No Matches
modulation_lane.hpp
Go to the documentation of this file.
1#pragma once
2
4
5#include <cstdint>
6#include <string>
7
8namespace pulp::state {
9
10using ModulationSourceId = uint32_t;
11
12enum class ModulationScope : uint8_t {
17};
18
19enum class ModulationRate : uint8_t {
22};
23
24enum class ModulationMixMode : uint8_t {
28};
29
36
45
52
62
67
73
75 ModulationScope target) noexcept {
76 return source == target || source == ModulationScope::Global;
77}
78
80 const ModulationLane& lane) noexcept {
81 if (lane.source.id == 0) {
83 }
84 if (lane.target.param_id == 0) {
86 }
87 if (!lane.target.writable) {
89 }
90 if (!lane.target.modulatable) {
92 }
93 if (!modulation_scopes_compatible(lane.source.scope, lane.target.scope)) {
95 }
96 if (lane.source.rate == ModulationRate::Audio &&
97 modulation_rate_for(lane.target.param_rate) != ModulationRate::Audio) {
99 }
101}
102
103} // namespace pulp::state
SequencerStateChannel is the audio-safe transport for a plugin's structured NON-parameter state: the ...
Definition audio_device_manager.hpp:48
ParamRate
Parameter update-rate classification.
Definition parameter.hpp:62
@ AudioRate
Definition parameter.hpp:64
@ ControlRate
Definition parameter.hpp:63
ModulationLaneValidation validate_modulation_lane(const ModulationLane &lane) noexcept
Definition modulation_lane.hpp:79
ModulationLaneRejectReason
Definition modulation_lane.hpp:53
@ ScopeMismatch
Definition modulation_lane.hpp:59
@ InvalidSource
Definition modulation_lane.hpp:55
@ None
Definition modulation_lane.hpp:54
@ InvalidTarget
Definition modulation_lane.hpp:56
@ TargetNotWritable
Definition modulation_lane.hpp:57
@ TargetNotModulatable
Definition modulation_lane.hpp:58
@ AudioSourceRequiresAudioTarget
Definition modulation_lane.hpp:60
ModulationScope
Definition modulation_lane.hpp:12
@ Note
Definition modulation_lane.hpp:15
@ Global
Definition modulation_lane.hpp:13
@ GraphNode
Definition modulation_lane.hpp:16
@ Voice
Definition modulation_lane.hpp:14
@ Audio
Definition listener_token.hpp:25
ModulationMixMode
Definition modulation_lane.hpp:24
@ Replace
Definition modulation_lane.hpp:26
@ Multiply
Definition modulation_lane.hpp:27
@ Add
Definition modulation_lane.hpp:25
constexpr ModulationRate modulation_rate_for(ParamRate rate) noexcept
Definition modulation_lane.hpp:68
uint32_t ModulationSourceId
Definition modulation_lane.hpp:10
ModulationRate
Definition modulation_lane.hpp:19
@ Control
Definition modulation_lane.hpp:20
@ Audio
Definition modulation_lane.hpp:21
uint32_t ParamID
Unique parameter identifier, stable across plugin versions.
Definition parameter.hpp:55
constexpr bool modulation_scopes_compatible(ModulationScope source, ModulationScope target) noexcept
Definition modulation_lane.hpp:74
Definition modulation_lane.hpp:63
ModulationLaneRejectReason reason
Definition modulation_lane.hpp:65
bool accepted
Definition modulation_lane.hpp:64
Definition modulation_lane.hpp:46
ModulationSource source
Definition modulation_lane.hpp:47
float depth
Definition modulation_lane.hpp:50
ModulationTarget target
Definition modulation_lane.hpp:48
ModulationMixMode mix
Definition modulation_lane.hpp:49
Definition modulation_lane.hpp:30
std::string units
Definition modulation_lane.hpp:34
ModulationScope scope
Definition modulation_lane.hpp:32
ModulationRate rate
Definition modulation_lane.hpp:33
Definition modulation_lane.hpp:37
std::string units
Definition modulation_lane.hpp:43
bool modulatable
Definition modulation_lane.hpp:41
ParamRate param_rate
Definition modulation_lane.hpp:40
bool writable
Definition modulation_lane.hpp:42
ParamID param_id
Definition modulation_lane.hpp:38
ModulationScope scope
Definition modulation_lane.hpp:39