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

◆ matches_binding()

bool MayaFlux::Core::InputManager::matches_binding ( const InputValue value,
const InputBinding binding 
) const
private

Definition at line 368 of file InputManager.cpp.

369{
370 if (binding.backend != value.source_type) {
371 return false;
372 }
373
374 if (binding.device_id != 0 && binding.device_id != value.device_id) {
375 return false;
376 }
377
378 switch (binding.backend) {
379 case InputType::MIDI:
380 if (value.type == InputValue::Type::MIDI) {
381 const auto& midi = value.as_midi();
382
383 if (binding.midi_channel && *binding.midi_channel != midi.channel()) {
384 return false;
385 }
386
387 if (binding.midi_message_type && *binding.midi_message_type != midi.type()) {
388 return false;
389 }
390 if (binding.midi_cc_number && midi.type() == 0xB0) {
391 if (*binding.midi_cc_number != midi.data1) {
392 return false;
393 }
394 }
395 }
396 break;
397
398 case InputType::OSC:
399 if (value.type == InputValue::Type::OSC && binding.osc_address_pattern) {
400 const auto& osc = value.as_osc();
401 if (!osc.address.starts_with(*binding.osc_address_pattern)) {
402 return false;
403 }
404 }
405 break;
406
407 default:
408 // HID, Serial: no additional filters beyond device_id
409 break;
410 }
411
412 return true;
413}
@ OSC
Open Sound Control (network)
@ MIDI
MIDI controllers and instruments.
@ OSC
Structured OSC message.
@ MIDI
Structured MIDI message.

References MayaFlux::Core::InputValue::as_midi(), MayaFlux::Core::InputValue::as_osc(), MayaFlux::Core::InputBinding::backend, MayaFlux::Core::InputBinding::device_id, MayaFlux::Core::InputValue::device_id, MayaFlux::Core::MIDI, MayaFlux::Core::InputValue::MIDI, MayaFlux::Core::InputBinding::midi_cc_number, MayaFlux::Core::InputBinding::midi_channel, MayaFlux::Core::InputBinding::midi_message_type, MayaFlux::Core::OSC, MayaFlux::Core::InputValue::OSC, MayaFlux::Core::InputBinding::osc_address_pattern, MayaFlux::Core::InputValue::source_type, and MayaFlux::Core::InputValue::type.

Referenced by dispatch_to_nodes().

+ Here is the call graph for this function:
+ Here is the caller graph for this function: