commit 2311db7801418b13cef4bba0938ecd4c32932687
parent fcf2389a9d2904903ad6b917de4c886e19108994
Author: dsp56300 <dsp56300@users.noreply.github.com>
Date: Thu, 15 Jul 2021 03:43:36 +0200
multi page C controllers & dump definitions
Diffstat:
2 files changed, 119 insertions(+), 39 deletions(-)
diff --git a/source/virusLib/microcontroller.cpp b/source/virusLib/microcontroller.cpp
@@ -12,6 +12,10 @@ using namespace synthLib;
constexpr uint32_t g_sysexPresetHeaderSize = 9;
constexpr uint32_t g_singleRamBankCount = 2;
+constexpr uint8_t g_pageC_global[] = {45,63,64,65,66,67,68,69,70,85,86,87,90,91,92,93,94,95,96,97,98,99,105,106,110,111,112,113,114,115,116,117,118,120,121,122,123,124,125,126,127};
+constexpr uint8_t g_pageC_multi[] = {5,6,7,8,9,10,11,12,13,14,22,31,32,33,34,35,36,37,38,39,40,41,72,73,74,75,77,78};
+constexpr uint8_t g_pageC_multiPart[] = {31,32,33,34,35,36,37,38,39,40,41,72,73,74,75,77,78};
+
namespace virusLib
{
Microcontroller::Microcontroller(HDI08& _hdi08, ROMFile& _romFile) : m_hdi08(_hdi08), m_rom(_romFile), m_currentBanks({0}), m_currentSingles({0})
@@ -63,7 +67,7 @@ void Microcontroller::sendInitControlCommands()
sendControlCommand(GLOBAL_CHANNEL, 0x0); // Set global midi channel to 0
sendControlCommand(MIDI_CONTROL_LOW_PAGE, 0x1); // Enable midi CC to edit parameters on page A
sendControlCommand(MIDI_CONTROL_HIGH_PAGE, 0x1); // Enable poly pressure to edit parameters on page B
- sendControlCommand(CC_MASTER_VOLUME, 100); // Set master volume to 100
+ sendControlCommand(MASTER_VOLUME, 100); // Set master volume to 100
}
void Microcontroller::createDefaultState()
diff --git a/source/virusLib/microcontroller.h b/source/virusLib/microcontroller.h
@@ -35,44 +35,120 @@ public:
enum ControlCommand
{
- CC_DEVICE_ID = 0x5d, // 93
- CC_PART_ENABLE = 0x48, // 72
- CC_PART_MIDI_CHANNEL = 0x22, // 34
- CC_PART_OUTPUT_SELECT = 0x29, // 41
-
- CC_PART_MIDI_VOLUME_ENABLE = 0x49, // 73
- CC_PART_MIDI_VOLUME_INIT = 0x28, // 40
- CC_PART_VOLUME = 0x27, // 39
- CC_MASTER_VOLUME = 0x7f, // 127
-
- AUDITION = 0x01, // 01
- UNK1a = 0x1a, // 26
- UNK1b = 0x1b, // 27
- UNK1c = 0x1c, // 28
- UNK1d = 0x1d, // 29
- PART_BANK_SELECT = 0x1f, // 31 The change is executed once a program change is received
- PART_BANK_CHANGE = 0x20, // 32 The change is executed immediately
- PART_PROGRAM_CHANGE = 0x21, // 33
- SECOND_OUTPUT_SELECT = 0x2d, // 45
- UNK35 = 0x35, // 53
- UNK36 = 0x36, // 54
- UNK76 = 0x4c, // 76
- INPUT_THRU_LEVEL = 0x5a, // 90
- INPUT_BOOST = 0x5b, // 91
- MASTER_TUNE = 0x5c, // 92
- DEVICE_ID = 0x5d, // 93
- MIDI_CONTROL_LOW_PAGE = 0x5e, // 94
- MIDI_CONTROL_HIGH_PAGE = 0x5f, // 95
- MIDI_ARPEGGIATOR_SEND = 0x60, // 96
- MULTI_PROGRAM_CHANGE = 0x69, // 105
- MIDI_CLOCK_RX = 0x6a, // 106
- UNK_6d = 0x6d, // 109
- PLAY_MODE = 0x7a, // 122
- PART_NUMBER = 0x7b, // 123
- GLOBAL_CHANNEL = 0x7c, // 124
- LED_MODE = 0x7d, // 125
- LCD_CONTRAST = 0x7e, // 126
- PANEL_DESTINATION = 0x79, // 121
+ AUDITION = 01,
+
+ // Multi
+ MULTI_NAME_CHAR_0 = 5,
+ MULTI_NAME_CHAR_1 = 6,
+ MULTI_NAME_CHAR_2 = 7,
+ MULTI_NAME_CHAR_3 = 8,
+ MULTI_NAME_CHAR_4 = 9,
+ MULTI_NAME_CHAR_5 = 10,
+ MULTI_NAME_CHAR_6 = 11,
+ MULTI_NAME_CHAR_7 = 12,
+ MULTI_NAME_CHAR_8 = 13,
+ MULTI_NAME_CHAR_9 = 14,
+
+ MULTI_DELAY_OUTPUT_SELECT = 22,
+
+ UNK1a = 26,
+ UNK1b = 27,
+ UNK1c = 28,
+ UNK1d = 29,
+
+ // Multi parts
+ PART_BANK_SELECT = 31, // The change is executed once a program change is received
+ PART_BANK_CHANGE = 32, // The change is executed immediately
+ PART_PROGRAM_CHANGE = 33,
+ PART_MIDI_CHANNEL = 34,
+ PART_LOW_KEY = 35,
+ PART_HIGH_KEY = 36,
+ PART_TRANSPOSE = 37,
+ PART_DETUNE = 38,
+ PART_VOLUME = 39,
+ PART_MIDI_VOLUME_INIT = 40,
+ PART_OUTPUT_SELECT = 41,
+
+ SECOND_OUTPUT_SELECT = 45,
+
+ UNK35 = 53,
+ UNK36 = 54,
+
+ // Multi parts
+ PART_ENABLE = 72,
+ PART_MIDI_VOLUME_ENABLE = 73,
+ PART_HOLD_PEDAL_ENABLE = 74,
+ PART_KEYB_TO_MIDI = 75,
+ UNK76 = 76,
+ PART_NOTE_STEAL_PRIO = 77,
+ PART_PROG_CHANGE_ENABLE = 78,
+
+ INPUT_THRU_LEVEL = 90,
+ INPUT_BOOST = 91,
+ MASTER_TUNE = 92,
+ DEVICE_ID = 93,
+ MIDI_CONTROL_LOW_PAGE = 94,
+ MIDI_CONTROL_HIGH_PAGE = 95,
+ MIDI_ARPEGGIATOR_SEND = 96,
+ MULTI_PROGRAM_CHANGE = 105,
+ MIDI_CLOCK_RX = 106,
+ UNK6d = 109,
+ PLAY_MODE = 122,
+ PART_NUMBER = 123,
+ GLOBAL_CHANNEL = 124,
+ LED_MODE = 125,
+ LCD_CONTRAST = 126,
+ PANEL_DESTINATION = 121,
+ MASTER_VOLUME = 127
+ };
+
+ enum MultiDump
+ {
+ MD_NAME_CHAR_0 = 4,
+ MD_NAME_CHAR_1 = 5,
+ MD_NAME_CHAR_2 = 6,
+ MD_NAME_CHAR_3 = 7,
+ MD_NAME_CHAR_4 = 8,
+ MD_NAME_CHAR_5 = 9,
+ MD_NAME_CHAR_6 = 10,
+ MD_NAME_CHAR_7 = 11,
+ MD_NAME_CHAR_8 = 12,
+ MD_NAME_CHAR_9 = 13,
+
+ MD_CLOCK_TEMPO = 15,
+ MD_DELAY_MODE = 16,
+ MD_DELAY_TIME = 17,
+ MD_DELAY_FEEDBACK = 18,
+ MD_DELAY_RATE = 19,
+ MD_DELAY_DEPTH = 20,
+ MD_DELAY_SHAPE = 21,
+ MD_DELAY_OUTPUT_SELECT = 22,
+ MD_DELAY_CLOCK = 23,
+ MD_DELAY_COLOR = 24,
+
+ MD_PART_BANK_NUMBER = 32,
+ MD_PART_PROGRAM_NUMBER = 48,
+ MD_PART_MIDI_CHANNEL = 64,
+ MD_PART_LOW_KEY = 80,
+ MD_PART_HIGH_KEY = 96,
+ MD_PART_TRANSPOSE = 112,
+ MD_PART_DETUNE = 128,
+ MD_PART_VOLUME = 144,
+ MD_PART_MIDI_VOLUME_INIT = 160,
+ MD_PART_OUTPUT_SELECT = 176,
+ MD_PART_EFFECT_SEND = 192,
+ MD_PART_STATE = 240,
+ };
+
+ enum MultiPartStateBits
+ {
+ MD_PART_ENABLE,
+ MD_PART_MIDI_VOLUME_ENABLE,
+ MD_PART_HOLD_PEDAL_ENABLE,
+ MD_PART_KEYB_TO_MIDI,
+ MD_PART_INTERNAL_BIT4,
+ MD_PART_NOTE_STEAL_PRIORITY,
+ MD_PART_PROG_CHANGE_ENABLE
};
enum Page