aboutsummaryrefslogtreecommitdiff
path: root/src/adldata.hh
diff options
context:
space:
mode:
authorVitaly Novichkov <admin@wohlnet.ru>2018-06-24 21:46:38 +0300
committerVitaly Novichkov <admin@wohlnet.ru>2018-06-24 21:46:38 +0300
commit60f7ea56a4ccc88a8e747b87ba9fb39f1d8330b5 (patch)
treecc26e12e08a485a8b928991936482fc0c77796f3 /src/adldata.hh
parent76eb1a12ef6e6a3f8c7f6c0a226fc5b35dd99536 (diff)
downloadlibADLMIDI-60f7ea56a4ccc88a8e747b87ba9fb39f1d8330b5.tar.gz
libADLMIDI-60f7ea56a4ccc88a8e747b87ba9fb39f1d8330b5.tar.bz2
libADLMIDI-60f7ea56a4ccc88a8e747b87ba9fb39f1d8330b5.zip
[Experimental] Big re-factoring of internals and clean-up
- Renamed functions - Renamed variables - Documenting of most library internal stuff - Disabling of embedded banks no more conflicts with accidental linking of adldata.cpp
Diffstat (limited to 'src/adldata.hh')
-rw-r--r--src/adldata.hh30
1 files changed, 20 insertions, 10 deletions
diff --git a/src/adldata.hh b/src/adldata.hh
index 104db82..73c3d94 100644
--- a/src/adldata.hh
+++ b/src/adldata.hh
@@ -26,6 +26,7 @@
#include <string.h>
#include <stdint.h>
+#include <cstring>
#pragma pack(push, 1)
#define ADLDATA_BYTE_COMPARABLE(T) \
@@ -34,18 +35,17 @@
inline bool operator!=(const T &a, const T &b) \
{ return !operator==(a, b); }
-extern const struct adldata
+struct adldata
{
uint32_t modulator_E862, carrier_E862; // See below
uint8_t modulator_40, carrier_40; // KSL/attenuation settings
uint8_t feedconn; // Feedback/connection bits for the channel
int8_t finetune;
-} adl[];
+};
ADLDATA_BYTE_COMPARABLE(struct adldata)
-enum { adlDefaultNumber = 189 };
-extern const struct adlinsdata
+struct adlinsdata
{
enum { Flag_Pseudo4op = 0x01, Flag_NoSound = 0x02, Flag_Real4op = 0x04 };
@@ -55,11 +55,8 @@ extern const struct adlinsdata
uint16_t ms_sound_kon; // Number of milliseconds it produces sound;
uint16_t ms_sound_koff;
double voice2_fine_tune;
-} adlins[];
+};
ADLDATA_BYTE_COMPARABLE(struct adlinsdata)
-int maxAdlBanks();
-extern const unsigned short banks[][256];
-extern const char* const banknames[];
enum { adlNoteOnMaxTime = 40000 };
@@ -85,14 +82,23 @@ ADLDATA_BYTE_COMPARABLE(struct adlinsdata2)
/**
* @brief Bank global setup
*/
-extern const struct AdlBankSetup
+struct AdlBankSetup
{
int volumeModel;
bool deepTremolo;
bool deepVibrato;
bool adLibPercussions;
bool scaleModulators;
-} adlbanksetup[];
+};
+
+#ifndef DISABLE_EMBEDDED_BANKS
+int maxAdlBanks();
+extern const adldata adl[];
+extern const adlinsdata adlins[];
+extern const unsigned short banks[][256];
+extern const char* const banknames[];
+extern const AdlBankSetup adlbanksetup[];
+#endif
/**
* @brief Conversion of storage formats
@@ -102,8 +108,12 @@ inline adlinsdata2::adlinsdata2(const adlinsdata &d)
ms_sound_kon(d.ms_sound_kon), ms_sound_koff(d.ms_sound_koff),
voice2_fine_tune(d.voice2_fine_tune)
{
+#ifdef DISABLE_EMBEDDED_BANKS
+ std::memset(adl, 0, sizeof(adldata) * 2);
+#else
adl[0] = ::adl[d.adlno1];
adl[1] = ::adl[d.adlno2];
+#endif
}
/**