MayaFlux 1.0.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 384 of file InputManager.cpp.

385{
386 if (binding.backend != value.source_type) {
387 return false;
388 }
389
390 if (binding.device_id != 0 && binding.device_id != value.device_id) {
391 return false;
392 }
393
394 switch (binding.backend) {
395 case InputType::MIDI:
396 if (value.type == InputValue::Type::MIDI) {
397 const auto& midi = value.as_midi();
398
399 if (binding.midi_channel && *binding.midi_channel != midi.channel()) {
400 return false;
401 }
402
403 if (binding.midi_message_type && *binding.midi_message_type != midi.type()) {
404 return false;
405 }
406 if (binding.midi_cc_number && midi.type() == 0xB0) {
407 if (*binding.midi_cc_number != midi.data1) {
408 return false;
409 }
410 }
411 }
412 break;
413
414 case InputType::OSC:
415 if (value.type == InputValue::Type::OSC && binding.osc_address_pattern) {
416 const auto& osc = value.as_osc();
417 if (!osc.address.starts_with(*binding.osc_address_pattern)) {
418 return false;
419 }
420 }
421 break;
422
423 default:
424 // HID, Serial: no additional filters beyond device_id
425 break;
426 }
427
428 return true;
429}
glm::vec3 value
@ OSC
Open Sound Control (network)
@ MIDI
MIDI controllers and instruments.
@ OSC
Structured OSC message.
@ MIDI
Structured MIDI message.

References MayaFlux::Core::InputBinding::backend, MayaFlux::Core::InputBinding::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, and value.

Referenced by dispatch_to_nodes().

+ Here is the caller graph for this function: