   // Read encoder switch
   ClickEncoder::Button button = encoder.getButton();
   if (button == ClickEncoder::Clicked) {
-    if (state == PLAY_SELECTED) {
-      onPause (true);
-    } else if (state == PLAY_PAUSED) {
-      onPause (false);
+    switch (state) {
+      case PLAY_SELECTED: onPause(true); break;
+      case PLAY_PAUSED:   onPause(false); break;
+    }
+  } else if (button == ClickEncoder::Held) {
+    switch (state) {
+      case PLAY_SELECTED:
+      case PLAY_PAUSED:
+        Serial.print("Stopped #"); Serial.println(playingAlbum);
+        blinkLED(BLUE_LED_PIN);
+        stopPlaying();
+        onStopPlaying();
+      break;
     }
   }
 

    blinkSelected(playingAlbum);
    state = PLAY_SELECTED;
  } else {
    if (album && album.isDirectory()) album.close();
    Serial.print("Ended album #"); Serial.println(playingAlbum);
    onStopPlaying();
  }

    trellis.blinkRate(HT16K33_BLINK_HALFHZ);
    player.pausePlaying(true);
    enableAmplifier(false);
    nextTimeoutTick = millis() + PAUSE_TIMEOUT;
    state = PLAY_PAUSED;
  } else {
    Serial.println("Resume");
    trellis.blinkRate(HT16K33_BLINK_1HZ);
    enableAmplifier(!headset);
    player.pausePlaying(false);
    nextTimeoutTick = 0; // no timeout during playing
    state = PLAY_SELECTED;
  }
}
