aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/adlmidi.cpp12
-rw-r--r--src/adlmidi_midiplay.cpp10
-rw-r--r--src/adlmidi_private.hpp1
3 files changed, 15 insertions, 8 deletions
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 9687023..4fb3e7f 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**********************/