MayaFlux 0.3.0
Digital-First Multimedia Processing Framework
Loading...
Searching...
No Matches

◆ set_operator()

void MayaFlux::Nodes::Generator::Logic::set_operator ( LogicOperator  op,
bool  create_default_direct_function = false 
)

Sets the boolean operation to perform.

Parameters
opBoolean operator to apply
create_default_direct_functionWhether to create a default direct function if none is set

Configures the node to use one of the standard boolean operations (AND, OR, XOR, etc.) for evaluating inputs.

Definition at line 343 of file Logic.cpp.

344{
345 m_operator = op;
346
347 if (create_default_direct_function) {
348 switch (op) {
350 m_direct_function = [this](double input) {
351 bool current = input > m_threshold;
352 bool previous = m_last_output > 0.5;
353 return current && previous;
354 };
355 break;
356
358 m_direct_function = [this](double input) {
359 bool current = input > m_threshold;
360 bool previous = m_last_output > 0.5;
361 return current || previous;
362 };
363 break;
364
366 m_direct_function = [this](double input) {
367 bool current = input > m_threshold;
368 bool previous = m_last_output > 0.5;
369 return current != previous;
370 };
371 break;
372
374 m_direct_function = [this](double input) {
375 return !(input > m_threshold);
376 };
377 break;
378
380 m_direct_function = [this](double input) {
381 bool current = input > m_threshold;
382 bool previous = m_last_output > 0.5;
383 return !(current && previous);
384 };
385 break;
386
388 m_direct_function = [this](double input) {
389 bool current = input > m_threshold;
390 bool previous = m_last_output > 0.5;
391 return !(current || previous);
392 };
393 break;
394
396 m_direct_function = [this](double input) {
397 return input > m_threshold;
398 };
399 break;
400
402 m_direct_function = [this](double input) {
403 if (input > m_high_threshold) {
404 m_hysteresis_state = true;
405 } else if (input < m_low_threshold) {
406 m_hysteresis_state = false;
407 }
408 return m_hysteresis_state;
409 };
410 break;
411
413 // Edge detection is handled in process_sample
415 // Custom function should be set directly
416 break;
417 }
418 }
419}
DirectFunction m_direct_function
Function for direct mode.
Definition Logic.hpp:582
double m_threshold
Threshold for boolean conversion.
Definition Logic.hpp:590
double m_high_threshold
High threshold for hysteresis.
Definition Logic.hpp:592
LogicOperator m_operator
Current logic operator.
Definition Logic.hpp:581
double m_low_threshold
Low threshold for hysteresis.
Definition Logic.hpp:591
bool m_hysteresis_state
State for hysteresis operator.
Definition Logic.hpp:595
double m_last_output
The most recent sample value generated by this oscillator.
Definition Node.hpp:377
@ NOT
Logical NOT - inverts the input.
@ NOR
Logical NOR - inverted OR operation.
@ OR
Logical OR - true when any input is true.
@ NAND
Logical NAND - inverted AND operation.
@ THRESHOLD
Binary quantization - true when input exceeds threshold.
@ AND
Logical AND - true only when all inputs are true.
@ EDGE
Transition detector - identifies state changes.
@ HYSTERESIS
Threshold with memory - prevents rapid oscillation at boundary.
@ CUSTOM
User-defined boolean function.
@ XOR
Logical XOR - true when odd number of inputs are true.

References MayaFlux::Nodes::Generator::AND, MayaFlux::Nodes::Generator::CUSTOM, MayaFlux::Nodes::Generator::EDGE, MayaFlux::Nodes::Generator::HYSTERESIS, m_direct_function, m_high_threshold, m_hysteresis_state, MayaFlux::Nodes::Node::m_last_output, m_low_threshold, m_operator, m_threshold, MayaFlux::Nodes::Generator::NAND, MayaFlux::Nodes::Generator::NOR, MayaFlux::Nodes::Generator::NOT, MayaFlux::Nodes::Generator::OR, MayaFlux::Nodes::Generator::THRESHOLD, and MayaFlux::Nodes::Generator::XOR.