gearmulator

Emulation of classic VA synths of the late 90s/2000s that are based on Motorola 56300 family DSPs
Log | Files | Refs | Submodules | README | LICENSE

commit e010e0138b3c92f0b714bd35be1a2cf2d1a38845
parent 208337feb73d308e8f6c4b6caf89c519eaa7fbaa
Author: dsp56300 <dsp56300@users.noreply.github.com>
Date:   Tue,  6 Aug 2024 22:57:51 +0200

implement temporary override text

Diffstat:
Msource/nord/n2x/n2xJucePlugin/n2xLcd.cpp | 36++++++++++++++++++++++++++++++------
Msource/nord/n2x/n2xJucePlugin/n2xLcd.h | 5+++++
2 files changed, 35 insertions(+), 6 deletions(-)

diff --git a/source/nord/n2x/n2xJucePlugin/n2xLcd.cpp b/source/nord/n2x/n2xJucePlugin/n2xLcd.cpp @@ -32,7 +32,9 @@ namespace n2xJucePlugin if(m_text == _text) return; m_text = _text; - onTextChanged(); + + if(m_overrideText.empty()) + onTextChanged(); } void Lcd::timerCallback() @@ -42,14 +44,14 @@ namespace n2xJucePlugin switch(m_animState) { case AnimState::Start: - if(updateClippedText(m_text, ++m_currentOffset)) + if(updateClippedText(getCurrentText(), ++m_currentOffset)) { m_animState = AnimState::Scroll; startTimer(g_animDelayScroll); } break; case AnimState::Scroll: - if(!updateClippedText(m_text, ++m_currentOffset)) + if(!updateClippedText(getCurrentText(), ++m_currentOffset)) { m_animState = AnimState::End; startTimer(g_animDelayEnd); @@ -62,7 +64,7 @@ namespace n2xJucePlugin case AnimState::End: m_animState = AnimState::Start; m_currentOffset = 0; - updateClippedText(m_text, m_currentOffset); + updateClippedText(getCurrentText(), m_currentOffset); startTimer(g_animDelayStart); break; } @@ -73,6 +75,21 @@ namespace n2xJucePlugin onProgramChanged(); } + void Lcd::setOverrideText(const std::string& _text) + { + std::string t = _text; + if(!t.empty()) + { + while(t.size() < 3) + t = ' ' + t; + } + + if(t == m_overrideText) + return; + m_overrideText = t; + onTextChanged(); + } + void Lcd::setClippedText(const std::string& _text) { if(m_clippedText == _text) @@ -128,9 +145,9 @@ namespace n2xJucePlugin void Lcd::onTextChanged() { - updateClippedText(m_text, 0); + updateClippedText(getCurrentText(), 0); - if(m_clippedText != m_text) + if(m_clippedText != getCurrentText()) { startAnim(); } @@ -144,4 +161,11 @@ namespace n2xJucePlugin { setText(m_editor.getCurrentPatchName()); } + + const std::string& Lcd::getCurrentText() const + { + if(m_overrideText.empty()) + return m_text; + return m_overrideText; + } } diff --git a/source/nord/n2x/n2xJucePlugin/n2xLcd.h b/source/nord/n2x/n2xJucePlugin/n2xLcd.h @@ -33,6 +33,8 @@ namespace n2xJucePlugin void updatePatchName(); + void setOverrideText(const std::string& _text); + private: void setClippedText(const std::string& _text); static std::string substring(const std::string& _text, uint32_t _offset, uint32_t _len); @@ -40,6 +42,7 @@ namespace n2xJucePlugin void startAnim(); void onTextChanged(); void onProgramChanged(); + const std::string& getCurrentText() const; Editor& m_editor; juce::Label* m_label; @@ -48,6 +51,8 @@ namespace n2xJucePlugin uint32_t m_currentOffset = 0; AnimState m_animState = AnimState::Start; + std::string m_overrideText; + pluginLib::EventListener<> m_onProgramChanged; pluginLib::EventListener<uint8_t> m_onPartChanged; };