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 371 of file InputManager.cpp.

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