MCPcopy Create free account
hub / github.com/TheForceEngine/TheForceEngine / ImMidiCommand

Function ImMidiCommand

TheForceEngine/TFE_Jedi/IMuse/imuse.cpp:2117–2181  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

2115 }
2116
2117 void ImMidiCommand(ImMidiPlayer* player, s32 channelIndex, s32 midiCmd, s32 value)
2118 {
2119 ImMidiOutChannel* channel = &player->channels[channelIndex];
2120
2121 if (midiCmd == MID_MODULATIONWHEEL_MSB)
2122 {
2123 channel->modulation = value;
2124 if (channel->data)
2125 {
2126 ImMidiChannelSetModulation(channel->data, value);
2127 }
2128 }
2129 else if (midiCmd == MID_VOLUME_MSB)
2130 {
2131 channel->partVolume = value;
2132 ImHandleChannelVolumeChange(player, channel);
2133 }
2134 else if (midiCmd == MID_PAN_MSB)
2135 {
2136 channel->partPan = value;
2137 if (channel->data)
2138 {
2139 s32 pan = clamp(value + player->pan - imPanCenter, 0, imPanMax);
2140 ImMidiChannelSetPan(channel->data, pan);
2141 }
2142 }
2143 else if (midiCmd == MID_GPC1_MSB)
2144 {
2145 if (value < 12)
2146 {
2147 //channel->outChannelCount = value;
2148 ImMidiPitchBend(player, channelIndex, 0, imPanCenter);
2149 }
2150 }
2151 else if (midiCmd == MID_GPC2_MSB)
2152 {
2153 channel->partNoteReq = value;
2154 if (channel->data)
2155 {
2156 ImMidiChannelSetPartNoteReq(channel->data, value);
2157 }
2158 }
2159 else if (midiCmd == MID_GPC3_MSB)
2160 {
2161 channel->partPriority = value;
2162 ImHandleChannelPriorityChange(player, channel);
2163 ImMidiSetupParts();
2164 }
2165 else if (midiCmd == MID_SUSTAIN_SWITCH)
2166 {
2167 channel->sustain = value;
2168 if (channel->data)
2169 {
2170 ImSetChannelSustain(channel->data, value);
2171 }
2172 }
2173 else if (midiCmd == MID_ALL_NOTES_OFF)
2174 {

Callers 2

ImJumpMidiInternalFunction · 0.85
ImMidiStopAllNotesFunction · 0.85

Calls 10

clampFunction · 0.85
ImMidiChannelSetPanFunction · 0.85
ImMidiPitchBendFunction · 0.85
ImMidiSetupPartsFunction · 0.85
ImSetChannelSustainFunction · 0.85
ImFreeMidiChannelFunction · 0.85

Tested by

no test coverage detected