载入中...
搜索中...
未找到
AudioEffects.h
浏览该文件的文档.
1#pragma once
2#include "common/Export.h"
3
4
6
7#include <map>
8#include <memory>
9#include <string>
10#include <vector>
11
12namespace eve::audio_editing {
13
16 StableId id;
17 std::string type;
18 bool bypass = false;
19 double mix = 1.0;
21};
22
25 public virtual IEditableTarget,
28public:
30 explicit AudioEffectChainTarget(std::string id);
32 TargetId targetId() const override { return TargetId(id_); }
34 TargetDescriptor describe() const override;
36 void* queryCapability(const CapabilityId& capability) override;
38 Result<void> applyDomainOperation(const DomainOperation& operation) override;
40 std::unique_ptr<IDomainOperationTarget> cloneDomainState() const override;
42 Result<void> commitDomainState(std::unique_ptr<IDomainOperationTarget> candidate) override;
44 std::vector<AudioEffectRecord> effects() const;
48 Result<DomainOperation> makeDelete(const StableId& id) const;
50 Result<DomainOperation> makeReorder(const std::vector<StableId>& order) const;
52 std::vector<EditorDiagnostic> validate() const;
54 EditorValue snapshotValue() const;
56 Result<void> loadSnapshot(const EditorValue& snapshot);
58 Result<DomainOperation> makeAssignToBus(const AudioMixerTarget& mixer,
59 const ObjectId& bus) const;
60private:
61 std::string id_;
62 std::map<StableId, AudioEffectRecord> effects_;
63 std::vector<StableId> order_;
64};
65
68public:
70 virtual ~IAudioEffectChainSink() = default;
72 virtual Result<void> publish(const std::string& chain, Revision revision,
73 const std::vector<AudioEffectRecord>& effects) = 0;
74};
75
78public:
80 Result<void> publish(const AudioEffectChainTarget& chain,
81 Revision expectedRevision,
82 IAudioEffectChainSink& sink) const;
83};
84
85} // namespace eve::audio_editing
ActionParameterOperation operation
#define EVENGINE_API_BACKENDS
Definition Export.h:108
std::vector< std::int32_t > order
std::unique_ptr< ParticleEffect > effect
std::uint64_t revision
Move-only operation result carrying either a value or Status.
Definition Result.h:155
Rejects invalid/stale chains before runtime publication.
Revisioned reversible serial effect chain independent of an audio backend.
TargetId targetId() const override
Target id.
Serializable mixer-bus hierarchy, including master bus.
Runtime backend boundary for atomic effect-chain publication.
virtual Result< void > publish(const std::string &chain, Revision revision, const std::vector< AudioEffectRecord > &effects)=0
Publish.
virtual ~IAudioEffectChainSink()=default
Releases IAudioEffectChainSink resources.
Dirty region and revision shared by every editable document target.
Optional candidate/publish capability for atomic domain operations.
Editable-target capability that applies owning domain operations.
IEditableTarget public API.
Deterministic owning value tree shared by authoring hosts.
std::map< std::string, Value > Object
detail::StrongUint64< detail::RevisionTag > Revision
Monotonic content/state revision used for optimistic-concurrency checks.
Definition Revision.h:13
Stable effect instance with normalized dry/wet mix and typed parameters.
DomainOperation public API.
Stable discovery metadata exposed by every editable target.