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