22 }
else if (ctx.
channels.has_value()) {
23 for (uint32_t ch : ctx.
channels.value()) {
26 }
else if (node->get_channel_mask() != 0) {
27 for (uint32_t ch = 0; ch < 32; ++ch) {
28 if (node->get_channel_mask() & (1 << ch)) {
45 "Registering audio network in AUDIO_RATE domain without AUDIO_SINK output mode. Forcing AUDIO_SINK mode.");
49 network->add_channel_usage(ctx.
channel.value());
50 }
else if (ctx.
channels.has_value()) {
51 for (uint32_t ch : ctx.
channels.value()) {
52 network->add_channel_usage(ch);
58 "Registering visual network in VISUAL_RATE domain without GRAPHICS_BIND output mode. Forcing GRAPHICS_BIND mode.");
69 if (
auto audio_buffer = std::dynamic_pointer_cast<Buffers::AudioBuffer>(buffer)) {
72 }
else if (ctx.
channels.has_value()) {
78 if (
auto vk_buffer = std::dynamic_pointer_cast<Buffers::VKBuffer>(buffer)) {
86 if (
auto sound_container = std::dynamic_pointer_cast<Kakshya::SoundFileContainer>(container)) {
104std::shared_ptr<Nodes::Node>
operator|(
const std::shared_ptr<Nodes::Node>& node,
Domain d)
111std::shared_ptr<Nodes::NodeNetwork>
operator|(
const std::shared_ptr<Nodes::NodeNetwork>& network,
Domain d)
118std::shared_ptr<Buffers::Buffer>
operator|(
const std::shared_ptr<Buffers::Buffer>& buffer,
Domain d)
#define MF_WARN(comp, ctx,...)
Audio file loading and container management API.
static MayaFlux::Nodes::ProcessingToken token
std::shared_ptr< Buffers::TextureBuffer > load_buffer(const std::string &filepath)
std::shared_ptr< Kakshya::SoundFileContainer > load_container(const std::string &filepath)
@ GRAPHICS_BIND
State available for visualization (read-only)
@ AUDIO_SINK
Aggregated audio samples sent to output.
@ Init
Engine/subsystem initialization.
@ API
MayaFlux/API Wrapper and convenience functions.
@ AUDIO_RATE
Nodes that process at the audio sample rate.
@ VISUAL_RATE
Nodes that process at the visual frame rate.
std::shared_ptr< MayaFlux::Kakshya::SoundFileContainer > load_audio_file(const std::string &filepath)
Loads an audio file into a SoundFileContainer with automatic format detection.
Creator vega
Global Creator instance for creating nodes, buffers, and containers.
void register_node(const std::shared_ptr< Nodes::Node > &node, const Nodes::ProcessingToken &token, uint32_t channel)
void register_network(const std::shared_ptr< Nodes::NodeNetwork > &network, const CreationContext &ctx)
MAYAFLUX_API Nodes::ProcessingToken get_node_token(Domain domain)
Extracts node processing token from domain.
void register_buffer(const std::shared_ptr< Buffers::Buffer > &buffer, const CreationContext &ctx)
void register_node_network(const std::shared_ptr< Nodes::NodeNetwork > &network, const Nodes::ProcessingToken &token)
Registers a node network with the default engine's node graph manager.
std::shared_ptr< Nodes::Node > operator|(const std::shared_ptr< Nodes::Node > &node, Domain d)
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.
static std::vector< std::shared_ptr< Buffers::ContainerBuffer > > s_last_created_container_buffers
std::shared_ptr< Buffers::TextureBuffer > load_image_file(const std::string &filepath)
Loads an image file into a TextureBuffer.
void register_audio_buffer(const std::shared_ptr< Buffers::AudioBuffer > &buffer, uint32_t channel)
Registers an AudioBuffer with the default engine's buffer manager.
std::vector< std::shared_ptr< Buffers::ContainerBuffer > > get_last_created_container_buffers()
Retrieves the last created container buffers from the Creator.
void register_container(const std::shared_ptr< Kakshya::SoundFileContainer > &container, const Domain &domain)
Domain
Unified domain enum combining all three ProcessingToken subsystems.
@ AUDIO
Standard real-time audio processing domain.
std::vector< std::shared_ptr< Buffers::ContainerBuffer > > hook_sound_container_to_buffers(const std::shared_ptr< MayaFlux::Kakshya::SoundFileContainer > &container)
Connects a SoundFileContainer to the buffer system for immediate playback.
void register_graphics_buffer(const std::shared_ptr< Buffers::VKBuffer > &buffer, Buffers::ProcessingToken token)
Registers a VKBuffer with the default engine's buffer manager.
MAYAFLUX_API Buffers::ProcessingToken get_buffer_token(Domain domain)
Extracts buffer processing token from domain.
Main namespace for the Maya Flux audio engine.
std::optional< uint32_t > channel
std::optional< std::vector< uint32_t > > channels
std::optional< Domain > domain