diff --git a/UIManager.cpp b/UIManager.cpp index 476c8c6..6f53534 100644 --- a/UIManager.cpp +++ b/UIManager.cpp @@ -348,7 +348,7 @@ void UIManager::updateLeds(const Step sequence[][NUM_STEPS], int playbackStep, b const uint32_t COLOR_PLAYHEAD = pixels.Color(0, 255, 0); const uint32_t COLOR_PLAYHEAD_DIM = pixels.Color(0, 32, 0); const uint32_t COLOR_MUTED_PLAYHEAD = pixels.Color(0, 0, 255); - const uint32_t COLOR_CURSOR = pixels.Color(255, 255, 255); + const uint32_t COLOR_CURSOR = pixels.Color(255, 100, 100); const uint32_t COLOR_CURSOR_DIM = pixels.Color(32, 0, 0); if(playMode == MODE_POLY) { @@ -426,6 +426,39 @@ void UIManager::updateLeds(const Step sequence[][NUM_STEPS], int playbackStep, b } for(int i=0; i<4; i++) pixels.setPixelColor(getPixelIndex(x, yBase + i), c[i]); } + + // --- Overview of all tracks on bottom 4 rows --- + for(int t=0; t= currentTrackSteps) continue; + + uint32_t pixelColor = 0; + + // Background for active track + if (t == selectedTrack) { + pixelColor = COLOR_CURSOR_DIM; + } + else if (sequence[t][s].note != -1) // Note + { + pixelColor = getNoteColor(sequence[t][s].note, !sequence[t][s].accent); + } + + // Playhead + if (isPlaying && (s == (playbackStep % currentTrackSteps))) { + if (t == selectedTrack) { + pixelColor = COLOR_CURSOR; + } else if (trackMute[t]) { + pixelColor = COLOR_MUTED_PLAYHEAD; + } else { + pixelColor = COLOR_PLAYHEAD; + } + } + + pixels.setPixelColor(getPixelIndex(s, row), pixelColor); + } + } } if (sequenceChangeScheduled && (millis() / 125) % 2) pixels.setPixelColor(NUM_PIXELS - 1, pixels.Color(127, 50, 0)); pixels.show();