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

◆ generate()

bool MayaFlux::Buffers::LogicProcessor::generate ( size_t  num_samples,
const std::vector< double > &  input_data 
)

Generates discrete logic data from input without modifying any buffer.

Parameters
num_samplesNumber of samples to generate
input_dataInput data to process through logic node
Returns
Whether generation was successful

This method allows for offline processing of data through the logic system, useful for analysis, preprocessing, or generating control signals independently of the main signal path.

Definition at line 22 of file LogicProcessor.cpp.

23{
24 if (!m_logic || input_data.empty()) {
25 return false;
26 }
27
28 if (m_pending_logic) {
30 m_pending_logic.reset();
31 m_use_internal = true;
32 }
33
34 m_logic_data.resize(num_samples, 0);
35
36 std::vector<double> data = input_data;
37 if (data.size() < num_samples) {
38 data.resize(num_samples, 0.0);
39 }
40
42 m_logic->reset();
43 }
44
45 const auto& state = m_logic->m_state.load();
46
47 if (state == Utils::NodeState::INACTIVE) {
48 for (size_t i = 0; i < data.size(); ++i) {
49 m_logic_data[i] = m_logic->process_sample(data[i]);
50 }
51 } else {
52 m_logic->save_state();
53 for (size_t i = 0; i < data.size(); ++i) {
54 m_logic_data[i] = m_logic->process_sample(data[i]);
55 }
56 m_logic->restore_state();
57 }
58
60 return true;
61}
std::vector< double > m_logic_data
Stored logic processing results.
bool m_has_generated_data
Whether logic data has been generated.
std::shared_ptr< Nodes::Generator::Logic > m_logic
Logic node for processing.
std::shared_ptr< Nodes::Generator::Logic > m_pending_logic
Pending logic node update.
bool m_use_internal
Whether to use internal logic node.
bool m_reset_between_buffers
Whether to reset logic between buffers.
@ INACTIVE
Engine is not processing this node.
Definition Utils.hpp:29

References MayaFlux::Utils::INACTIVE, m_has_generated_data, m_logic, m_logic_data, m_pending_logic, m_reset_between_buffers, and m_use_internal.

Referenced by processing_function().

+ Here is the caller graph for this function: