72{
73 try {
74 Expects(message.
value <= 0x7F && message.
value >= 0);
76 ProcessResult ret_val {false, false, 0, 0};
78 case 6:
79 {
81 if (i_ref.ready_flags_ >= 0b11) {
82 ret_val.is_nrpn = true;
83 i_ref.value_msb_ = message.
value & 0x7F;
84 i_ref.ready_flags_ |= 0b100;
85 if (i_ref.ready_flags_ == 0b1111) {
86 ret_val.is_ready = true;
87 ret_val.control = (i_ref.control_msb_ << 7) + i_ref.control_lsb_;
88 ret_val.value = (i_ref.value_msb_ << 7) + i_ref.value_lsb_;
90 }
91 }
92 }
93 return ret_val;
94 case 38:
95 {
97 if (i_ref.ready_flags_ >= 0b11) {
98 ret_val.is_nrpn = true;
99 i_ref.value_lsb_ = message.
value & 0x7F;
100 i_ref.ready_flags_ |= 0b1000;
101 if (i_ref.ready_flags_ == 0b1111) {
102 ret_val.is_ready = true;
103 ret_val.control = (i_ref.control_msb_ << 7) + i_ref.control_lsb_;
104 ret_val.value = (i_ref.value_msb_ << 7) + i_ref.value_lsb_;
106 }
107 }
108 }
109 return ret_val;
110 case 98:
111 ret_val.is_nrpn = true;
112 {
114 i_ref.control_lsb_ = message.
value & 0x7F;
115 i_ref.ready_flags_ |= 0b10;
116 }
117 return ret_val;
118 case 99:
119 ret_val.is_nrpn = true;
120 {
122 i_ref.control_msb_ = message.
value & 0x7F;
123 i_ref.ready_flags_ |= 0b1;
124 }
125 return ret_val;
126 default:
127
128 return ret_val;
129 }
130 }
131 catch (const std::exception& e) {
133 throw;
134 }
135}
void Clear(int channel) noexcept
Definition MidiUtilities.h:221
void ExceptionResponse(gsl::czstring id, gsl::czstring fu, const std::exception &e) noexcept
int control_number
Definition MidiUtilities.h:126
int channel
Definition MidiUtilities.h:125
int value
Definition MidiUtilities.h:127