aboutsummaryrefslogtreecommitdiff
path: root/utils/gen_adldata/file_formats
diff options
context:
space:
mode:
authorVitaly Novichkov <admin@wohlnet.ru>2019-02-22 23:39:09 +0300
committerVitaly Novichkov <admin@wohlnet.ru>2019-02-22 23:39:09 +0300
commitc5f8da70da78110dbbaa74ff4ebce6edf5d04be8 (patch)
treeb92284c60efec9652ab313ad032b833ddbbff3f2 /utils/gen_adldata/file_formats
parentf21a5030355d27d9562cc62643db0380dc58a84b (diff)
downloadlibADLMIDI-c5f8da70da78110dbbaa74ff4ebce6edf5d04be8.tar.gz
libADLMIDI-c5f8da70da78110dbbaa74ff4ebce6edf5d04be8.tar.bz2
libADLMIDI-c5f8da70da78110dbbaa74ff4ebce6edf5d04be8.zip
Rhythm-mode percussion now works!
Diffstat (limited to 'utils/gen_adldata/file_formats')
-rw-r--r--utils/gen_adldata/file_formats/load_ail.h2
-rw-r--r--utils/gen_adldata/file_formats/load_bisqwit.h2
-rw-r--r--utils/gen_adldata/file_formats/load_bnk.h2
-rw-r--r--utils/gen_adldata/file_formats/load_bnk2.h2
-rw-r--r--utils/gen_adldata/file_formats/load_ea.h2
-rw-r--r--utils/gen_adldata/file_formats/load_ibk.h38
-rw-r--r--utils/gen_adldata/file_formats/load_jv.h2
-rw-r--r--utils/gen_adldata/file_formats/load_op2.h3
-rw-r--r--utils/gen_adldata/file_formats/load_tmb.h4
-rw-r--r--utils/gen_adldata/file_formats/load_wopl.h3
10 files changed, 45 insertions, 15 deletions
diff --git a/utils/gen_adldata/file_formats/load_ail.h b/utils/gen_adldata/file_formats/load_ail.h
index 7f4d7ea..80ca8ad 100644
--- a/utils/gen_adldata/file_formats/load_ail.h
+++ b/utils/gen_adldata/file_formats/load_ail.h
@@ -92,6 +92,7 @@ static bool LoadMiles(const char *fn, unsigned bank, const char *prefix)
tmp2.real4op = (inscount > 1);
tmp2.voice2_fine_tune = 0.0;
tmp2.midi_velocity_offset = 0;
+ tmp2.rhythmModeDrum = 0;
std::string name;
if(midi_index >= 0) name = std::string(1, '\377') + MidiInsName[midi_index];
size_t resno = InsertIns(tmp[0], tmp[1], tmp2, name, name2, twoOp);
@@ -103,7 +104,6 @@ static bool LoadMiles(const char *fn, unsigned bank, const char *prefix)
setup.volumeModel = VOLUME_Generic;
setup.deepTremolo = true;
setup.deepVibrato = true;
- setup.adLibPercussions = false;
setup.scaleModulators = false;
SetBankSetup(bank, setup);
diff --git a/utils/gen_adldata/file_formats/load_bisqwit.h b/utils/gen_adldata/file_formats/load_bisqwit.h
index 3283aa9..9749a76 100644
--- a/utils/gen_adldata/file_formats/load_bisqwit.h
+++ b/utils/gen_adldata/file_formats/load_bisqwit.h
@@ -27,6 +27,7 @@ static bool LoadBisqwit(const char *fn, unsigned bank, const char *prefix)
tmp2.pseudo4op = false;
tmp2.voice2_fine_tune = 0.0;
tmp2.midi_velocity_offset = 0;
+ tmp2.rhythmModeDrum = 0;
insdata tmp[2];
for(int side = 0; side < 2; ++side)
@@ -55,7 +56,6 @@ static bool LoadBisqwit(const char *fn, unsigned bank, const char *prefix)
setup.volumeModel = VOLUME_Generic;
setup.deepTremolo = true;
setup.deepVibrato = true;
- setup.adLibPercussions = false;
setup.scaleModulators = false;
SetBankSetup(bank, setup);
diff --git a/utils/gen_adldata/file_formats/load_bnk.h b/utils/gen_adldata/file_formats/load_bnk.h
index dfa066e..f1412ba 100644
--- a/utils/gen_adldata/file_formats/load_bnk.h
+++ b/utils/gen_adldata/file_formats/load_bnk.h
@@ -111,6 +111,7 @@ static bool LoadBNK(const char *fn, unsigned bank, const char *prefix, bool is_f
tmp2.real4op = false;
tmp2.voice2_fine_tune = 0.0;
tmp2.midi_velocity_offset = 0;
+ tmp2.rhythmModeDrum = 0;
if(is_fat) tmp.data[10] ^= 1;
@@ -154,7 +155,6 @@ static bool LoadBNK(const char *fn, unsigned bank, const char *prefix, bool is_f
setup.volumeModel = VOLUME_Generic;
setup.deepTremolo = false;
setup.deepVibrato = false;
- setup.adLibPercussions = false;
setup.scaleModulators = false;
SetBankSetup(bank, setup);
diff --git a/utils/gen_adldata/file_formats/load_bnk2.h b/utils/gen_adldata/file_formats/load_bnk2.h
index b4f8da9..072712c 100644
--- a/utils/gen_adldata/file_formats/load_bnk2.h
+++ b/utils/gen_adldata/file_formats/load_bnk2.h
@@ -89,6 +89,7 @@ static bool LoadBNK2(const char *fn, unsigned bank, const char *prefix,
tmp2.real4op = false;
tmp2.voice2_fine_tune = 0.0;
tmp2.midi_velocity_offset = 0;
+ tmp2.rhythmModeDrum = 0;
if(xxP24NNN & 8)
{
@@ -110,7 +111,6 @@ static bool LoadBNK2(const char *fn, unsigned bank, const char *prefix,
setup.volumeModel = VOLUME_Generic;
setup.deepTremolo = false;
setup.deepVibrato = false;
- setup.adLibPercussions = false;
setup.scaleModulators = false;
SetBankSetup(bank, setup);
diff --git a/utils/gen_adldata/file_formats/load_ea.h b/utils/gen_adldata/file_formats/load_ea.h
index 79367d9..c217c09 100644
--- a/utils/gen_adldata/file_formats/load_ea.h
+++ b/utils/gen_adldata/file_formats/load_ea.h
@@ -86,6 +86,7 @@ static bool LoadEA(const char *fn, unsigned bank, const char *prefix)
tmp2.notenum = 0;
tmp2.pseudo4op = false;
tmp2.real4op = false;
+ tmp2.rhythmModeDrum = 0;
std::string name;
char name2[512];
@@ -131,7 +132,6 @@ static bool LoadEA(const char *fn, unsigned bank, const char *prefix)
setup.volumeModel = VOLUME_CMF;
setup.deepTremolo = false;
setup.deepVibrato = false;
- setup.adLibPercussions = false;
setup.scaleModulators = false;
SetBankSetup(bank, setup);
diff --git a/utils/gen_adldata/file_formats/load_ibk.h b/utils/gen_adldata/file_formats/load_ibk.h
index 934fb67..28177c7 100644
--- a/utils/gen_adldata/file_formats/load_ibk.h
+++ b/utils/gen_adldata/file_formats/load_ibk.h
@@ -3,7 +3,7 @@
#include "../progs_cache.h"
-static bool LoadIBK(const char *fn, unsigned bank, const char *prefix, bool percussive)
+static bool LoadIBK(const char *fn, unsigned bank, const char *prefix, bool percussive, bool noRhythmMode = false)
{
#ifdef HARD_BANKS
writeIni("IBK", fn, prefix, bank, percussive ? INI_Drums : INI_Melodic);
@@ -55,16 +55,45 @@ static bool LoadIBK(const char *fn, unsigned bank, const char *prefix, bool perc
tmp.data[6] = data[offset2 + 8];
tmp.data[7] = data[offset2 + 9];
tmp.data[10] = data[offset2 + 10];
- // [+11] seems to be used also, what is it for?
- tmp.finetune = 0;
+ // bisqwit: [+11] seems to be used also, what is it for?
+ // Wohlstand: You wanna know? It's the rhythm-mode drum number! If 0 - melodic, >0 - rhythm-mode drum
+ tmp.finetune = percussive ? 0 : data[offset2 + 12];
tmp.diff = false;
struct ins tmp2;
- tmp2.notenum = gmno < 128 ? 0 : 35;
+ tmp2.notenum = percussive ? data[offset2 + 13] : 0;
tmp2.pseudo4op = false;
tmp2.real4op = false;
tmp2.voice2_fine_tune = 0.0;
tmp2.midi_velocity_offset = 0;
+ tmp2.rhythmModeDrum = 0;
+ if(percussive && !noRhythmMode)
+ {
+ int rm = data[offset2 + 11];
+ switch(rm)
+ {
+ case 6:
+ tmp2.rhythmModeDrum = ins::Flag_RM_BassDrum;
+ break;
+ case 7:
+ tmp2.rhythmModeDrum = ins::Flag_RM_Snare;
+ break;
+ case 8:
+ tmp2.rhythmModeDrum = ins::Flag_RM_TomTom;
+ break;
+ case 9:
+ tmp2.rhythmModeDrum = ins::Flag_RM_Cymbal;
+ break;
+ case 10:
+ tmp2.rhythmModeDrum = ins::Flag_RM_HiHat;
+ break;
+ default:
+ // IBK logic: make non-percussion instrument be silent
+ tmp = MakeNoSoundIns();
+ break;
+ }
+ }
+
size_t resno = InsertIns(tmp, tmp2, std::string(1, '\377') + name, name2);
SetBank(bank, (unsigned int)gmno, resno);
}
@@ -73,7 +102,6 @@ static bool LoadIBK(const char *fn, unsigned bank, const char *prefix, bool perc
setup.volumeModel = VOLUME_Generic;
setup.deepTremolo = false;
setup.deepVibrato = false;
- setup.adLibPercussions = false;
setup.scaleModulators = false;
SetBankSetup(bank, setup);
diff --git a/utils/gen_adldata/file_formats/load_jv.h b/utils/gen_adldata/file_formats/load_jv.h
index ad840d8..a498bb6 100644
--- a/utils/gen_adldata/file_formats/load_jv.h
+++ b/utils/gen_adldata/file_formats/load_jv.h
@@ -74,6 +74,7 @@ static bool LoadJunglevision(const char *fn, unsigned bank, const char *prefix)
tmp2.real4op = (data[offset] != 0);
tmp2.voice2_fine_tune = 0.0;
tmp2.midi_velocity_offset = 0;
+ tmp2.rhythmModeDrum = 0;
while(tmp2.notenum && tmp2.notenum < 20)
{
@@ -105,7 +106,6 @@ static bool LoadJunglevision(const char *fn, unsigned bank, const char *prefix)
setup.volumeModel = VOLUME_9X;
setup.deepTremolo = true;
setup.deepVibrato = true;
- setup.adLibPercussions = false;
setup.scaleModulators = false;
SetBankSetup(bank, setup);
diff --git a/utils/gen_adldata/file_formats/load_op2.h b/utils/gen_adldata/file_formats/load_op2.h
index 7c68dd8..feb85ed 100644
--- a/utils/gen_adldata/file_formats/load_op2.h
+++ b/utils/gen_adldata/file_formats/load_op2.h
@@ -111,6 +111,8 @@ static bool LoadDoom(const char *fn, unsigned bank, const char *prefix)
tmp2.real4op = false;
tmp2.voice2_fine_tune = 0.0;
tmp2.midi_velocity_offset = 0;
+ tmp2.rhythmModeDrum = 0;
+
while(tmp2.notenum && tmp2.notenum < 20)
{
tmp2.notenum += 12;
@@ -161,7 +163,6 @@ static bool LoadDoom(const char *fn, unsigned bank, const char *prefix)
setup.volumeModel = VOLUME_DMX;
setup.deepTremolo = false;
setup.deepVibrato = false;
- setup.adLibPercussions = false;
setup.scaleModulators = false;
SetBankSetup(bank, setup);
diff --git a/utils/gen_adldata/file_formats/load_tmb.h b/utils/gen_adldata/file_formats/load_tmb.h
index 1d999d1..4417b02 100644
--- a/utils/gen_adldata/file_formats/load_tmb.h
+++ b/utils/gen_adldata/file_formats/load_tmb.h
@@ -44,7 +44,7 @@ static bool LoadTMB(const char *fn, unsigned bank, const char *prefix)
tmp.data[8] = data[offset + 2];
tmp.data[9] = data[offset + 3];
tmp.data[10] = data[offset + 10];
- tmp.finetune = 0; //data[offset + 12];
+ tmp.finetune = 0;
tmp.diff = false;
struct ins tmp2;
@@ -53,6 +53,7 @@ static bool LoadTMB(const char *fn, unsigned bank, const char *prefix)
tmp2.real4op = false;
tmp2.voice2_fine_tune = 0.0;
tmp2.midi_velocity_offset = (int8_t)data[offset + 12];
+ tmp2.rhythmModeDrum = 0;
std::string name;
if(midi_index >= 0) name = std::string(1, '\377') + MidiInsName[midi_index];
@@ -69,7 +70,6 @@ static bool LoadTMB(const char *fn, unsigned bank, const char *prefix)
setup.volumeModel = VOLUME_APOGEE;
setup.deepTremolo = false;
setup.deepVibrato = false;
- setup.adLibPercussions = false;
setup.scaleModulators = false;
SetBankSetup(bank, setup);
diff --git a/utils/gen_adldata/file_formats/load_wopl.h b/utils/gen_adldata/file_formats/load_wopl.h
index 24b303e..cd8765e 100644
--- a/utils/gen_adldata/file_formats/load_wopl.h
+++ b/utils/gen_adldata/file_formats/load_wopl.h
@@ -15,6 +15,7 @@ enum class WOPL_Flags
Mode_2op = 0x00,
Mode_4op = 0x01,
Mode_DoubleVoice = 0x02,
+ WOPL_RhythmModeMask = 0x38,
};
static bool LoadWopl(const char *fn, unsigned bank, const char *prefix)
@@ -60,7 +61,6 @@ static bool LoadWopl(const char *fn, unsigned bank, const char *prefix)
setup.deepTremolo = (data[0x11] & 0x01) != 0;
setup.deepVibrato = (data[0x11] & 0x02) != 0;
setup.volumeModel = (int)data[0x12];
- setup.adLibPercussions = false;
setup.scaleModulators = false;
// Validate file format by size calculation
@@ -172,6 +172,7 @@ static bool LoadWopl(const char *fn, unsigned bank, const char *prefix)
tmp2.real4op = real4op && !tmp2.pseudo4op;
tmp2.voice2_fine_tune = 0;
tmp2.midi_velocity_offset = (int8_t)data[offset + 36];
+ tmp2.rhythmModeDrum = (flags & (uint8_t)WOPL_Flags::WOPL_RhythmModeMask);
tmp[0].diff = false;
tmp[1].diff = real4op && !tmp2.pseudo4op;