diff options
author | Wohlstand <admin@wohlnet.ru> | 2020-09-02 22:49:04 +0300 |
---|---|---|
committer | Wohlstand <admin@wohlnet.ru> | 2020-09-02 22:49:04 +0300 |
commit | d29b0cacf3e7a1da793fc2692a958dcf6c4b9c75 (patch) | |
tree | 38397165639eec8a5e6369b2a6aca733d6e6dd06 /src/adlmidi_midiplay.cpp | |
parent | efdf769050aaf344ddac660386009b58fa156ad2 (diff) | |
download | libADLMIDI-d29b0cacf3e7a1da793fc2692a958dcf6c4b9c75.tar.gz libADLMIDI-d29b0cacf3e7a1da793fc2692a958dcf6c4b9c75.tar.bz2 libADLMIDI-d29b0cacf3e7a1da793fc2692a958dcf6c4b9c75.zip |
When playing XMIDI files, set defaults of AIL
- Default volume in AIL is 127
- Default pitch bend sensitivity is a full octave up, and full octave down:
MSB=12, LSB=0
Diffstat (limited to 'src/adlmidi_midiplay.cpp')
-rw-r--r-- | src/adlmidi_midiplay.cpp | 23 |
1 files changed, 22 insertions, 1 deletions
diff --git a/src/adlmidi_midiplay.cpp b/src/adlmidi_midiplay.cpp index 70e5854..f023414 100644 --- a/src/adlmidi_midiplay.cpp +++ b/src/adlmidi_midiplay.cpp @@ -200,11 +200,32 @@ void MIDIplay::resetMIDI() m_midiChannels.clear(); m_midiChannels.resize(16, MIDIchannel()); + resetMIDIDefaults(); + caugh_missing_instruments.clear(); caugh_missing_banks_melodic.clear(); caugh_missing_banks_percussion.clear(); } +void MIDIplay::resetMIDIDefaults(int offset) +{ + Synth &synth = *m_synth; + + for(size_t c = offset, n = m_midiChannels.size(); c < n; ++c) + { + MIDIchannel &ch = m_midiChannels[c]; + if(synth.m_musicMode == Synth::MODE_XMIDI) + { + ch.def_volume = 127; + ch.def_bendsense_lsb = 0; + ch.def_bendsense_msb = 12; + } + else + if(synth.m_musicMode == Synth::MODE_RSXX) + ch.def_volume = 127; + } +} + void MIDIplay::TickIterators(double s) { Synth &synth = *m_synth; @@ -257,7 +278,6 @@ void MIDIplay::realTime_ResetState() { MIDIchannel &chan = m_midiChannels[ch]; chan.resetAllControllers(); - chan.volume = (synth.m_musicMode == Synth::MODE_RSXX) ? 127 : 100; chan.vibpos = 0.0; chan.lastlrpn = 0; chan.lastmrpn = 0; @@ -1701,6 +1721,7 @@ size_t MIDIplay::chooseDevice(const std::string &name) size_t n = m_midiDevices.size() * 16; m_midiDevices.insert(std::make_pair(name, n)); m_midiChannels.resize(n + 16); + resetMIDIDefaults(n); return n; } |