aboutsummaryrefslogtreecommitdiff
path: root/src/adlmidi_midiplay.cpp
diff options
context:
space:
mode:
authorWohlstand <admin@wohlnet.ru>2020-09-02 22:49:04 +0300
committerWohlstand <admin@wohlnet.ru>2020-09-02 22:49:04 +0300
commitd29b0cacf3e7a1da793fc2692a958dcf6c4b9c75 (patch)
tree38397165639eec8a5e6369b2a6aca733d6e6dd06 /src/adlmidi_midiplay.cpp
parentefdf769050aaf344ddac660386009b58fa156ad2 (diff)
downloadlibADLMIDI-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.cpp23
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;
}