diff options
-rw-r--r-- | gui/options.cpp | 27 | ||||
-rw-r--r-- | gui/options.h | 3 | ||||
-rw-r--r-- | gui/theme-config.cpp | 5 | ||||
-rw-r--r-- | gui/themes/modern.ini | 9 |
4 files changed, 42 insertions, 2 deletions
diff --git a/gui/options.cpp b/gui/options.cpp index 75835191af..79f2044589 100644 --- a/gui/options.cpp +++ b/gui/options.cpp @@ -58,6 +58,7 @@ namespace GUI { // - aspect ratio, language, platform, debug mode/level, cd drive, joystick, multi midi, native mt32 enum { + kMidiGainChanged = 'mgch', kMusicVolumeChanged = 'muvc', kSfxVolumeChanged = 'sfvc', kSubtitleToggle = 'sttg', @@ -199,6 +200,13 @@ void OptionsDialog::open() { _soundFont->setLabel("None"); else _soundFont->setLabel(soundFont); + + // MIDI gain setting + char buf[10]; + + _midiGainSlider->setValue(ConfMan.getInt("midi_gain", _domain)); + sprintf(buf, "%.2f", (double)_midiGainSlider->getValue() / 100.0); + _midiGainLabel->setLabel(buf); } // Volume options @@ -304,6 +312,7 @@ void OptionsDialog::close() { ConfMan.setBool("multi_midi", _multiMidiCheckbox->getState(), _domain); ConfMan.setBool("native_mt32", _mt32Checkbox->getState(), _domain); ConfMan.setBool("enable_gs", _enableGSCheckbox->getState(), _domain); + ConfMan.setInt("midi_gain", _midiGainSlider->getValue(), _domain); String soundFont(_soundFont->getLabel()); if (!soundFont.empty() && (soundFont != "None")) @@ -312,6 +321,7 @@ void OptionsDialog::close() { ConfMan.removeKey("multi_midi", _domain); ConfMan.removeKey("native_mt32", _domain); ConfMan.removeKey("enable_gs", _domain); + ConfMan.removeKey("midi_gain", _domain); ConfMan.removeKey("soundfont", _domain); } } @@ -360,7 +370,14 @@ void OptionsDialog::close() { } void OptionsDialog::handleCommand(CommandSender *sender, uint32 cmd, uint32 data) { + char buf[10]; + switch (cmd) { + case kMidiGainChanged: + sprintf(buf, "%.2f", (double)_midiGainSlider->getValue() / 100.0); + _midiGainLabel->setLabel(buf); + _midiGainLabel->draw(); + break; case kMusicVolumeChanged: _musicVolumeLabel->setValue(_musicVolumeSlider->getValue()); _musicVolumeLabel->draw(); @@ -423,6 +440,9 @@ void OptionsDialog::setMIDISettingsState(bool enabled) { _multiMidiCheckbox->setEnabled(enabled); _mt32Checkbox->setEnabled(enabled); _enableGSCheckbox->setEnabled(enabled); + _midiGainDesc->setEnabled(enabled); + _midiGainSlider->setEnabled(enabled); + _midiGainLabel->setEnabled(enabled); } void OptionsDialog::setVolumeSettingsState(bool enabled) { @@ -518,6 +538,13 @@ void OptionsDialog::addMIDIControls(GuiObject *boss, const String &prefix) { // GS Extensions setting _enableGSCheckbox = new CheckboxWidget(boss, prefix + "mcGSCheckbox", "Enable Roland GS Mode", 0, 0); + // MIDI gain setting (FluidSynth uses this) + _midiGainDesc = new StaticTextWidget(boss, prefix + "mcMidiGainText", "MIDI gain:"); + _midiGainSlider = new SliderWidget(boss, prefix + "mcMidiGainSlider", kMidiGainChanged); + _midiGainSlider->setMinValue(0); + _midiGainSlider->setMaxValue(1000); + _midiGainLabel = new StaticTextWidget(boss, prefix + "mcMidiGainLabel", "1.00"); + _enableMIDISettings = true; } diff --git a/gui/options.h b/gui/options.h index adc238c558..cbbac85a00 100644 --- a/gui/options.h +++ b/gui/options.h @@ -99,6 +99,9 @@ private: CheckboxWidget *_multiMidiCheckbox; CheckboxWidget *_mt32Checkbox; CheckboxWidget *_enableGSCheckbox; + StaticTextWidget *_midiGainDesc; + SliderWidget *_midiGainSlider; + StaticTextWidget *_midiGainLabel; // // Subtitle controls diff --git a/gui/theme-config.cpp b/gui/theme-config.cpp index 691681f151..e8fa2a963a 100644 --- a/gui/theme-config.cpp +++ b/gui/theme-config.cpp @@ -366,6 +366,11 @@ const char *Theme::_defaultConfigINI = "opYoffset=(opYoffset + buttonHeight + midiControlsSpacing)\n" "mcGSCheckbox=mcx opYoffset (kFontHeight + 10 + 142) buttonHeight\n" "opYoffset=(opYoffset + buttonHeight + midiControlsSpacing)\n" +"mcMidiGainText=mcx (opYoffset + 2) 95 kLineHeight\n" +"mcMidiGainText.align=kTextAlignRight\n" +"mcMidiGainSlider=(prev.x2 + 10) opYoffset sliderWidth sliderHeight\n" +"mcMidiGainLabel=(prev.x2 + 10) (opYoffset + 2) 40 kLineHeight\n" +"opYoffset=(opYoffset + sliderHeight + midiControlsSpacing)\n" "\n" "[subtitleControls]\n" "sbx=(opXoffset + 10)\n" diff --git a/gui/themes/modern.ini b/gui/themes/modern.ini index d1c53a0382..711a5c0857 100644 --- a/gui/themes/modern.ini +++ b/gui/themes/modern.ini @@ -482,6 +482,11 @@ mcMt32Checkbox=mcx opYoffset (kFontHeight + 10 + 256) buttonHeight opYoffset=(opYoffset + buttonHeight + midiControlsSpacing) mcGSCheckbox=mcx opYoffset (kFontHeight + 10 + 142) buttonHeight opYoffset=(opYoffset + buttonHeight + midiControlsSpacing) +mcMidiGainText=mcx (opYoffset + 2) 80 kLineHeight +mcMidiGainText.align=kTextAlignRight +mcMidiGainSlider=(prev.x2 + 10) opYoffset sliderWidth sliderHeight +mcMidiGainLabel=(prev.x2 + 10) (opYoffset + 2) 40 kLineHeight +opYoffset=(opYoffset + sliderHeight + midiControlsSpacing) [subtitleControls] sbx=(opXoffset + 10) @@ -537,9 +542,9 @@ use=320xY def_buttonWidth=100 def_buttonHeight=23 def_insetX=20 -def_insetY=(4 + kLineHeight) +def_insetY=10 def_insetW=(w - buttonWidth - 17 * 2 - insetX) -def_insetH=(h - 23 - insetY) +def_insetH=(h - 13 - insetY) def_launcherVersionX=50 def_launcherVersionY=5 def_volumeControlsInAudio=false |