Skip to content

Commit 7f21a03

Browse files
committed
UI improvements
1 parent 8538869 commit 7f21a03

File tree

5 files changed

+35
-7
lines changed

5 files changed

+35
-7
lines changed

src/uibuttons.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626
#include "config.h"
2727

2828
#define BUTTONS_UPDATE_NUM_TICKS 100
29-
#define DEBOUNCE_TIME 100
29+
#define DEBOUNCE_TIME 300
3030
#define MAX_GPIO_BUTTONS 9 // 5 UI buttons, 4 Program/TG Select buttons
3131
#define MAX_MIDI_BUTTONS 9
3232
#define MAX_BUTTONS (MAX_GPIO_BUTTONS+MAX_MIDI_BUTTONS)

src/uimenu.cpp

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -716,6 +716,11 @@ CUIMenu::CUIMenu (CUserInterface *pUI, CMiniDexed *pMiniDexed)
716716
#endif
717717
}
718718

719+
void CUIMenu::SetStepCount (unsigned StepCount)
720+
{
721+
m_nStepCount = StepCount;
722+
}
723+
719724
void CUIMenu::EventHandler (TMenuEvent Event)
720725
{
721726
switch (Event)
@@ -1535,7 +1540,7 @@ void CUIMenu::EditTGMidiFXParameter (CUIMenu *pUIMenu, TMenuEvent Event)
15351540
case MenuEventPressAndStepDown:
15361541
nValue -= rParam.Increment * 9;
15371542
case MenuEventStepDown:
1538-
nValue -= rParam.Increment;
1543+
nValue -= rParam.Increment * pUIMenu->m_nStepCount;
15391544
if (nValue < rParam.Minimum)
15401545
{
15411546
nValue = rParam.Minimum;
@@ -1546,7 +1551,7 @@ void CUIMenu::EditTGMidiFXParameter (CUIMenu *pUIMenu, TMenuEvent Event)
15461551
case MenuEventPressAndStepUp:
15471552
nValue += rParam.Increment * 9;
15481553
case MenuEventStepUp:
1549-
nValue += rParam.Increment;
1554+
nValue += rParam.Increment * pUIMenu->m_nStepCount;
15501555
if (nValue > rParam.Maximum)
15511556
{
15521557
nValue = rParam.Maximum;
@@ -1679,7 +1684,7 @@ void CUIMenu::EditTGFXParameter (CUIMenu *pUIMenu, TMenuEvent Event)
16791684
case MenuEventPressAndStepDown:
16801685
nValue -= rParam.Increment * 9;
16811686
case MenuEventStepDown:
1682-
nValue -= rParam.Increment;
1687+
nValue -= rParam.Increment * pUIMenu->m_nStepCount;
16831688
if (nValue < rParam.Minimum)
16841689
{
16851690
nValue = rParam.Minimum;
@@ -1690,7 +1695,7 @@ void CUIMenu::EditTGFXParameter (CUIMenu *pUIMenu, TMenuEvent Event)
16901695
case MenuEventPressAndStepUp:
16911696
nValue += rParam.Increment * 9;
16921697
case MenuEventStepUp:
1693-
nValue += rParam.Increment;
1698+
nValue += rParam.Increment * pUIMenu->m_nStepCount;
16941699
if (nValue > rParam.Maximum)
16951700
{
16961701
nValue = rParam.Maximum;
@@ -1815,7 +1820,7 @@ void CUIMenu::EditSendFXParameter (CUIMenu *pUIMenu, TMenuEvent Event)
18151820
case MenuEventPressAndStepDown:
18161821
nValue -= rParam.Increment * 9;
18171822
case MenuEventStepDown:
1818-
nValue -= rParam.Increment;
1823+
nValue -= rParam.Increment * pUIMenu->m_nStepCount;
18191824
if (nValue < rParam.Minimum)
18201825
{
18211826
nValue = rParam.Minimum;
@@ -1826,7 +1831,7 @@ void CUIMenu::EditSendFXParameter (CUIMenu *pUIMenu, TMenuEvent Event)
18261831
case MenuEventPressAndStepUp:
18271832
nValue += rParam.Increment * 9;
18281833
case MenuEventStepUp:
1829-
nValue += rParam.Increment;
1834+
nValue += rParam.Increment * pUIMenu->m_nStepCount;
18301835
if (nValue > rParam.Maximum)
18311836
{
18321837
nValue = rParam.Maximum;

src/uimenu.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ class CUIMenu
5656
CUIMenu (CUserInterface *pUI, CMiniDexed *pMiniDexed);
5757

5858
void EventHandler (TMenuEvent Event);
59+
void SetStepCount (unsigned StepCount);
5960

6061
private:
6162
typedef void TMenuHandler (CUIMenu *pUIMenu, TMenuEvent Event);
@@ -224,6 +225,7 @@ class CUIMenu
224225
unsigned m_nSelectedPerformanceID =0;
225226
unsigned m_nSelectedPerformanceBankID =0;
226227
bool m_bSplashShow=false;
228+
int m_nStepCount = 1;
227229

228230
};
229231

src/userinterface.cpp

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -218,6 +218,8 @@ bool CUserInterface::Initialize (void)
218218
return false;
219219
}
220220

221+
m_nRotaryEncoderLastReadTime = 0;
222+
m_nRotaryEncoderCounter = 0;
221223
m_pRotaryEncoder->RegisterEventHandler (EncoderEventStub, this);
222224

223225
LOGDBG ("Rotary encoder initialized");
@@ -310,6 +312,7 @@ void CUserInterface::LCDWrite (const char *pString)
310312

311313
void CUserInterface::EncoderEventHandler (CKY040::TEvent Event)
312314
{
315+
unsigned nReadTime = CTimer::GetClockTicks ();
313316
switch (Event)
314317
{
315318
case CKY040::EventSwitchDown:
@@ -321,6 +324,12 @@ void CUserInterface::EncoderEventHandler (CKY040::TEvent Event)
321324
break;
322325

323326
case CKY040::EventClockwise:
327+
if (nReadTime - m_nRotaryEncoderLastReadTime > 100000 || m_nRotaryEncoderCounter < 0) {
328+
m_nRotaryEncoderCounter = 0;
329+
}
330+
m_nRotaryEncoderLastReadTime = nReadTime;
331+
m_nRotaryEncoderCounter++;
332+
m_Menu.SetStepCount(std::max((m_nRotaryEncoderCounter / 6) * 5, 1));
324333
if (m_bSwitchPressed) {
325334
// We must reset the encoder switch button to prevent events from being
326335
// triggered after the encoder is rotated
@@ -334,6 +343,12 @@ void CUserInterface::EncoderEventHandler (CKY040::TEvent Event)
334343
break;
335344

336345
case CKY040::EventCounterclockwise:
346+
if (nReadTime - m_nRotaryEncoderLastReadTime > 100000 || m_nRotaryEncoderCounter > 0) {
347+
m_nRotaryEncoderCounter = 0;
348+
}
349+
m_nRotaryEncoderLastReadTime = nReadTime;
350+
m_nRotaryEncoderCounter--;
351+
m_Menu.SetStepCount(std::max(((m_nRotaryEncoderCounter * -1) / 6) * 5, 1));
337352
if (m_bSwitchPressed) {
338353
m_pUIButtons->ResetButton(m_pConfig->GetButtonPinShortcut());
339354
m_Menu.EventHandler(CUIMenu::MenuEventPressAndStepDown);
@@ -370,10 +385,12 @@ void CUserInterface::UIButtonsEventHandler (CUIButton::BtnEvent Event)
370385
switch (Event)
371386
{
372387
case CUIButton::BtnEventPrev:
388+
m_Menu.SetStepCount(1);
373389
m_Menu.EventHandler (CUIMenu::MenuEventStepDown);
374390
break;
375391

376392
case CUIButton::BtnEventNext:
393+
m_Menu.SetStepCount(1);
377394
m_Menu.EventHandler (CUIMenu::MenuEventStepUp);
378395
break;
379396

@@ -433,6 +450,7 @@ void CUserInterface::UIMIDICmdHandler (unsigned nMidiCh, unsigned nMidiCmd, unsi
433450

434451
if (m_pUIButtons)
435452
{
453+
m_Menu.SetStepCount(1);
436454
m_pUIButtons->BtnMIDICmdHandler (nMidiCmd, nMidiData1, nMidiData2);
437455
}
438456
}

src/userinterface.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
#include <circle/writebuffer.h>
3232
#include <circle/i2cmaster.h>
3333
#include <circle/spimaster.h>
34+
#include <circle/timer.h>
3435

3536
class CMiniDexed;
3637

@@ -86,6 +87,8 @@ class CUserInterface
8687

8788
CKY040 *m_pRotaryEncoder;
8889
bool m_bSwitchPressed;
90+
unsigned m_nRotaryEncoderLastReadTime;
91+
int m_nRotaryEncoderCounter=0;
8992

9093
CUIMenu m_Menu;
9194
};

0 commit comments

Comments
 (0)