VOGONS


First post, by llm

User metadata
Rank Member
Rank
Member
static inline void send_control_or_mode_change_midi_msg(uint8_t channel_, uint8_t controller_nr_, uint8_t controller_value_)
{
//(channel_ <= 15)
//(controller_nr_ <= 119) ==> Control change
//(controller_nr_ > 119) ==> Channel mode message
send_midi_msg3(0xB0u + BITS4(channel_), BITS7(controller_nr_), BITS7(controller_value_));
}

these are hardcoded calls in the game that im reversing - im trying to figure out what the controller-nrs are and what the values or value-ranges are allowed

https://www.midi.org/specifications-old/item/ … of-midi-message
https://www.midi.org/specifications-old/item/ … es-data-bytes-2
https://nickfever.com/Music/midi-cc-list

send_control_or_mode_change_midi_msg(channel_, 0x7B /*123*/, 0);  // Channel mode message --> All Notes Off?
send_control_or_mode_change_midi_msg(channel_, 0x79 /*121*/, 0); // Channel mode message --> Reset All Controllers?
send_control_or_mode_change_midi_msg(channel_, 0x07, velocity); // Control change --> Channel Volume (formerly Main Volume)?
send_control_or_mode_change_midi_msg(channel_, 0x0A, velocity); // Control change --> Pan?
send_control_or_mode_change_midi_msg(channel_, 0x01, velocity); // Control change --> Modulation Wheel or Lever?
Last edited by llm on 2021-07-12, 08:44. Edited 1 time in total.

Reply 1 of 3, by sergm

User metadata
Rank Oldbie
Rank
Oldbie
llm wrote on 2021-07-12, 07:26:

these are hardcoded calls in the game that im reversing - im trying to figure out what the controller-nrs are and what the values or value-ranges are allowed

If you are interested in details of the MT-32 MIDI implementation, then the standard MIDI specs aren't particularly useful.
I'd recommend to have a look at MIDI IMPLEMENTATION and MIDI IMPLEMENTATION CHART sections of the MT-32 manual that provide interesting information. Another source of knowledge might be our HLE in munt. For example, implemented MIDI messages can be found at
Synth::playMsgOnPart 😉