10 class NodeGraphManager;
21 class RootAudioBuffer;
23 class BufferProcessor;
24 class BufferProcessingChain;
53MAYAFLUX_API
void register_audio_node(
const std::shared_ptr<Nodes::Node>& node, uint32_t channel = 0);
63MAYAFLUX_API
void register_audio_node(
const std::shared_ptr<Nodes::Node>& node,
const std::vector<uint32_t>& channels);
66 const std::shared_ptr<Nodes::Node>& node,
68 uint32_t channel = 0);
78MAYAFLUX_API
void unregister_audio_node(
const std::shared_ptr<Nodes::Node>& node, uint32_t channel = 0);
89 const std::shared_ptr<Nodes::Node>& node,
91 uint32_t channel = 0);
101MAYAFLUX_API
void unregister_audio_node(
const std::shared_ptr<Nodes::Node>& node,
const std::vector<uint32_t>& channels);
113template <
typename NodeType,
typename... Args>
114 requires std::derived_from<NodeType, Nodes::Node>
117 auto node = std::make_shared<NodeType>(std::forward<Args>(args)...);
152template <
typename NodeNetworkType,
typename... Args>
153 requires std::derived_from<NodeNetworkType, Nodes::Network::NodeNetwork>
156 auto network = std::make_shared<NodeNetworkType>(std::forward<Args>(args)...);
216MAYAFLUX_API
void register_audio_buffer(
const std::shared_ptr<Buffers::AudioBuffer>& buffer, uint32_t channel = 0);
228MAYAFLUX_API
void unregister_audio_buffer(
const std::shared_ptr<Buffers::AudioBuffer>& buffer, uint32_t channel = 0);
237template <
typename BufferType,
typename... Args>
238 requires std::derived_from<BufferType, Buffers::AudioBuffer>
239auto create_buffer(uint32_t channel, uint32_t buffer_size, Args&&... args) -> std::shared_ptr<BufferType>
241 auto buffer = std::make_shared<BufferType>(channel, buffer_size, std::forward<Args>(args)...);
271template <
typename BufferType,
typename... Args>
272 requires std::derived_from<BufferType, Buffers::VKBuffer>
275 auto buffer = std::make_shared<BufferType>(std::forward<Args>(args)...);
291template <
typename ProcessorType,
typename... Args>
292 requires std::derived_from<ProcessorType, Buffers::BufferProcessor>
293auto create_processor(
const std::shared_ptr<Buffers::AudioBuffer> buffer, Args&&... args) -> std::shared_ptr<ProcessorType>
295 auto processor = std::make_shared<ProcessorType>(std::forward<Args>(args)...);
300template <
typename ProcessorType,
typename... Args>
301 requires std::derived_from<ProcessorType, Buffers::BufferProcessor>
302auto create_processor(
const std::shared_ptr<Buffers::VKBuffer> buffer, Args&&... args) -> std::shared_ptr<ProcessorType>
304 auto processor = std::make_shared<ProcessorType>(std::forward<Args>(args)...);
337MAYAFLUX_API
void connect_node_to_channel(
const std::shared_ptr<Nodes::Node>& node, uint32_t channel_index = 0,
float mix = 0.5F,
bool clear_before =
false);
348MAYAFLUX_API
void connect_node_to_buffer(
const std::shared_ptr<Nodes::Node>& node,
const std::shared_ptr<Buffers::AudioBuffer>& buffer,
float mix = 0.5F,
bool clear_before =
true);
368 const std::shared_ptr<Buffers::AudioBuffer>& buffer)
378 const std::shared_ptr<Buffers::VKBuffer>& buffer)
394MAYAFLUX_API
void read_from_audio_input(
const std::shared_ptr<Buffers::AudioBuffer>& buffer, uint32_t channel = 0);
401MAYAFLUX_API
void detach_from_audio_input(
const std::shared_ptr<Buffers::AudioBuffer>& buffer, uint32_t channel = 0);
425MAYAFLUX_API std::vector<std::shared_ptr<Buffers::AudioBuffer>>
clone_buffer_to_channels(
const std::shared_ptr<Buffers::AudioBuffer>& buffer,
426 const std::vector<uint32_t>& channels);
429 const std::shared_ptr<Buffers::AudioBuffer>& buffer,
430 const std::vector<uint32_t>& channels,
455 const std::vector<uint32_t>& channels,
466 const uint32_t channel);
476 const std::vector<uint32_t>& channels);
static MayaFlux::Nodes::ProcessingToken token
Abstract base class for structured collections of nodes with defined relationships.
std::function< void(const std::shared_ptr< AudioBuffer > &)> AudioProcessingFunction
Audio processing function - receives correctly-typed AudioBuffer.
ProcessingToken
Bitfield enum defining processing characteristics and backend requirements for buffer operations.
@ AUDIO_BACKEND
Standard audio processing backend configuration.
@ GRAPHICS_BACKEND
Standard graphics processing backend configuration.
std::function< void(const std::shared_ptr< VKBuffer > &)> GraphicsProcessingFunction
Graphics processing function - receives correctly-typed VKBuffer.
@ Nodes
DSP Generator and Filter Nodes, graph pipeline, node management.
ProcessingToken
Enumerates the different processing domains for nodes.
@ AUDIO_RATE
Nodes that process at the audio sample rate.
std::shared_ptr< Buffers::BufferProcessor > attach_quick_process_audio(Buffers::AudioProcessingFunction processor, const std::shared_ptr< Buffers::AudioBuffer > &buffer)
std::shared_ptr< Buffers::BufferProcessor > attach_quick_process_graphics(Buffers::GraphicsProcessingFunction processor, const std::shared_ptr< Buffers::VKBuffer > &buffer)
void connect_node_to_buffer(const std::shared_ptr< Nodes::Node > &node, const std::shared_ptr< Buffers::AudioBuffer > &buffer, float mix, bool clear_before)
Connects a node to a specific buffer.
std::shared_ptr< Buffers::AudioBuffer > create_input_listener_buffer(uint32_t channel, bool add_to_output)
Creates a new AudioBuffer for input listening.
void register_node(const std::shared_ptr< Nodes::Node > &node, const Nodes::ProcessingToken &token, uint32_t channel)
std::shared_ptr< Buffers::BufferProcessingChain > create_processing_chain()
Creates a new processing chain for the default engine.
void unregister_node(const std::shared_ptr< Nodes::Node > &node, const Nodes::ProcessingToken &token, uint32_t channel)
Removes a node from the root node of specified channels.
auto create_processor(const std::shared_ptr< Buffers::AudioBuffer > buffer, Args &&... args) -> std::shared_ptr< ProcessorType >
Creates a new processor and adds it to a buffer.
void unregister_graphics_buffer(const std::shared_ptr< Buffers::VKBuffer > &buffer)
Unregisters a VKBuffer from the default engine's buffer manager.
void add_processor(const std::shared_ptr< Buffers::BufferProcessor > &processor, const std::shared_ptr< Buffers::Buffer > &buffer, Buffers::ProcessingToken token)
Adds a processor to a specific buffer.
std::shared_ptr< Nodes::NodeGraphManager > get_node_graph_manager()
Gets the node graph manager from the default engine.
std::shared_ptr< Buffers::BufferProcessor > attach_quick_process(Buffers::AudioProcessingFunction processor, unsigned int channel_id)
Attaches a processing function to a specific channel.
Buffers::RootAudioBuffer & get_root_audio_buffer(uint32_t channel)
Gets the audio buffer for a specific channel.
auto create_node_network(Args &&... args) -> std::shared_ptr< NodeNetworkType >
Creates a new node network.
void register_node_network(const std::shared_ptr< Nodes::Network::NodeNetwork > &network, const Nodes::ProcessingToken &token)
Registers a node network with the default engine's node graph manager.
void remove_supplied_buffer_from_channels(const std::shared_ptr< Buffers::AudioBuffer > &buffer, const std::vector< uint32_t > &channels)
Removes a supplied buffer from multiple channels.
std::vector< std::shared_ptr< Buffers::AudioBuffer > > clone_buffer_to_channels(const std::shared_ptr< Buffers::AudioBuffer > &buffer, const std::vector< uint32_t > &channels)
Clones a buffer to multiple channels.
void unregister_audio_buffer(const std::shared_ptr< Buffers::AudioBuffer > &buffer, uint32_t channel)
Unregisters an AudioBuffer from the default engine's buffer manager.
void supply_buffer_to_channels(const std::shared_ptr< Buffers::AudioBuffer > &buffer, const std::vector< uint32_t > &channels, double mix)
Supplies a buffer to multiple channels with mixing.
void supply_buffer_to_channel(const std::shared_ptr< Buffers::AudioBuffer > &buffer, uint32_t channel, double mix)
Supplies a buffer to a single channel with mixing.
void register_audio_buffer(const std::shared_ptr< Buffers::AudioBuffer > &buffer, uint32_t channel)
Registers an AudioBuffer with the default engine's buffer manager.
void detach_from_audio_input(const std::shared_ptr< Buffers::AudioBuffer > &buffer, uint32_t channel)
Stops reading audio data from the default input source.
void register_audio_node(const std::shared_ptr< Nodes::Node > &node, uint32_t channel)
Adds a node to the root node of a specific channel.
void unregister_node_network(const std::shared_ptr< Nodes::Network::NodeNetwork > &network, const Nodes::ProcessingToken &token)
Unregisters a node network from the default engine's node graph manager.
void unregister_audio_node(const std::shared_ptr< Nodes::Node > &node, uint32_t channel)
Removes a node from the root node of a specific channel.
auto create_node(Args &&... args) -> std::shared_ptr< NodeType >
std::shared_ptr< Buffers::BufferManager > get_buffer_manager()
Gets the buffer manager from the default engine.
void register_graphics_buffer(const std::shared_ptr< Buffers::VKBuffer > &buffer, Buffers::ProcessingToken token)
Registers a VKBuffer with the default engine's buffer manager.
auto create_buffer(uint32_t channel, uint32_t buffer_size, Args &&... args) -> std::shared_ptr< BufferType >
creates a new buffer of the specified type and registers it
Nodes::RootNode & get_audio_channel_root(uint32_t channel)
Gets the root node for a specific channel.
std::vector< double > mix(const std::vector< std::vector< double > > &streams)
Mix multiple data streams with equal weighting.
void read_from_audio_input(const std::shared_ptr< Buffers::AudioBuffer > &buffer, uint32_t channel)
Reads audio data from the default input source into a buffer.
void connect_node_to_channel(const std::shared_ptr< Nodes::Node > &node, uint32_t channel_index, float mix, bool clear_before)
Connects a node to a specific output channel.
void remove_supplied_buffer_from_channel(const std::shared_ptr< Buffers::AudioBuffer > &buffer, const uint32_t channel)
Removes a supplied buffer from multiple channels.
Main namespace for the Maya Flux audio engine.