aboutsummaryrefslogtreecommitdiff
path: root/src/adlmidi_load.cpp
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/adlmidi_load.cpp
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/adlmidi_load.cpp')
-rw-r--r--src/adlmidi_load.cpp61
1 files changed, 31 insertions, 30 deletions
diff --git a/src/adlmidi_load.cpp b/src/adlmidi_load.cpp
index 9487188..43b74f2 100644
--- a/src/adlmidi_load.cpp
+++ b/src/adlmidi_load.cpp
@@ -215,29 +215,30 @@ bool MIDIplay::LoadBank(FileAndMemReader &fr)
}
}
- opl.dynamic_bank_setup.adLibPercussions = false;
- opl.dynamic_bank_setup.scaleModulators = false;
- opl.dynamic_bank_setup.deepTremolo = (wopl->opl_flags & WOPL_FLAG_DEEP_TREMOLO) != 0;
- opl.dynamic_bank_setup.deepVibrato = (wopl->opl_flags & WOPL_FLAG_DEEP_VIBRATO) != 0;
- opl.dynamic_bank_setup.volumeModel = wopl->volume_model;
- m_setup.HighTremoloMode = -1;
- m_setup.HighVibratoMode = -1;
- m_setup.VolumeModel = ADLMIDI_VolumeModel_AUTO;
+ m_synth.m_insBankSetup.adLibPercussions = false;
+ m_synth.m_insBankSetup.scaleModulators = false;
+ m_synth.m_insBankSetup.deepTremolo = (wopl->opl_flags & WOPL_FLAG_DEEP_TREMOLO) != 0;
+ m_synth.m_insBankSetup.deepVibrato = (wopl->opl_flags & WOPL_FLAG_DEEP_VIBRATO) != 0;
+ m_synth.m_insBankSetup.volumeModel = wopl->volume_model;
+ m_setup.deepTremoloMode = -1;
+ m_setup.deepVibratoMode = -1;
+ m_setup.volumeScaleModel = ADLMIDI_VolumeModel_AUTO;
- opl.setEmbeddedBank(m_setup.AdlBank);
+ m_synth.setEmbeddedBank(m_setup.bankId);
uint16_t slots_counts[2] = {wopl->banks_count_melodic, wopl->banks_count_percussion};
WOPLBank *slots_src_ins[2] = { wopl->banks_melodic, wopl->banks_percussive };
- for(unsigned ss = 0; ss < 2; ss++)
+ for(size_t ss = 0; ss < 2; ss++)
{
- for(unsigned i = 0; i < slots_counts[ss]; i++)
+ for(size_t i = 0; i < slots_counts[ss]; i++)
{
- unsigned bankno =
+ uint16_t bankno = uint16_t(
(slots_src_ins[ss][i].bank_midi_msb * 256) +
slots_src_ins[ss][i].bank_midi_lsb +
- (ss ? OPL3::PercussionTag : 0);
- OPL3::Bank &bank = opl.dynamic_banks[bankno];
+ (ss ? OPL3::PercussionTag : 0)
+ );
+ OPL3::Bank &bank = m_synth.m_insBanks[bankno];
for(int j = 0; j < 128; j++)
{
adlinsdata2 &ins = bank.ins[j];
@@ -248,7 +249,7 @@ bool MIDIplay::LoadBank(FileAndMemReader &fr)
}
}
- opl.AdlBank = ~0u; // Use dynamic banks!
+ m_synth.m_embeddedBank = ~0u; // Use dynamic banks!
//Percussion offset is count of instruments multipled to count of melodic banks
applySetup();
@@ -262,7 +263,7 @@ bool MIDIplay::LoadBank(FileAndMemReader &fr)
bool MIDIplay::LoadMIDI_pre()
{
#ifdef DISABLE_EMBEDDED_BANKS
- if((opl.AdlBank != ~0u) || opl.dynamic_banks.empty())
+ if((m_synth.m_embeddedBank != ~0u) || m_synth.m_insBanks.empty())
{
errorStringOut = "Bank is not set! Please load any instruments bank by using of adl_openBankFile() or adl_openBankData() functions!";
return false;
@@ -284,14 +285,14 @@ bool MIDIplay::LoadMIDI_post()
if(format == MidiSequencer::Format_CMF)
{
const std::vector<MidiSequencer::CmfInstrument> &instruments = m_sequencer.getRawCmfInstruments();
- opl.dynamic_banks.clear();//Clean up old banks
+ m_synth.m_insBanks.clear();//Clean up old banks
uint16_t ins_count = static_cast<uint16_t>(instruments.size());
for(uint16_t i = 0; i < ins_count; ++i)
{
const uint8_t *InsData = instruments[i].data;
uint16_t bank = i / 256;
- bank = (bank & 127) + ((bank >> 7) << 8);
+ bank = uint16_t((bank & 127) + ((bank >> 7) << 8));
if(bank > 127 + (127 << 8))
break;
bank += (i % 256 < 128) ? 0 : OPL3::PercussionTag;
@@ -299,7 +300,7 @@ bool MIDIplay::LoadMIDI_post()
/*std::printf("Ins %3u: %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X\n",
i, InsData[0],InsData[1],InsData[2],InsData[3], InsData[4],InsData[5],InsData[6],InsData[7],
InsData[8],InsData[9],InsData[10],InsData[11], InsData[12],InsData[13],InsData[14],InsData[15]);*/
- adlinsdata2 &adlins = opl.dynamic_banks[bank].ins[i % 128];
+ adlinsdata2 &adlins = m_synth.m_insBanks[bank].ins[i % 128];
adldata adl;
adl.modulator_E862 =
((static_cast<uint32_t>(InsData[8] & 0x07) << 24) & 0xFF000000) //WaveForm
@@ -324,29 +325,29 @@ bool MIDIplay::LoadMIDI_post()
adlins.voice2_fine_tune = 0.0;
}
- opl.AdlBank = ~0u; // Ignore AdlBank number, use dynamic banks instead
+ m_synth.m_embeddedBank = ~0u; // Ignore AdlBank number, use dynamic banks instead
//std::printf("CMF deltas %u ticks %u, basictempo = %u\n", deltas, ticks, basictempo);
- opl.AdlPercussionMode = true;
- opl.m_musicMode = OPL3::MODE_CMF;
- opl.m_volumeScale = OPL3::VOLUME_NATIVE;
+ m_synth.m_rhythmMode = true;
+ m_synth.m_musicMode = OPL3::MODE_CMF;
+ m_synth.m_volumeScale = OPL3::VOLUME_NATIVE;
}
else if(format == MidiSequencer::Format_RSXX)
{
//opl.CartoonersVolumes = true;
- opl.m_musicMode = OPL3::MODE_RSXX;
- opl.m_volumeScale = OPL3::VOLUME_NATIVE;
+ m_synth.m_musicMode = OPL3::MODE_RSXX;
+ m_synth.m_volumeScale = OPL3::VOLUME_NATIVE;
}
else if(format == MidiSequencer::Format_IMF)
{
//std::fprintf(stderr, "Done reading IMF file\n");
- opl.NumFourOps = 0; //Don't use 4-operator channels for IMF playing!
- opl.m_musicMode = OPL3::MODE_IMF;
+ m_synth.m_numFourOps = 0; //Don't use 4-operator channels for IMF playing!
+ m_synth.m_musicMode = OPL3::MODE_IMF;
}
- opl.Reset(m_setup.emulator, m_setup.PCM_RATE, this); // Reset OPL3 chip
+ m_synth.reset(m_setup.emulator, m_setup.PCM_RATE, this); // Reset OPL3 chip
//opl.Reset(); // ...twice (just in case someone misprogrammed OPL3 previously)
- ch.clear();
- ch.resize(opl.NumChannels);
+ m_chipChannels.clear();
+ m_chipChannels.resize(m_synth.m_numChannels);
return true;
}