commit f94fa5de611e636a14f41d1481c04c12bea6267f
parent b2cd800a8a4d6466fd5aaa5e6cb37d9efc03a9ae
Author: dsp56300 <dsp56300@users.noreply.github.com>
Date: Sun, 28 Jul 2024 21:39:52 +0200
fix erratic front panel pot behaviour because targeted pot for read was not updated while LCD latch was high
Diffstat:
1 file changed, 20 insertions(+), 20 deletions(-)
diff --git a/source/nord/n2x/n2xLib/n2xfrontpanel.cpp b/source/nord/n2x/n2xLib/n2xfrontpanel.cpp
@@ -24,15 +24,16 @@ namespace n2x
switch (knobType)
{
- case KnobType::PitchBend:
- case KnobType::ModWheel: return 0; // pretend we're a rack unit
+ case KnobType::Invalid: return 0;
+ case KnobType::PitchBend: return 0;
+ case KnobType::ModWheel: return 0; // pretend we're a rack unit
case KnobType::MasterVol: return 0xff;
case KnobType::AmpGain: return 0xff;
-/* case KnobType::Osc1Fm: return 0;
+ case KnobType::Osc1Fm: return 0;
case KnobType::Porta: return 0;
- case KnobType::Lfo2Rate: return 0x20;
- case KnobType::Lfo1Rate: return 0x20;
+ case KnobType::Lfo2Rate: return 0x0;
+ case KnobType::Lfo1Rate: return 0x0;
case KnobType::ModEnvAmt: return 0;
case KnobType::ModEnvD: return 0;
case KnobType::ModEnvA: return 0;
@@ -40,22 +41,22 @@ namespace n2x
case KnobType::FilterFreq: return 0xff;
case KnobType::FilterEnvA: return 0;
case KnobType::AmpEnvA: return 0;
- case KnobType::OscMix: return 0x80;
- case KnobType::Osc2Fine: return 0x80;
- case KnobType::Lfo1Amount: return 0;
+ case KnobType::OscMix: return 0x7f;
+ case KnobType::Osc2Fine: return 0x7f;
+ case KnobType::Lfo1Amount: return 0x0f;
case KnobType::OscPW: return 0x40;
- case KnobType::AmpGain: return 0xff;
case KnobType::FilterEnvR: return 0x30;
- case KnobType::AmpEnvR: return 0x30;
+ case KnobType::AmpEnvR: return 0x90;
case KnobType::FilterEnvAmt: return 0;
- case KnobType::FilterEnvS: return 0xff;
- case KnobType::AmpEnvS: return 0xff;
+ case KnobType::FilterEnvS: return 0x7f;
+ case KnobType::AmpEnvS: return 0x7f;
case KnobType::FilterReso: return 0x10;
case KnobType::FilterEnvD: return 0;
- case KnobType::ExpPedal: return 0;
+ case KnobType::ExpPedal: return 0x0;
case KnobType::Lfo2Amount: return 0;
- case KnobType::Osc2Semi: return 0x80;
-*/ default:
+ case KnobType::Osc2Semi: return 0x7f;
+ default:
+ assert(false);
return 0x80;
}
}
@@ -75,16 +76,15 @@ namespace n2x
break;
case g_frontPanelAddressCS6 + 0xa:
m_ledLatch10 = _val;
+
+// LOG("Read pot " << HEXN((_val & 0x7f), 2));
+ m_selectedKnob = static_cast<KnobType>(_val & 0x7f);
+
if(m_ledLatch10 & (1<<7))
{
m_lcds[2] = m_ledLatch8;
printLCD();
}
- else
- {
-// LOG("Read pot " << HEXN(_val, 2));
- m_selectedKnob = static_cast<KnobType>(_val);
- }
break;
case g_frontPanelAddressCS6 + 0xc:
{