aboutsummaryrefslogtreecommitdiff
path: root/src/adldata.hh
diff options
context:
space:
mode:
Diffstat (limited to 'src/adldata.hh')
-rw-r--r--src/adldata.hh27
1 files changed, 18 insertions, 9 deletions
diff --git a/src/adldata.hh b/src/adldata.hh
index 73c3d94..93d4144 100644
--- a/src/adldata.hh
+++ b/src/adldata.hh
@@ -49,11 +49,15 @@ struct adlinsdata
{
enum { Flag_Pseudo4op = 0x01, Flag_NoSound = 0x02, Flag_Real4op = 0x04 };
+ enum { Flag_RM_BassDrum = 0x08, Flag_RM_Snare = 0x10, Flag_RM_TomTom = 0x18,
+ Flag_RM_Cymbal = 0x20, Flag_RM_HiHat = 0x28, Mask_RhythmMode = 0x38 };
+
uint16_t adlno1, adlno2;
uint8_t tone;
uint8_t flags;
uint16_t ms_sound_kon; // Number of milliseconds it produces sound;
uint16_t ms_sound_koff;
+ int8_t midi_velocity_offset;
double voice2_fine_tune;
};
ADLDATA_BYTE_COMPARABLE(struct adlinsdata)
@@ -70,9 +74,9 @@ struct adlinsdata2
uint8_t flags;
uint16_t ms_sound_kon; // Number of milliseconds it produces sound;
uint16_t ms_sound_koff;
+ int8_t midi_velocity_offset;
double voice2_fine_tune;
- adlinsdata2() {}
- explicit adlinsdata2(const adlinsdata &d);
+ static adlinsdata2 from_adldata(const adlinsdata &d);
};
ADLDATA_BYTE_COMPARABLE(struct adlinsdata2)
@@ -103,17 +107,22 @@ extern const AdlBankSetup adlbanksetup[];
/**
* @brief Conversion of storage formats
*/
-inline adlinsdata2::adlinsdata2(const adlinsdata &d)
- : tone(d.tone), flags(d.flags),
- ms_sound_kon(d.ms_sound_kon), ms_sound_koff(d.ms_sound_koff),
- voice2_fine_tune(d.voice2_fine_tune)
+inline adlinsdata2 adlinsdata2::from_adldata(const adlinsdata &d)
{
+ adlinsdata2 ins;
+ ins.tone = d.tone;
+ ins.flags = d.flags;
+ ins.ms_sound_kon = d.ms_sound_kon;
+ ins.ms_sound_koff = d.ms_sound_koff;
+ ins.midi_velocity_offset = d.midi_velocity_offset;
+ ins.voice2_fine_tune = d.voice2_fine_tune;
#ifdef DISABLE_EMBEDDED_BANKS
- std::memset(adl, 0, sizeof(adldata) * 2);
+ std::memset(ins.adl, 0, sizeof(adldata) * 2);
#else
- adl[0] = ::adl[d.adlno1];
- adl[1] = ::adl[d.adlno2];
+ ins.adl[0] = ::adl[d.adlno1];
+ ins.adl[1] = ::adl[d.adlno2];
#endif
+ return ins;
}
/**