19 class VideoStreamContainer;
23 using TextureResolver = std::function<std::shared_ptr<Core::VKImage>(
const std::string& path)>;
57MAYAFLUX_API
void register_node(
const std::shared_ptr<Nodes::Node>& node,
const CreationContext& ctx);
58MAYAFLUX_API
void register_network(
const std::shared_ptr<Nodes::Network::NodeNetwork>&
network,
const CreationContext& ctx);
59MAYAFLUX_API
void register_buffer(
const std::shared_ptr<Buffers::Buffer>&
buffer,
const CreationContext& ctx);
60MAYAFLUX_API
void register_container(
const std::shared_ptr<Kakshya::SoundFileContainer>& container,
const Domain& domain);
61MAYAFLUX_API
void register_container(
const std::shared_ptr<Kakshya::VideoStreamContainer>& container,
const Domain& domain);
82 return {
value, std::vector<uint32_t>(chs) };
94 explicit MeshGroupHandle(std::vector<std::shared_ptr<Buffers::MeshBuffer>> buffers);
99 auto begin() {
return m_buffers.begin(); }
100 auto end() {
return m_buffers.end(); }
101 [[nodiscard]]
auto begin()
const {
return m_buffers.begin(); }
102 [[nodiscard]]
auto end()
const {
return m_buffers.end(); }
104 [[nodiscard]]
bool empty()
const {
return m_buffers.empty(); }
105 [[nodiscard]]
size_t size()
const {
return m_buffers.size(); }
107 std::shared_ptr<Buffers::MeshBuffer>&
operator[](
size_t i) {
return m_buffers[i]; }
110 std::vector<std::shared_ptr<Buffers::MeshBuffer>>
m_buffers;
158#include "Generated/CreatorDeclarations.inc"
160 auto read_audio(
const std::string& filepath) -> std::shared_ptr<Kakshya::SoundFileContainer>
162 auto container = load_sound_container(filepath);
167 auto read_audio() -> std::shared_ptr<Kakshya::SoundFileContainer>
176 int desired_channels = 4,
177 std::optional<Kakshya::Region> region = std::nullopt)
178 -> std::shared_ptr<Buffers::TextureBuffer>
180 auto buffer = load_image_buffer(filepath, desired_channels, std::move(region));
186 std::optional<Kakshya::Region> region = std::nullopt)
187 -> std::shared_ptr<Buffers::TextureBuffer>
206 const std::string& filepath,
207 std::optional<Kakshya::CompositeLayout> layout = std::nullopt)
208 -> std::shared_ptr<Kakshya::CompositeContainer>
210 auto container = load_composite_container(filepath, std::move(layout));
220 auto read_file() -> std::shared_ptr<Kakshya::CompositeContainer>
228 auto read_volume(
const std::string& filepath) -> std::shared_ptr<Buffers::VolumeGridBuffer>
230 auto buffer = load_volume_buffer(filepath);
254 const std::string& filepath,
256 -> std::shared_ptr<Nodes::Network::MeshNetwork>
258 auto network = load_mesh_network(filepath, std::move(resolver));
285 std::shared_ptr<Kakshya::CameraContainer> read_camera(
const IO::CameraConfig& config);
295 std::shared_ptr<Kakshya::CameraContainer> read_camera();
307 std::shared_ptr<Nodes::Input::HIDNode> read_hid(
317 std::shared_ptr<Nodes::Input::MIDINode> read_midi(
327 std::shared_ptr<Nodes::Input::OSCNode> read_osc(
337 std::shared_ptr<Nodes::Input::TabletNode> read_tablet(
347 std::shared_ptr<Nodes::Input::InputNode> read_input(
352 std::shared_ptr<Kakshya::SoundFileContainer> load_sound_container(
const std::string& filepath);
353 std::shared_ptr<Kakshya::CompositeContainer> load_composite_container(
354 const std::string& filepath,
355 std::optional<Kakshya::CompositeLayout> layout);
356 std::shared_ptr<Buffers::TextureBuffer> load_image_buffer(
357 const std::string& filepath,
int desired_channels,
358 std::optional<Kakshya::Region> region);
359 std::shared_ptr<Buffers::VolumeGridBuffer> load_volume_buffer(
const std::string& filepath);
360 std::vector<std::shared_ptr<Buffers::MeshBuffer>> load_mesh_buffers(
const std::string& filepath);
361 std::shared_ptr<Nodes::Network::MeshNetwork> load_mesh_network(
const std::string& filepath,
IO::TextureResolver resolver);
371 requires std::is_base_of_v<Nodes::Node, T>
374 register_node(std::static_pointer_cast<Nodes::Node>(obj), ctx);
379 requires std::is_base_of_v<Nodes::Network::NodeNetwork, T>
382 register_network(std::static_pointer_cast<Nodes::Network::NodeNetwork>(obj), ctx);
387 requires std::is_base_of_v<Buffers::Buffer, T>
394inline std::shared_ptr<Kakshya::SoundFileContainer>
operator|(
395 std::shared_ptr<Kakshya::SoundFileContainer> obj,
418 requires std::is_base_of_v<Kakshya::VideoStreamContainer, T>
482extern MAYAFLUX_API Creator
vega;
Core::GlobalNetworkConfig network
Dialog-backed loading and file-type helpers.
#define MF_LIVE_EXPOSE_AUTO(ptr)
Auto-expose variant that deduces the key prefix from the shared_ptr element type.
std::shared_ptr< NetworkGeometryBuffer > buffer
auto read_audio() -> std::shared_ptr< Kakshya::SoundFileContainer >
auto read_audio(const std::string &filepath) -> std::shared_ptr< Kakshya::SoundFileContainer >
Evolve evolve
Sets a system going from a config: state that persists, a rule that advances it every cycle,...
auto read_file() -> std::shared_ptr< Kakshya::CompositeContainer >
Choose a CSV or TSV file and load it as Composite data.
auto read_file(const std::string &filepath, std::optional< Kakshya::CompositeLayout > layout=std::nullopt) -> std::shared_ptr< Kakshya::CompositeContainer >
Load a supported Composite file into an owning container.
auto read_mesh_network(const std::string &filepath, IO::TextureResolver resolver=nullptr) -> std::shared_ptr< Nodes::Network::MeshNetwork >
auto read_image(const std::string &filepath, int desired_channels=4, std::optional< Kakshya::Region > region=std::nullopt) -> std::shared_ptr< Buffers::TextureBuffer >
auto read_volume(const std::string &filepath) -> std::shared_ptr< Buffers::VolumeGridBuffer >
auto read_mesh() -> MeshGroupHandle
auto read_mesh_network() -> std::shared_ptr< Nodes::Network::MeshNetwork >
auto read_mesh(const std::string &filepath) -> MeshGroupHandle
auto read_volume() -> std::shared_ptr< Buffers::VolumeGridBuffer >
auto read_image(int desired_channels=4, std::optional< Kakshya::Region > region=std::nullopt) -> std::shared_ptr< Buffers::TextureBuffer >
Mint mint
Builds a visible structure from a StructureConfig: resolves its source, constructs and registers what...
Sets a system going from a config: state that persists, a rule that advances it every cycle,...
std::vector< std::shared_ptr< Buffers::MeshBuffer > > m_buffers
std::shared_ptr< Buffers::MeshBuffer > & operator[](size_t i)
Turns a structural config into a registered and rendered object.
std::function< std::shared_ptr< Core::VKImage >(const std::string &)> TextureResolver
Callable that maps a raw material texture path to a GPU image.
@ Core
Core engine, backend, subsystems.
@ Kakshya
Containers[Signalsource, Stream, File], Regions, DataProcessors.
@ IO
Networking, file handling, streaming.
std::shared_ptr< Buffers::TextureBuffer > choose_image(int desired_channels, std::optional< Kakshya::Region > region)
Present a native open-file dialog filtered to image formats and load the chosen file via IOManager::l...
Creator vega
Global Creator instance.
void register_node(const std::shared_ptr< Nodes::Node > &node, const Nodes::ProcessingToken &token, uint32_t channel)
std::shared_ptr< Nodes::Network::MeshNetwork > choose_mesh_network(IO::TextureResolver resolver)
Present a native open-file dialog filtered to 3D model formats and load the chosen file as a MeshNetw...
void register_buffer(const std::shared_ptr< Buffers::Buffer > &buffer, const CreationContext &ctx)
std::vector< std::shared_ptr< Buffers::MeshBuffer > > choose_mesh()
Present a native open-file dialog filtered to 3D model formats and load the chosen file via IOManager...
std::shared_ptr< Kakshya::SoundFileContainer > choose_audio()
Present a native open-file dialog filtered to audio formats and load the chosen file via IOManager::l...
std::shared_ptr< Kakshya::CompositeContainer > choose_composite()
Choose a CSV or TSV file and load it as a CompositeContainer.
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.
@ GRAPHICS
Standard real-time graphics processing domain.
static constexpr DomainSpec Audio
Domain constant for Audio domain.
std::shared_ptr< Buffers::VolumeGridBuffer > choose_volume()
Present a native open-file dialog filtered to volume formats and load the chosen file via IOManager::...
static constexpr DomainSpec Graphics
Domain constant for Graphics domain.
void register_network(const std::shared_ptr< Nodes::Network::NodeNetwork > &network, const CreationContext &ctx)
std::shared_ptr< T > operator|(std::shared_ptr< T > obj, const CreationContext &ctx)
Main namespace for the Maya Flux audio engine.
CreationContext(Domain d)
CreationContext(std::vector< uint32_t > ch)
std::optional< uint32_t > channel
CreationContext(Domain d, std::vector< uint32_t > ch)
CreationContext(uint32_t ch)
CreationContext(Domain d, uint32_t ch)
std::optional< std::vector< uint32_t > > channels
CreationContext()=default
std::optional< Domain > domain
CreationContext operator[](uint32_t ch) const
Bind a single channel to this domain.
CreationContext operator[](std::initializer_list< uint32_t > chs) const
Bind multiple channels to this domain.
Thin domain wrapper that adds subscript channel-binding syntax.
Configuration for opening a camera device via FFmpeg.