MayaFlux 0.4.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 375 of file InputManager.cpp.

376{
377 if (binding.backend != value.source_type) {
378 return false;
379 }
380
381 if (binding.device_id != 0 && binding.device_id != value.device_id) {
382 return false;
383 }
384
385 switch (binding.backend) {
386 case InputType::MIDI:
387 if (value.type == InputValue::Type::MIDI) {
388 const auto& midi = value.as_midi();
389
390 if (binding.midi_channel && *binding.midi_channel != midi.channel()) {
391 return false;
392 }
393
394 if (binding.midi_message_type && *binding.midi_message_type != midi.type()) {
395 return false;
396 }
397 if (binding.midi_cc_number && midi.type() == 0xB0) {
398 if (*binding.midi_cc_number != midi.data1) {
399 return false;
400 }
401 }
402 }
403 break;
404
405 case InputType::OSC:
406 if (value.type == InputValue::Type::OSC && binding.osc_address_pattern) {
407 const auto& osc = value.as_osc();
408 if (!osc.address.starts_with(*binding.osc_address_pattern)) {
409 return false;
410 }
411 }
412 break;
413
414 default:
415 // HID, Serial: no additional filters beyond device_id
416 break;
417 }
418
419 return true;
420}
@ 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: