aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--fm_banks/adldata-cache.datbin577832 -> 577832 bytes
-rw-r--r--src/adlmidi.cpp12
-rw-r--r--src/adlmidi_midiplay.cpp10
-rw-r--r--src/adlmidi_private.hpp1
-rw-r--r--utils/gen_adldata/progs_cache.cpp2
5 files changed, 16 insertions, 9 deletions
diff --git a/fm_banks/adldata-cache.dat b/fm_banks/adldata-cache.dat
index 896fdbe..86da6cc 100644
--- a/fm_banks/adldata-cache.dat
+++ b/fm_banks/adldata-cache.dat
Binary files differ
diff --git a/src/adlmidi.cpp b/src/adlmidi.cpp
index d839399..0e0b024 100644
--- a/src/adlmidi.cpp
+++ b/src/adlmidi.cpp
@@ -114,7 +114,7 @@ ADLMIDI_EXPORT int adl_setNumChips(ADL_MIDIPlayer *device, int numChips)
}
play->m_synth.m_numChips = play->m_setup.numChips;
- adl_reset(device);
+ play->partialReset();
return adlRefreshNumCards(device);
}
@@ -606,7 +606,7 @@ ADLMIDI_EXPORT int adl_switchEmulator(struct ADL_MIDIPlayer *device, int emulato
if((emulator >= 0) && (emulator < ADLMIDI_EMU_end))
{
play->m_setup.emulator = emulator;
- adl_reset(device);
+ play->partialReset();
return 0;
}
play->setErrorString("OPL3 MIDI: Unknown emulation core!");
@@ -623,7 +623,7 @@ ADLMIDI_EXPORT int adl_setRunAtPcmRate(ADL_MIDIPlayer *device, int enabled)
if(play)
{
play->m_setup.runAtPcmRate = (enabled != 0);
- adl_reset(device);
+ play->partialReset();
return 0;
}
}
@@ -670,11 +670,7 @@ ADLMIDI_EXPORT void adl_reset(struct ADL_MIDIPlayer *device)
if(!device)
return;
MidiPlayer *play = GET_MIDI_PLAYER(device);
- play->m_setup.tick_skip_samples_delay = 0;
- play->m_synth.m_runAtPcmRate = play->m_setup.runAtPcmRate;
- play->m_synth.reset(play->m_setup.emulator, play->m_setup.PCM_RATE, play);
- play->m_chipChannels.clear();
- play->m_chipChannels.resize((size_t)play->m_synth.m_numChannels);
+ play->partialReset();
play->resetMIDI();
}
diff --git a/src/adlmidi_midiplay.cpp b/src/adlmidi_midiplay.cpp
index 86ff369..62b1ef4 100644
--- a/src/adlmidi_midiplay.cpp
+++ b/src/adlmidi_midiplay.cpp
@@ -205,6 +205,16 @@ void MIDIplay::applySetup()
m_arpeggioCounter = 0;
}
+void MIDIplay::partialReset()
+{
+ realTime_panic();
+ m_setup.tick_skip_samples_delay = 0;
+ m_synth.m_runAtPcmRate = m_setup.runAtPcmRate;
+ m_synth.reset(m_setup.emulator, m_setup.PCM_RATE, this);
+ m_chipChannels.clear();
+ m_chipChannels.resize((size_t)m_synth.m_numChannels);
+}
+
void MIDIplay::resetMIDI()
{
m_masterVolume = MasterVolumeDefault;
diff --git a/src/adlmidi_private.hpp b/src/adlmidi_private.hpp
index eee73ac..10df24d 100644
--- a/src/adlmidi_private.hpp
+++ b/src/adlmidi_private.hpp
@@ -488,6 +488,7 @@ public:
void applySetup();
+ void partialReset();
void resetMIDI();
/**********************Internal structures and classes**********************/
diff --git a/utils/gen_adldata/progs_cache.cpp b/utils/gen_adldata/progs_cache.cpp
index 81bba4c..12c2de1 100644
--- a/utils/gen_adldata/progs_cache.cpp
+++ b/utils/gen_adldata/progs_cache.cpp
@@ -112,7 +112,7 @@ size_t InsertNoSoundIns()
{
// { 0x0F70700,0x0F70710, 0xFF,0xFF, 0x0,+0 },
insdata tmp1 = MakeNoSoundIns();
- struct ins tmp2 = { 0, 0, 0, false, false, 0.0 };
+ struct ins tmp2 = { 0, 0, 0, false, false, 0.0, 0 };
return InsertIns(tmp1, tmp1, tmp2, "nosound", "");
}