From d1e166a34e035e031abd0c8ccf750c231dcb4604 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Thu, 10 Feb 2022 03:15:39 -0500 Subject: [PATCH] add a little visual to channel names --- src/engine/engine.cpp | 10 ++++++++++ src/engine/engine.h | 1 + src/engine/playback.cpp | 3 +++ src/gui/gui.cpp | 10 ++++++++-- src/gui/gui.h | 2 ++ 5 files changed, 24 insertions(+), 2 deletions(-) diff --git a/src/engine/engine.cpp b/src/engine/engine.cpp index bd28d833c..24f553ac5 100644 --- a/src/engine/engine.cpp +++ b/src/engine/engine.cpp @@ -4911,6 +4911,9 @@ void DivEngine::play() { } else { stepPlay=0; } + for (int i=0; i>8)); + keyHit[i]=true; } } chan[i].doNote=false; @@ -871,6 +872,7 @@ bool DivEngine::nextTick(bool noAccum) { if (note.on) { dispatchCmd(DivCommand(DIV_CMD_INSTRUMENT,note.channel,note.ins,1)); dispatchCmd(DivCommand(DIV_CMD_NOTE_ON,note.channel,note.note)); + keyHit[note.channel]=true; chan[note.channel].noteOnInhibit=true; } else { dispatchCmd(DivCommand(DIV_CMD_NOTE_OFF,note.channel)); @@ -901,6 +903,7 @@ bool DivEngine::nextTick(bool noAccum) { if (--chan[i].retrigTick<0) { chan[i].retrigTick=chan[i].retrigSpeed-1; dispatchCmd(DivCommand(DIV_CMD_NOTE_ON,i,DIV_NOTE_NULL)); + keyHit[i]=true; } } if (chan[i].volSpeed!=0) { diff --git a/src/gui/gui.cpp b/src/gui/gui.cpp index a32c10882..ab82f1358 100644 --- a/src/gui/gui.cpp +++ b/src/gui/gui.cpp @@ -3061,9 +3061,15 @@ void FurnaceGUI::drawPattern() { ImVec4 chanHead=muted?uiColors[GUI_COLOR_CHANNEL_MUTED]:uiColors[GUI_COLOR_CHANNEL_FM+e->getChannelType(i)]; ImVec4 chanHeadActive=chanHead; ImVec4 chanHeadHover=chanHead; - chanHead.x*=0.25; chanHead.y*=0.25; chanHead.z*=0.25; + if (e->keyHit[i]) { + keyHit[i]=0.2; + e->keyHit[i]=false; + } + chanHead.x*=0.25+keyHit[i]; chanHead.y*=0.25+keyHit[i]; chanHead.z*=0.25+keyHit[i]; chanHeadActive.x*=0.8; chanHeadActive.y*=0.8; chanHeadActive.z*=0.8; - chanHeadHover.x*=0.4; chanHeadHover.y*=0.4; chanHeadHover.z*=0.4; + chanHeadHover.x*=0.4+keyHit[i]; chanHeadHover.y*=0.4+keyHit[i]; chanHeadHover.z*=0.4+keyHit[i]; + keyHit[i]-=0.02; + if (keyHit[i]<0) keyHit[i]=0; ImGui::PushStyleColor(ImGuiCol_Header,chanHead); ImGui::PushStyleColor(ImGuiCol_HeaderActive,chanHeadActive); ImGui::PushStyleColor(ImGuiCol_HeaderHovered,chanHeadHover); diff --git a/src/gui/gui.h b/src/gui/gui.h index 370254ae8..1e69a5e19 100644 --- a/src/gui/gui.h +++ b/src/gui/gui.h @@ -342,6 +342,8 @@ class FurnaceGUI { std::deque undoHist; std::deque redoHist; + float keyHit[DIV_MAX_CHANS]; + void drawAlgorithm(unsigned char alg, FurnaceGUIFMAlgs algType, const ImVec2& size); void drawFMEnv(unsigned char ar, unsigned char dr, unsigned char d2r, unsigned char rr, unsigned char sl, const ImVec2& size);