Fix Audio Output Level Attenuator

Example for TG1: F0 43 10 04 1A 00 F7 to F0 43 10 04 1A 07 F7
pull/884/head
probonopd 2 weeks ago
parent 734f4a2ad3
commit b82fb73000
  1. 9
      src/mididevice.cpp
  2. 35
      src/uimenu.cpp

@ -423,9 +423,12 @@ void CMIDIDevice::MIDIMessageHandler (const u8 *pMessage, size_t nLength, unsign
m_pSynthesizer->setBreathControllerTarget(val, nTG);
break;
case 26: // Audio Output Level Attenuator
LOGNOTE("MIDI-SYSEX: Set Audio Output Level Attenuator %d to %d", nTG, val & 0x0F);
// Set Master volume (0-99) for the TG. Scale from 0-7 to what Synth_Dexed uses (0-99)
m_pSynthesizer->setMasterVolume(maplong(val, 0, 7, 0, 1));
{
LOGNOTE("MIDI-SYSEX: Set Audio Output Level Attenuator %d to %d", nTG, val & 0x0F);
// Example: F0 43 10 04 1A 00 F7 to F0 43 10 04 1A 07 F7
unsigned newVolume = (unsigned)((val & 0x07) * 127 / 7);
m_pSynthesizer->SetVolume(newVolume, nTG);
}
break;
case 64: // Master Tuning
LOGNOTE("MIDI-SYSEX: Set Master Tuning");

@ -1098,12 +1098,14 @@ string CUIMenu::GetOPValueString (unsigned nOPParameter, int nValue)
string CUIMenu::ToVolume (int nValue)
{
static const size_t MaxChars = CConfig::LCDColumns-2;
char VolumeBar[MaxChars+1];
memset (VolumeBar, 0xFF, sizeof VolumeBar); // 0xFF is the block character
VolumeBar[nValue * MaxChars / 127] = '\0';
return VolumeBar;
constexpr size_t NumSquares = 14;
char VolumeBar[NumSquares + 1];
size_t filled = (nValue * NumSquares + 63) / 127;
for (size_t i = 0; i < NumSquares; ++i) {
VolumeBar[i] = (i < filled) ? (char)0xFF : '.';
}
VolumeBar[NumSquares] = '\0';
return VolumeBar;
}
string CUIMenu::ToPan (int nValue)
@ -1394,11 +1396,11 @@ void CUIMenu::PgmUpDownHandler (TMenuEvent Event)
|| voiceName == "----------"
|| voiceName == "~~~~~~~~~~" )
{
if (Event == MenuEventPgmUp) {
PgmUpDownHandler (MenuEventPgmUp);
if (Event == MenuEventStepUp) {
PgmUpDownHandler (MenuEventStepUp);
}
if (Event == MenuEventPgmDown) {
PgmUpDownHandler (MenuEventPgmDown);
if (Event == MenuEventStepDown) {
PgmUpDownHandler (MenuEventStepDown);
}
}
}
@ -2041,6 +2043,15 @@ void CUIMenu::EditMasterVolume(CUIMenu *pUIMenu, TMenuEvent Event)
default:
return;
}
std::string valueStr = ToVolume(pUIMenu->m_pMiniDexed->GetMasterVolume127());
pUIMenu->m_pUI->DisplayWrite("Master Volume", "", valueStr.c_str(), nValue > rParam.Minimum, nValue < rParam.Maximum);
unsigned lcdCols = pUIMenu->m_pConfig->GetLCDColumns();
unsigned barLen = (lcdCols > 2) ? lcdCols - 2 : 0;
std::string valueStr(barLen, '.');
if (barLen > 0) {
size_t filled = (nValue * barLen + 63) / 127;
for (unsigned i = 0; i < barLen; ++i) {
if (i < filled) valueStr[i] = (char)0xFF;
}
}
// Do NOT add < or > here; let DisplayWrite handle it
pUIMenu->m_pUI->DisplayWrite("Master Volume", "", valueStr.c_str(), true, true);
}

Loading…
Cancel
Save