84 |
} |
} |
85 |
|
|
86 |
void MidiInputPort::DispatchNoteOn(uint8_t Key, uint8_t Velocity, uint MidiChannel) { |
void MidiInputPort::DispatchNoteOn(uint8_t Key, uint8_t Velocity, uint MidiChannel) { |
87 |
std::set<Engine*>::iterator engineiter = MidiChannelMap[MidiChannel].begin(); |
// dispatch event for engines listening to the same MIDI channel |
88 |
std::set<Engine*>::iterator end = MidiChannelMap[MidiChannel].end(); |
{ |
89 |
for (; engineiter != end; engineiter++) (*engineiter)->SendNoteOn(Key, Velocity); |
std::set<Engine*>::iterator engineiter = MidiChannelMap[MidiChannel].begin(); |
90 |
|
std::set<Engine*>::iterator end = MidiChannelMap[MidiChannel].end(); |
91 |
|
for (; engineiter != end; engineiter++) (*engineiter)->SendNoteOn(Key, Velocity); |
92 |
|
} |
93 |
|
// dispatch event for engines listening to ALL MIDI channels |
94 |
|
{ |
95 |
|
std::set<Engine*>::iterator engineiter = MidiChannelMap[midi_chan_all].begin(); |
96 |
|
std::set<Engine*>::iterator end = MidiChannelMap[midi_chan_all].end(); |
97 |
|
for (; engineiter != end; engineiter++) (*engineiter)->SendNoteOn(Key, Velocity); |
98 |
|
} |
99 |
} |
} |
100 |
|
|
101 |
void MidiInputPort::DispatchNoteOff(uint8_t Key, uint8_t Velocity, uint MidiChannel) { |
void MidiInputPort::DispatchNoteOff(uint8_t Key, uint8_t Velocity, uint MidiChannel) { |
102 |
std::set<Engine*>::iterator engineiter = MidiChannelMap[MidiChannel].begin(); |
// dispatch event for engines listening to the same MIDI channel |
103 |
std::set<Engine*>::iterator end = MidiChannelMap[MidiChannel].end(); |
{ |
104 |
for (; engineiter != end; engineiter++) (*engineiter)->SendNoteOff(Key, Velocity); |
std::set<Engine*>::iterator engineiter = MidiChannelMap[MidiChannel].begin(); |
105 |
|
std::set<Engine*>::iterator end = MidiChannelMap[MidiChannel].end(); |
106 |
|
for (; engineiter != end; engineiter++) (*engineiter)->SendNoteOff(Key, Velocity); |
107 |
|
} |
108 |
|
// dispatch event for engines listening to ALL MIDI channels |
109 |
|
{ |
110 |
|
std::set<Engine*>::iterator engineiter = MidiChannelMap[midi_chan_all].begin(); |
111 |
|
std::set<Engine*>::iterator end = MidiChannelMap[midi_chan_all].end(); |
112 |
|
for (; engineiter != end; engineiter++) (*engineiter)->SendNoteOff(Key, Velocity); |
113 |
|
} |
114 |
} |
} |
115 |
|
|
116 |
void MidiInputPort::DispatchPitchbend(int Pitch, uint MidiChannel) { |
void MidiInputPort::DispatchPitchbend(int Pitch, uint MidiChannel) { |
117 |
std::set<Engine*>::iterator engineiter = MidiChannelMap[MidiChannel].begin(); |
// dispatch event for engines listening to the same MIDI channel |
118 |
std::set<Engine*>::iterator end = MidiChannelMap[MidiChannel].end(); |
{ |
119 |
for (; engineiter != end; engineiter++) (*engineiter)->SendPitchbend(Pitch); |
std::set<Engine*>::iterator engineiter = MidiChannelMap[MidiChannel].begin(); |
120 |
|
std::set<Engine*>::iterator end = MidiChannelMap[MidiChannel].end(); |
121 |
|
for (; engineiter != end; engineiter++) (*engineiter)->SendPitchbend(Pitch); |
122 |
|
} |
123 |
|
// dispatch event for engines listening to ALL MIDI channels |
124 |
|
{ |
125 |
|
std::set<Engine*>::iterator engineiter = MidiChannelMap[midi_chan_all].begin(); |
126 |
|
std::set<Engine*>::iterator end = MidiChannelMap[midi_chan_all].end(); |
127 |
|
for (; engineiter != end; engineiter++) (*engineiter)->SendPitchbend(Pitch); |
128 |
|
} |
129 |
} |
} |
130 |
|
|
131 |
void MidiInputPort::DispatchControlChange(uint8_t Controller, uint8_t Value, uint MidiChannel) { |
void MidiInputPort::DispatchControlChange(uint8_t Controller, uint8_t Value, uint MidiChannel) { |
132 |
std::set<Engine*>::iterator engineiter = MidiChannelMap[MidiChannel].begin(); |
// dispatch event for engines listening to the same MIDI channel |
133 |
std::set<Engine*>::iterator end = MidiChannelMap[MidiChannel].end(); |
{ |
134 |
for (; engineiter != end; engineiter++) (*engineiter)->SendControlChange(Controller, Value); |
std::set<Engine*>::iterator engineiter = MidiChannelMap[MidiChannel].begin(); |
135 |
|
std::set<Engine*>::iterator end = MidiChannelMap[MidiChannel].end(); |
136 |
|
for (; engineiter != end; engineiter++) (*engineiter)->SendControlChange(Controller, Value); |
137 |
|
} |
138 |
|
// dispatch event for engines listening to ALL MIDI channels |
139 |
|
{ |
140 |
|
std::set<Engine*>::iterator engineiter = MidiChannelMap[midi_chan_all].begin(); |
141 |
|
std::set<Engine*>::iterator end = MidiChannelMap[midi_chan_all].end(); |
142 |
|
for (; engineiter != end; engineiter++) (*engineiter)->SendControlChange(Controller, Value); |
143 |
|
} |
144 |
|
} |
145 |
|
|
146 |
|
void MidiInputPort::DispatchSysex(void* pData, uint Size) { |
147 |
|
// dispatch event for engines listening to the same MIDI channel |
148 |
|
{ |
149 |
|
for (uint MidiChannel = 0; MidiChannel <= 16; MidiChannel++) { |
150 |
|
std::set<Engine*>::iterator engineiter = MidiChannelMap[MidiChannel].begin(); |
151 |
|
std::set<Engine*>::iterator end = MidiChannelMap[MidiChannel].end(); |
152 |
|
for (; engineiter != end; engineiter++) (*engineiter)->SendSysex(pData, Size); |
153 |
|
} |
154 |
|
} |
155 |
|
// dispatch event for engines listening to ALL MIDI channels |
156 |
|
{ |
157 |
|
for (uint MidiChannel = 0; MidiChannel <= 16; MidiChannel++) { |
158 |
|
std::set<Engine*>::iterator engineiter = MidiChannelMap[midi_chan_all].begin(); |
159 |
|
std::set<Engine*>::iterator end = MidiChannelMap[midi_chan_all].end(); |
160 |
|
for (; engineiter != end; engineiter++) (*engineiter)->SendSysex(pData, Size); |
161 |
|
} |
162 |
|
} |
163 |
} |
} |
164 |
|
|
165 |
void MidiInputPort::Connect(Engine* pEngine, midi_chan_t MidiChannel) { |
void MidiInputPort::Connect(Engine* pEngine, midi_chan_t MidiChannel) { |