27 }
else if (ctx.
channels.has_value()) {
28 for (uint32_t ch : ctx.
channels.value()) {
31 }
else if (node->get_channel_mask() != 0) {
32 for (uint32_t ch = 0; ch < 32; ++ch) {
33 if (node->get_channel_mask() & (1 << ch)) {
52 "Registering audio network in AUDIO_RATE domain without AUDIO_SINK or AUDIO_COMPUTE mode. Forcing AUDIO_SINK mode.");
56 network->add_channel_usage(ctx.
channel.value());
57 }
else if (ctx.
channels.has_value()) {
58 for (uint32_t ch : ctx.
channels.value()) {
59 network->add_channel_usage(ch);
65 "Registering visual network in VISUAL_RATE domain without GRAPHICS_BIND output mode. Forcing GRAPHICS_BIND mode.");
76 if (
auto audio_buffer = std::dynamic_pointer_cast<Buffers::AudioBuffer>(buffer)) {
79 }
else if (ctx.
channels.has_value()) {
85 if (
auto vk_buffer = std::dynamic_pointer_cast<Buffers::VKBuffer>(buffer)) {
93 if (
auto sound_container = std::dynamic_pointer_cast<Kakshya::SoundFileContainer>(container)) {
95 (void)
get_io_manager()->hook_audio_container_to_buffers(sound_container);
105std::shared_ptr<Nodes::Node>
operator|(
const std::shared_ptr<Nodes::Node>& node,
Domain d)
112std::shared_ptr<Nodes::Network::NodeNetwork>
operator|(
const std::shared_ptr<Nodes::Network::NodeNetwork>& network,
Domain d)
119std::shared_ptr<Buffers::Buffer>
operator|(
const std::shared_ptr<Buffers::Buffer>& buffer,
Domain d)
135 auto node = std::make_shared<Nodes::Input::HIDNode>(config);
144 auto node = std::make_shared<Nodes::Input::MIDINode>(config);
160 "Input type {} not yet implemented",
161 static_cast<int>(binding.
backend));
#define MF_ERROR(comp, ctx,...)
#define MF_WARN(comp, ctx,...)
Audio file loading and container management API.
std::shared_ptr< Nodes::Input::InputNode > read_input(const Nodes::Input::InputConfig &config, const Core::InputBinding &binding)
Create and register generic input node.
std::shared_ptr< Nodes::Input::HIDNode > read_hid(const Nodes::Input::HIDConfig &config, const Core::InputBinding &binding)
Create and register HID input node.
std::shared_ptr< Buffers::TextureBuffer > load_buffer(const std::string &filepath)
std::shared_ptr< Kakshya::SoundFileContainer > load_sound_container(const std::string &filepath)
std::shared_ptr< Nodes::Input::MIDINode > read_midi(const Nodes::Input::MIDIConfig &config, const Core::InputBinding &binding)
Create and register MIDI input node.
@ HID
Generic HID devices (game controllers, custom hardware)
@ MIDI
MIDI controllers and instruments.
@ Init
Engine/subsystem initialization.
@ API
MayaFlux/API Wrapper and convenience functions.
@ GRAPHICS_BIND
State available for visualization (read-only)
@ AUDIO_COMPUTE
processed each cycle but not sent to output
@ AUDIO_SINK
Aggregated audio samples sent to output.
@ AUDIO_RATE
Nodes that process at the audio sample rate.
@ VISUAL_RATE
Nodes that process at the visual frame rate.
void register_input_node(const std::shared_ptr< Nodes::Input::InputNode > &node, const Core::InputBinding &binding)
Register an input node with specified binding.
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)
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::Network::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.
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 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.
void register_graphics_buffer(const std::shared_ptr< Buffers::VKBuffer > &buffer, Buffers::ProcessingToken token)
Registers a VKBuffer with the default engine's buffer manager.
std::shared_ptr< IO::IOManager > get_io_manager()
Retrieves the global IOManager instance for file loading and buffer management.
void register_network(const std::shared_ptr< Nodes::Network::NodeNetwork > &network, const CreationContext &ctx)
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