60 void add_to_root(
const std::shared_ptr<Node>& node,
ProcessingToken token,
unsigned int channel = 0);
71 void remove_from_root(
const std::shared_ptr<Node>& node,
ProcessingToken token,
unsigned int channel = 0);
85 auto node = get_node(node_id);
87 add_to_root(node,
token, channel);
102 std::function<
void(std::span<RootNode*>)> processor);
113 const std::unordered_map<unsigned int, std::shared_ptr<RootNode>>& get_all_channel_root_nodes(
ProcessingToken token = ProcessingToken::AUDIO_RATE)
const;
133 template <
typename NodeType,
typename... Args>
134 inline std::shared_ptr<NodeType>
create_node(
const std::string&
id, Args&&... args)
136 auto node = std::make_shared<NodeType>(std::forward<Args>(args)...);
137 m_Node_registry[id] = node;
150 std::shared_ptr<Node> get_node(
const std::string&
id);
167 void connect(
const std::string& source_id,
const std::string& target_id);
177 bool is_node_registered(
const std::shared_ptr<Node>& node);
225 std::vector<double> process_channel(
ProcessingToken token,
unsigned int channel,
unsigned int num_samples);
250 std::unordered_map<unsigned int, std::vector<double>> process_token_with_channel_data(
288 void process_all_tokens(
unsigned int num_samples = 1);
297 std::vector<ProcessingToken> get_active_tokens()
const;
320 void print_summary()
const;
349 [[nodiscard]] std::vector<std::shared_ptr<NodeNetwork>> get_networks(
ProcessingToken token, uint32_t channel = 0)
const;
356 [[nodiscard]] std::vector<std::shared_ptr<NodeNetwork>> get_all_networks(
ProcessingToken token)
const;
371 void register_network_global(
const std::shared_ptr<NodeNetwork>& network);
376 void unregister_network_global(
const std::shared_ptr<NodeNetwork>& network);
388 std::vector<std::vector<double>> process_audio_networks(
ProcessingToken token, uint32_t num_samples, uint32_t channel = 0);
415 std::unordered_map<unsigned int, std::shared_ptr<RootNode>>>
426 std::function<void(std::span<RootNode*>)>>
459 std::unordered_map<unsigned int, std::vector<std::shared_ptr<NodeNetwork>>>>
466 std::unordered_map<ProcessingToken, std::vector<std::shared_ptr<NodeNetwork>>>
501 void register_global(
const std::shared_ptr<Node>& node);
508 void set_channel_mask(
const std::shared_ptr<Node>& node, uint32_t channel_id);
517 void unset_channel_mask(
const std::shared_ptr<Node>& node, uint32_t channel_id);
525 void unregister_global(
const std::shared_ptr<Node>& node);
534 void normalize_sample(
double& sample, uint32_t num_nodes);
539 bool is_network_registered(
const std::shared_ptr<NodeNetwork>& network);