diff options
-rw-r--r-- | CMakeLists.txt | 3 | ||||
-rw-r--r-- | fm_banks/adldata-cache.dat | bin | 577832 -> 577832 bytes | |||
-rw-r--r-- | src/adlmidi.cpp | 12 | ||||
-rw-r--r-- | src/adlmidi_midiplay.cpp | 10 | ||||
-rw-r--r-- | src/adlmidi_private.hpp | 1 | ||||
-rw-r--r-- | utils/gen_adldata/progs_cache.cpp | 2 |
6 files changed, 19 insertions, 9 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index 8d1fad6..2d4cec2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -296,6 +296,9 @@ if(libADLMIDI_SHARED) set_legacy_standard(ADLMIDI_shared) set_visibility_hidden(ADLMIDI_shared) list(APPEND libADLMIDI_INSTALLS ADLMIDI_shared) + if(WIN32) + target_compile_definitions(ADLMIDI_shared PRIVATE "-DADLMIDI_BUILD_DLL") + endif() if(WITH_EMBEDDED_BANKS AND WITH_GENADLDATA) add_dependencies(ADLMIDI_shared gen-adldata-run) endif() diff --git a/fm_banks/adldata-cache.dat b/fm_banks/adldata-cache.dat Binary files differindex 896fdbe..86da6cc 100644 --- a/fm_banks/adldata-cache.dat +++ b/fm_banks/adldata-cache.dat diff --git a/src/adlmidi.cpp b/src/adlmidi.cpp index 5564404..c5d0271 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; } } @@ -665,11 +665,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", ""); } |