MayaFlux 0.4.0
Digital-First Multimedia Processing Framework
Loading...
Searching...
No Matches
OSCNode.cpp
Go to the documentation of this file.
1#include "OSCNode.hpp"
2
4
6 : m_config(std::move(config))
7{
8}
9
11{
12 if (value.type != Core::InputValue::Type::OSC) {
13 return m_last_output;
14 }
15
16 const auto& osc = value.as_osc();
18
19 if (m_config.custom_extractor && !osc.arguments.empty()) {
20 size_t idx = std::min(m_config.argument_index, osc.arguments.size() - 1);
21 return m_config.custom_extractor(osc.arguments[idx]);
22 }
23
24 if (osc.arguments.empty()) {
25 return m_last_output;
26 }
27
28 if (m_config.argument_index >= osc.arguments.size()) {
29 return m_last_output;
30 }
31
32 double raw = static_cast<double>(
33 osc.get_float(m_config.argument_index).value_or(static_cast<float>(osc.get_int(m_config.argument_index).value_or(0))));
34
37 raw = std::clamp(raw, 0.0, 1.0);
38 }
39
40 return raw;
41}
42
50
52{
53 for (const auto& cb : m_message_callbacks) {
54 cb(osc.address, osc.arguments);
55 }
56}
57
58} // namespace MayaFlux::Nodes::Input
void notify_tick(double value) override
Notify callbacks (minimal for InputNode)
std::optional< Core::InputValue::OSCMessage > m_last_osc_message
Definition OSCNode.hpp:143
OSCNode(OSCConfig config={})
Definition OSCNode.cpp:5
void fire_osc_callbacks(const Core::InputValue::OSCMessage &osc)
Definition OSCNode.cpp:51
std::vector< MessageCallback > m_message_callbacks
Definition OSCNode.hpp:145
double extract_value(const Core::InputValue &value) override
Extract a scalar value from an InputValue.
Definition OSCNode.cpp:10
void notify_tick(double value) override
Notify callbacks (minimal for InputNode)
Definition OSCNode.cpp:43
double m_last_output
The most recent sample value generated by this oscillator.
Definition Node.hpp:397
std::vector< OSCArg > arguments
Typed arguments.
std::string address
OSC address pattern.
const OSCMessage & as_osc() const
@ OSC
Structured OSC message.
Generic input value container.
double range_min
Expected input minimum (for normalization)
Definition OSCNode.hpp:19
bool normalize
Map [range_min, range_max] to [0.0, 1.0].
Definition OSCNode.hpp:21
size_t argument_index
Which argument to extract (0-based)
Definition OSCNode.hpp:17
double range_max
Expected input maximum (for normalization)
Definition OSCNode.hpp:20
std::function< double(const Core::InputValue::OSCArg &)> custom_extractor
Definition OSCNode.hpp:23
Configuration for OSC input node argument extraction.
Definition OSCNode.hpp:16