Neopixel prevents for loop

Hi,

I wrote a code using this library (https://dev.azure.com/overlording/The%20Last%20Outpost%20Workshop/_git/MP3-TF-16P) to control a DFmini player and a sound sensor to control 24 LEDs based on the sound. However, the for loop in the code doesn't work when the neo pixels are added (the section of the code that is no commented out of the program). When the neo pixels aren't registered in the code the for loop works great and the songs on de SD card play automatically in order or skip a song when the first capacitive sensor is touched. But when I add the neo pixels I can skip songs but the songs don't run automatically anymore. Reading the i value on the serial monitor also only displays "1" even when the song has finished and it should be giving "2". What might interfere with the for loop that prevents it from looping? The code is added below.

Thank you in advance!!

#include <mp3tf16p.h>
#include <Wire.h>
#include <Adafruit_CAP1188.h>
#include <Adafruit_NeoPixel.h>

MP3Player mp3(10, 11);
int volumeLevel;

Adafruit_CAP1188 cap = Adafruit_CAP1188();
#define CAP1188_SENSITIVITY 0x6F
uint8_t prevTouch1 = 0;
uint8_t prevTouch2 = 0;
int x = 1;

#define PIN 6
#define NUMPIXELS 24
Adafruit_NeoPixel pixels(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
uint32_t black = pixels.Color(0, 0, 0);
int sound = 2;

void setup(void)
{
  Serial.begin(9600);
  mp3.initialize();

  if (!cap.begin()) {
    while (1);
  }

  pinMode(sound, INPUT);
  pixels.begin();
  pixels.setBrightness(50);
}

void loop(void)
{
  int volumelevel = 12;
  int trackCount = mp3.player.readFileCounts();


  for (int i = 1; i <= trackCount ; i++)
  {
    mp3.playTrackNumber(i, volumelevel, false);

    while (!mp3.playCompleted()) {
      int soundStatus = digitalRead(sound);
      uint8_t touched = cap.touched();
      if (touched != prevTouch1) {
        if (touched & 0x01) {
          mp3.playTrackNumber((i + 1), volumelevel, false);
          i ++;
        }
        prevTouch1 = touched;
      }
      /*if (touched != prevTouch2) {
        if (touched & 0x02) {
          x ++;
          if (x == 3) {
            x = 1;
          }
        }
        prevTouch2 = touched;
      }

      if (x == 1) {
        if (soundStatus == 0) {
          pixels.clear();
          pixels.setPixelColor(0, pixels.Color(255, 0, 0));
          pixels.setPixelColor(12, pixels.Color(255, 0, 0));
          pixels.setPixelColor(1, pixels.Color(255, 127, 0));
          pixels.setPixelColor(23, pixels.Color(255, 127, 0));
          pixels.setPixelColor(2, pixels.Color(255, 255, 0));
          pixels.setPixelColor(22, pixels.Color(255, 255, 0));
          pixels.setPixelColor(3, pixels.Color(127, 255, 0));
          pixels.setPixelColor(21, pixels.Color(127, 255, 0));
          pixels.setPixelColor(4, pixels.Color(0, 255, 0));
          pixels.setPixelColor(20, pixels.Color(0, 255, 0));
          pixels.setPixelColor(5, pixels.Color(0, 255, 127));
          pixels.setPixelColor(19, pixels.Color(0, 255, 127));
          pixels.setPixelColor(6, pixels.Color(0, 255, 255));
          pixels.setPixelColor(18, pixels.Color(0, 255, 255));
          pixels.setPixelColor(7, pixels.Color(0, 127, 255));
          pixels.setPixelColor(17, pixels.Color(0, 127, 255));
          pixels.setPixelColor(8, pixels.Color(0, 0, 255));
          pixels.setPixelColor(16, pixels.Color(0, 0, 255));
          pixels.setPixelColor(9, pixels.Color(127, 0, 255));
          pixels.setPixelColor(15, pixels.Color(127, 0, 255));
          pixels.setPixelColor(10, pixels.Color(255, 0, 255));
          pixels.setPixelColor(14, pixels.Color(255, 0, 255));
          pixels.setPixelColor(11, pixels.Color(255, 0, 127));
          pixels.setPixelColor(13, pixels.Color(255, 0, 127));
          pixels.show();
        }

        else {
          pixels.clear();
          pixels.fill(black, 0, 12);
          pixels.show();
        }
      }

      else {
        pixels.clear();
        pixels.fill(black, 0, 12);
        pixels.show();
      }*/
    }     
  }
  mp3.serialPrintStatus(MP3_ALL_MESSAGE);
}

Could it be that?

1 Like

Thank you for your answer!

Idk if it that because it works without the neo pixel code piece or how it would interfere with the loop. But maybe something prevents the code from reading the number of files on the SD card?

1 Like

add serial printing to make visible what the code is really doing.
Do you know how to add serial printing to the code?

// MACRO-START * MACRO-START * MACRO-START * MACRO-START * MACRO-START * MACRO-START *
// a detailed explanation how these macros work is given in this tutorial
// https://forum.arduino.cc/t/comfortable-serial-debug-output-short-to-write-fixed-text-name-and-content-of-any-variable-code-example/888298

#define dbg(myFixedText, variableName) \
  Serial.print( F(#myFixedText " "  #variableName"=") ); \
  Serial.println(variableName);

#define dbgi(myFixedText, variableName,timeInterval) \
  { \
    static unsigned long intervalStartTime; \
    if ( millis() - intervalStartTime >= timeInterval ){ \
      intervalStartTime = millis(); \
      Serial.print( F(#myFixedText " "  #variableName"=") ); \
      Serial.println(variableName); \
    } \
  }

#define dbgc(myFixedText, variableName) \
  { \
    static long lastState; \
    if ( lastState != variableName ){ \
      Serial.print( F(#myFixedText " "  #variableName" changed from ") ); \
      Serial.print(lastState); \
      Serial.print( F(" to ") ); \
      Serial.println(variableName); \
      lastState = variableName; \
    } \
  }

#define dbgcf(myFixedText, variableName) \
  { \
    static float lastState; \
    if ( lastState != variableName ){ \
      Serial.print( F(#myFixedText " "  #variableName" changed from ") ); \
      Serial.print(lastState); \
      Serial.print( F(" to ") ); \
      Serial.println(variableName); \
      lastState = variableName; \
    } \
  }
// MACRO-END * MACRO-END * MACRO-END * MACRO-END * MACRO-END * MACRO-END * MACRO-END *


#include <mp3tf16p.h>
#include <Wire.h>
#include <Adafruit_CAP1188.h>
#include <Adafruit_NeoPixel.h>

MP3Player mp3(10, 11);
int volumeLevel;

Adafruit_CAP1188 cap = Adafruit_CAP1188();
#define CAP1188_SENSITIVITY 0x6F
uint8_t prevTouch1 = 0;
uint8_t prevTouch2 = 0;
int x = 1;

#define PIN 6
#define NUMPIXELS 24
Adafruit_NeoPixel pixels(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
uint32_t black = pixels.Color(0, 0, 0);
int sound = 2;

void setup(void)
{
  Serial.begin(9600);
  mp3.initialize();

  if (!cap.begin()) {
    while (1);
  }

  pinMode(sound, INPUT);
  pixels.begin();
  pixels.setBrightness(50);
}

void loop(void)
{
  int volumelevel = 12;
  int trackCount = mp3.player.readFileCounts();

  dbgi("01", trackCount, 1000);
  for (int i = 1; i <= trackCount ; i++) {
    dbgc("02", i);
    mp3.playTrackNumber(i, volumelevel, false);

    while (!mp3.playCompleted()) {
      int soundStatus = digitalRead(sound);
      dbgi("03", soundStatus, 1000);

      uint8_t touched = cap.touched();
      if (touched != prevTouch1) {
        if (touched & 0x01) {
          mp3.playTrackNumber((i + 1), volumelevel, false);
          i ++;
        }
        prevTouch1 = touched;
      }

      if (touched != prevTouch2) {
        if (touched & 0x02) {
          x ++;
          if (x == 3) {
            x = 1;
          }
        }
        prevTouch2 = touched;
      }

      if (x == 1) {
        dbgi("x==1", x, 1000);
        if (soundStatus == 0) {
          dbgi("soundStatus == 0", soundStatus, 1000);
          pixels.clear();
          pixels.setPixelColor(0, pixels.Color(255, 0, 0));
          pixels.setPixelColor(12, pixels.Color(255, 0, 0));
          pixels.setPixelColor(1, pixels.Color(255, 127, 0));
          pixels.setPixelColor(23, pixels.Color(255, 127, 0));
          pixels.setPixelColor(2, pixels.Color(255, 255, 0));
          pixels.setPixelColor(22, pixels.Color(255, 255, 0));
          pixels.setPixelColor(3, pixels.Color(127, 255, 0));
          pixels.setPixelColor(21, pixels.Color(127, 255, 0));
          pixels.setPixelColor(4, pixels.Color(0, 255, 0));
          pixels.setPixelColor(20, pixels.Color(0, 255, 0));
          pixels.setPixelColor(5, pixels.Color(0, 255, 127));
          pixels.setPixelColor(19, pixels.Color(0, 255, 127));
          pixels.setPixelColor(6, pixels.Color(0, 255, 255));
          pixels.setPixelColor(18, pixels.Color(0, 255, 255));
          pixels.setPixelColor(7, pixels.Color(0, 127, 255));
          pixels.setPixelColor(17, pixels.Color(0, 127, 255));
          pixels.setPixelColor(8, pixels.Color(0, 0, 255));
          pixels.setPixelColor(16, pixels.Color(0, 0, 255));
          pixels.setPixelColor(9, pixels.Color(127, 0, 255));
          pixels.setPixelColor(15, pixels.Color(127, 0, 255));
          pixels.setPixelColor(10, pixels.Color(255, 0, 255));
          pixels.setPixelColor(14, pixels.Color(255, 0, 255));
          pixels.setPixelColor(11, pixels.Color(255, 0, 127));
          pixels.setPixelColor(13, pixels.Color(255, 0, 127));
          pixels.show();
        }

        else {
          dbgi("else soundStatus", soundStatus, 1000);

          pixels.clear();
          pixels.fill(black, 0, 12);
          pixels.show();
        }
      }

      else {
        dbgi("else x !=1",x,1000);

        pixels.clear();
        pixels.fill(black, 0, 12);
        pixels.show();
      }
    }
  }
  mp3.serialPrintStatus(MP3_ALL_MESSAGE);
}
1 Like


This is the output it keeps giving even though a sound has finished and it should automatically go to the next. I think the loop might be stuck around the sensor input. In the sense that the for loop doesn't continue and the i isn't added.

When I comment out lines 64 to 105 (the neo-pixel part) the code works too. So I guess sending info to the LEDs is what prevents the loop from happening?

NO! Very very unlikely

You should post serial output as a code-section not as a screenshot
too less information

The line-numbers 64 to 105 are too unprecise as description. Because they don't match your posted code and they don't match my code to be the neopixel-part

Additional I can't see where exactly you commented out.

This is the reason why you should always post your complete sketch new. Even if this means there are three sketches per post.

Trying to be fast in code-development will always turn out to slow things down
Especcially when communication over a userforum.

post your complete sketch with neopixel active
post the serial output with neopixel active as a code-section

post your complete sketch with neopixel commented out
post the serial output with neopixel commented out as a code-section

best regards Stefan

1 Like

Thank you for your answer!

You should post serial output as a code-section not as a screenshot
too less information

As the output was the same for the entire sound I figured to post a screenshot to save you 3 minutes of serial output.

But this code:

// MACRO-START * MACRO-START * MACRO-START * MACRO-START * MACRO-START * MACRO-START *
// a detailed explanation how these macros work is given in this tutorial
// https://forum.arduino.cc/t/comfortable-serial-debug-output-short-to-write-fixed-text-name-and-content-of-any-variable-code-example/888298

#define dbg(myFixedText, variableName) \
  Serial.print( F(#myFixedText " "  #variableName"=") ); \
  Serial.println(variableName);

#define dbgi(myFixedText, variableName,timeInterval) \
  { \
    static unsigned long intervalStartTime; \
    if ( millis() - intervalStartTime >= timeInterval ){ \
      intervalStartTime = millis(); \
      Serial.print( F(#myFixedText " "  #variableName"=") ); \
      Serial.println(variableName); \
    } \
  }

#define dbgc(myFixedText, variableName) \
  { \
    static long lastState; \
    if ( lastState != variableName ){ \
      Serial.print( F(#myFixedText " "  #variableName" changed from ") ); \
      Serial.print(lastState); \
      Serial.print( F(" to ") ); \
      Serial.println(variableName); \
      lastState = variableName; \
    } \
  }

#define dbgcf(myFixedText, variableName) \
  { \
    static float lastState; \
    if ( lastState != variableName ){ \
      Serial.print( F(#myFixedText " "  #variableName" changed from ") ); \
      Serial.print(lastState); \
      Serial.print( F(" to ") ); \
      Serial.println(variableName); \
      lastState = variableName; \
    } \
  }
// MACRO-END * MACRO-END * MACRO-END * MACRO-END * MACRO-END * MACRO-END * MACRO-END *


#include <mp3tf16p.h>
#include <Wire.h>
#include <Adafruit_CAP1188.h>
#include <Adafruit_NeoPixel.h>

MP3Player mp3(10, 11);
int volumeLevel;

Adafruit_CAP1188 cap = Adafruit_CAP1188();
#define CAP1188_SENSITIVITY 0x6F
uint8_t prevTouch1 = 0;
uint8_t prevTouch2 = 0;
int x = 1;

#define PIN 6
#define NUMPIXELS 24
Adafruit_NeoPixel pixels(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
uint32_t black = pixels.Color(0, 0, 0);
int sound = 2;

void setup(void)
{
  Serial.begin(9600);
  mp3.initialize();

  if (!cap.begin()) {
    while (1);
  }

  pinMode(sound, INPUT);
  pixels.begin();
  pixels.setBrightness(50);
}

void loop(void)
{
  int volumelevel = 12;
  int trackCount = mp3.player.readFileCounts();

  dbgi("01", trackCount, 1000);
  for (int i = 1; i <= trackCount ; i++) {
    dbgc("02", i);
    mp3.playTrackNumber(i, volumelevel, false);

    while (!mp3.playCompleted()) {
      int soundStatus = digitalRead(sound);
      dbgi("03", soundStatus, 1000);

      uint8_t touched = cap.touched();
      if (touched != prevTouch1) {
        if (touched & 0x01) {
          mp3.playTrackNumber((i + 1), volumelevel, false);
          i ++;
        }
        prevTouch1 = touched;
      }

      if (touched != prevTouch2) {
        if (touched & 0x02) {
          x ++;
          if (x == 3) {
            x = 1;
          }
        }
        prevTouch2 = touched;
      }

      if (x == 1) {
        dbgi("x==1", x, 1000);
        if (soundStatus == 0) {
          dbgi("soundStatus == 0", soundStatus, 1000);
          pixels.clear();
          pixels.setPixelColor(0, pixels.Color(255, 0, 0));
          pixels.setPixelColor(12, pixels.Color(255, 0, 0));
          pixels.setPixelColor(1, pixels.Color(255, 127, 0));
          pixels.setPixelColor(23, pixels.Color(255, 127, 0));
          pixels.setPixelColor(2, pixels.Color(255, 255, 0));
          pixels.setPixelColor(22, pixels.Color(255, 255, 0));
          pixels.setPixelColor(3, pixels.Color(127, 255, 0));
          pixels.setPixelColor(21, pixels.Color(127, 255, 0));
          pixels.setPixelColor(4, pixels.Color(0, 255, 0));
          pixels.setPixelColor(20, pixels.Color(0, 255, 0));
          pixels.setPixelColor(5, pixels.Color(0, 255, 127));
          pixels.setPixelColor(19, pixels.Color(0, 255, 127));
          pixels.setPixelColor(6, pixels.Color(0, 255, 255));
          pixels.setPixelColor(18, pixels.Color(0, 255, 255));
          pixels.setPixelColor(7, pixels.Color(0, 127, 255));
          pixels.setPixelColor(17, pixels.Color(0, 127, 255));
          pixels.setPixelColor(8, pixels.Color(0, 0, 255));
          pixels.setPixelColor(16, pixels.Color(0, 0, 255));
          pixels.setPixelColor(9, pixels.Color(127, 0, 255));
          pixels.setPixelColor(15, pixels.Color(127, 0, 255));
          pixels.setPixelColor(10, pixels.Color(255, 0, 255));
          pixels.setPixelColor(14, pixels.Color(255, 0, 255));
          pixels.setPixelColor(11, pixels.Color(255, 0, 127));
          pixels.setPixelColor(13, pixels.Color(255, 0, 127));
          pixels.show();
        }

        else {
          dbgi("else soundStatus", soundStatus, 1000);

          pixels.clear();
          pixels.fill(black, 0, 12);
          pixels.show();
        }
      }

      else {
        dbgi("else x !=1",x,1000);

        pixels.clear();
        pixels.fill(black, 0, 12);
        pixels.show();
      }
    }
  }
  mp3.serialPrintStatus(MP3_ALL_MESSAGE);
}

Generates the serial output below:

21:39:12.772 -> "else soundStatus" soundStatus=1
21:39:13.701 -> "03" soundStatus=1
21:39:13.701 -> "x==1" x=1
21:39:13.748 -> "else soundStatus" soundStatus=1
21:39:14.728 -> "03" soundStatus=1
21:39:14.728 -> "x==1" x=1
21:39:14.774 -> "else soundStatus" soundStatus=1
21:39:15.706 -> "03" soundStatus=1
21:39:15.706 -> "x==1" x=1
21:39:15.753 -> "else soundStatus" soundStatus=1
21:39:16.731 -> "03" soundStatus=1
21:39:16.731 -> "x==1" x=1
21:39:16.778 -> "else soundStatus" soundStatus=1
21:39:17.706 -> "03" soundStatus=1
21:39:17.706 -> "x==1" x=1
21:39:17.752 -> "else soundStatus" soundStatus=1
21:39:18.748 -> "03" soundStatus=1
21:39:18.748 -> "x==1" x=1
21:39:18.748 -> "else soundStatus" soundStatus=1
21:39:19.701 -> "soundStatus == 0" soundStatus=0
21:39:19.747 -> "03" soundStatus=1
21:39:19.747 -> "x==1" x=1
21:39:19.747 -> "else soundStatus" soundStatus=1
21:39:20.750 -> "03" soundStatus=1
21:39:20.750 -> "x==1" x=1
21:39:20.750 -> "else soundStatus" soundStatus=1
21:39:20.978 -> "soundStatus == 0" soundStatus=0
21:39:21.749 -> "03" soundStatus=1
21:39:21.749 -> "x==1" x=1
21:39:21.749 -> "else soundStatus" soundStatus=1
21:39:22.750 -> "03" soundStatus=1
21:39:22.750 -> "x==1" x=1
21:39:22.750 -> "else soundStatus" soundStatus=1
21:39:23.754 -> "03" soundStatus=1
21:39:23.754 -> "x==1" x=1
21:39:23.754 -> "else soundStatus" soundStatus=1
21:39:24.265 -> "soundStatus == 0" soundStatus=0
21:39:24.728 -> "03" soundStatus=1
21:39:24.728 -> "x==1" x=1
21:39:24.775 -> "else soundStatus" soundStatus=1
21:39:25.475 -> "soundStatus == 0" soundStatus=0
21:39:25.754 -> "03" soundStatus=1
21:39:25.754 -> "x==1" x=1
21:39:25.754 -> "else soundStatus" soundStatus=1
21:39:26.684 -> "soundStatus == 0" soundStatus=0
21:39:26.730 -> "03" soundStatus=1
21:39:26.730 -> "x==1" x=1
21:39:26.777 -> "else soundStatus" soundStatus=1
21:39:27.754 -> "03" soundStatus=1
21:39:27.754 -> "x==1" x=1
21:39:27.800 -> "else soundStatus" soundStatus=1
21:39:27.894 -> "soundStatus == 0" soundStatus=0
21:39:28.739 -> "03" soundStatus=1
21:39:28.739 -> "x==1" x=1
21:39:28.786 -> "else soundStatus" soundStatus=1
21:39:29.763 -> "03" soundStatus=1
21:39:29.763 -> "x==1" x=1
21:39:29.763 -> "else soundStatus" soundStatus=1
21:39:29.856 -> "soundStatus == 0" soundStatus=0
21:39:30.742 -> "03" soundStatus=1
21:39:30.742 -> "x==1" x=1
21:39:30.789 -> "else soundStatus" soundStatus=1
21:39:31.765 -> "03" soundStatus=1
21:39:31.765 -> "x==1" x=1
21:39:31.765 -> "else soundStatus" soundStatus=1
21:39:31.859 -> "soundStatus == 0" soundStatus=0
21:39:32.742 -> "03" soundStatus=1
21:39:32.742 -> "x==1" x=1
21:39:32.789 -> "else soundStatus" soundStatus=1
21:39:33.768 -> "03" soundStatus=1
21:39:33.768 -> "x==1" x=1
21:39:33.768 -> "else soundStatus" soundStatus=1
21:39:34.143 -> "soundStatus == 0" soundStatus=0
21:39:34.750 -> "03" soundStatus=1
21:39:34.750 -> "x==1" x=1
21:39:34.796 -> "else soundStatus" soundStatus=1
21:39:35.776 -> "03" soundStatus=1
21:39:35.776 -> "x==1" x=1
21:39:35.776 -> "else soundStatus" soundStatus=1
21:39:36.478 -> "soundStatus == 0" soundStatus=0
21:39:36.756 -> "03" soundStatus=1
21:39:36.756 -> "x==1" x=1
21:39:36.802 -> "else soundStatus" soundStatus=1
21:39:37.781 -> "03" soundStatus=1
21:39:37.781 -> "x==1" x=1
21:39:37.781 -> "else soundStatus" soundStatus=1
21:39:38.756 -> "03" soundStatus=1
21:39:38.756 -> "x==1" x=1
21:39:38.802 -> "else soundStatus" soundStatus=1
21:39:39.785 -> "03" soundStatus=1
21:39:39.785 -> "x==1" x=1
21:39:39.785 -> "else soundStatus" soundStatus=1
21:39:40.160 -> "soundStatus == 0" soundStatus=0
21:39:40.768 -> "03" soundStatus=1
21:39:40.768 -> "x==1" x=1
21:39:40.815 -> "else soundStatus" soundStatus=1
21:39:41.750 -> "03" soundStatus=1
21:39:41.750 -> "x==1" x=1
21:39:41.796 -> "else soundStatus" soundStatus=1
21:39:42.773 -> "03" soundStatus=1
21:39:42.773 -> "x==1" x=1
21:39:42.820 -> "else soundStatus" soundStatus=1
21:39:43.430 -> "soundStatus == 0" soundStatus=0
21:39:43.758 -> "03" soundStatus=1
21:39:43.758 -> "x==1" x=1
21:39:43.805 -> "else soundStatus" soundStatus=1
21:39:44.787 -> "03" soundStatus=1
21:39:44.787 -> "x==1" x=1
21:39:44.787 -> "else soundStatus" soundStatus=1
21:39:45.393 -> "soundStatus == 0" soundStatus=0
21:39:45.765 -> "03" soundStatus=1
21:39:45.765 -> "x==1" x=1
21:39:45.812 -> "else soundStatus" soundStatus=1
21:39:46.788 -> "03" soundStatus=1
21:39:46.788 -> "x==1" x=1

The code with the neopixel commented out:

// MACRO-START * MACRO-START * MACRO-START * MACRO-START * MACRO-START * MACRO-START *
// a detailed explanation how these macros work is given in this tutorial
// https://forum.arduino.cc/t/comfortable-serial-debug-output-short-to-write-fixed-text-name-and-content-of-any-variable-code-example/888298

#define dbg(myFixedText, variableName) \
  Serial.print( F(#myFixedText " "  #variableName"=") ); \
  Serial.println(variableName);

#define dbgi(myFixedText, variableName,timeInterval) \
  { \
    static unsigned long intervalStartTime; \
    if ( millis() - intervalStartTime >= timeInterval ){ \
      intervalStartTime = millis(); \
      Serial.print( F(#myFixedText " "  #variableName"=") ); \
      Serial.println(variableName); \
    } \
  }

#define dbgc(myFixedText, variableName) \
  { \
    static long lastState; \
    if ( lastState != variableName ){ \
      Serial.print( F(#myFixedText " "  #variableName" changed from ") ); \
      Serial.print(lastState); \
      Serial.print( F(" to ") ); \
      Serial.println(variableName); \
      lastState = variableName; \
    } \
  }

#define dbgcf(myFixedText, variableName) \
  { \
    static float lastState; \
    if ( lastState != variableName ){ \
      Serial.print( F(#myFixedText " "  #variableName" changed from ") ); \
      Serial.print(lastState); \
      Serial.print( F(" to ") ); \
      Serial.println(variableName); \
      lastState = variableName; \
    } \
  }
// MACRO-END * MACRO-END * MACRO-END * MACRO-END * MACRO-END * MACRO-END * MACRO-END *


#include <mp3tf16p.h>
#include <Wire.h>
#include <Adafruit_CAP1188.h>
#include <Adafruit_NeoPixel.h>

MP3Player mp3(10, 11);
int volumeLevel;

Adafruit_CAP1188 cap = Adafruit_CAP1188();
#define CAP1188_SENSITIVITY 0x6F
uint8_t prevTouch1 = 0;
uint8_t prevTouch2 = 0;
int x = 1;

#define PIN 6
#define NUMPIXELS 24
Adafruit_NeoPixel pixels(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
uint32_t black = pixels.Color(0, 0, 0);
int sound = 2;

void setup(void)
{
  Serial.begin(9600);
  mp3.initialize();

  if (!cap.begin()) {
    while (1);
  }

  pinMode(sound, INPUT);
  pixels.begin();
  pixels.setBrightness(50);
}

void loop(void)
{
  int volumelevel = 12;
  int trackCount = mp3.player.readFileCounts();

  dbgi("01", trackCount, 1000);
  for (int i = 1; i <= trackCount ; i++) {
    dbgc("02", i);
    mp3.playTrackNumber(i, volumelevel, false);

    while (!mp3.playCompleted()) {
      int soundStatus = digitalRead(sound);
      dbgi("03", soundStatus, 1000);

      uint8_t touched = cap.touched();
      if (touched != prevTouch1) {
        if (touched & 0x01) {
          mp3.playTrackNumber((i + 1), volumelevel, false);
          i ++;
        }
        prevTouch1 = touched;
      }

      if (touched != prevTouch2) {
        if (touched & 0x02) {
          x ++;
          if (x == 3) {
            x = 1;
          }
        }
        prevTouch2 = touched;
      }

      /*if (x == 1) {
        dbgi("x==1", x, 1000);
       if (soundStatus == 0) {
          dbgi("soundStatus == 0", soundStatus, 1000);
          pixels.clear();
          pixels.setPixelColor(0, pixels.Color(255, 0, 0));
          pixels.setPixelColor(12, pixels.Color(255, 0, 0));
          pixels.setPixelColor(1, pixels.Color(255, 127, 0));
          pixels.setPixelColor(23, pixels.Color(255, 127, 0));
          pixels.setPixelColor(2, pixels.Color(255, 255, 0));
          pixels.setPixelColor(22, pixels.Color(255, 255, 0));
          pixels.setPixelColor(3, pixels.Color(127, 255, 0));
          pixels.setPixelColor(21, pixels.Color(127, 255, 0));
          pixels.setPixelColor(4, pixels.Color(0, 255, 0));
          pixels.setPixelColor(20, pixels.Color(0, 255, 0));
          pixels.setPixelColor(5, pixels.Color(0, 255, 127));
          pixels.setPixelColor(19, pixels.Color(0, 255, 127));
          pixels.setPixelColor(6, pixels.Color(0, 255, 255));
          pixels.setPixelColor(18, pixels.Color(0, 255, 255));
          pixels.setPixelColor(7, pixels.Color(0, 127, 255));
          pixels.setPixelColor(17, pixels.Color(0, 127, 255));
          pixels.setPixelColor(8, pixels.Color(0, 0, 255));
          pixels.setPixelColor(16, pixels.Color(0, 0, 255));
          pixels.setPixelColor(9, pixels.Color(127, 0, 255));
          pixels.setPixelColor(15, pixels.Color(127, 0, 255));
          pixels.setPixelColor(10, pixels.Color(255, 0, 255));
          pixels.setPixelColor(14, pixels.Color(255, 0, 255));
          pixels.setPixelColor(11, pixels.Color(255, 0, 127));
          pixels.setPixelColor(13, pixels.Color(255, 0, 127));
          pixels.show();
        }

        else {
          dbgi("else soundStatus", soundStatus, 1000);

          pixels.clear();
          pixels.fill(black, 0, 12);
          pixels.show();
        }
      }

      else {
        dbgi("else x !=1",x,1000);

        pixels.clear();
        pixels.fill(black, 0, 12);
        pixels.show();
      }*/
    }
  }
  mp3.serialPrintStatus(MP3_ALL_MESSAGE);
}

Gives this serial output:

21:47:06.415 -> Initializing

I highly doubt that this is the complete serial prinring of the code-version with the Neopixel commented out

If this line

would be the only one this would mean that your code stops inside void setup() here

void setup(void)
{
  Serial.begin(9600);
  mp3.initialize();

  if (!cap.begin()) {
    while (1);  // <<<<<<< code-execution would be stopped here
  }

The absolute minimum that should be printed to the serial monitor is at least

void loop(void)
{
  int volumelevel = 12;
  int trackCount = mp3.player.readFileCounts();

  dbgi("01", trackCount, 1000); // <<<<<<<<< this line is executed UN-conditional
// and will be printed in EVERY CASE

So repeat the test with the commented out neopixels and mark, copy and paste the serial printing very carefully and completely

The code-version with neopixel-code active shows
variable sound-status is always 1
and this means only the code inside the else-statement is executed

        else {
          dbgi("else soundStatus", soundStatus, 1000); // <<< this gets executed

          pixels.clear();
          pixels.fill(black, 0, 12);
          pixels.show();
        }

Here is the complete sketch with neopixel-code active where I have marked that lines of code with

// <<< this gets executed

that get printed

// MACRO-START * MACRO-START * MACRO-START * MACRO-START * MACRO-START * MACRO-START *
// a detailed explanation how these macros work is given in this tutorial
// https://forum.arduino.cc/t/comfortable-serial-debug-output-short-to-write-fixed-text-name-and-content-of-any-variable-code-example/888298

#define dbg(myFixedText, variableName) \
  Serial.print( F(#myFixedText " "  #variableName"=") ); \
  Serial.println(variableName);

#define dbgi(myFixedText, variableName,timeInterval) \
  { \
    static unsigned long intervalStartTime; \
    if ( millis() - intervalStartTime >= timeInterval ){ \
      intervalStartTime = millis(); \
      Serial.print( F(#myFixedText " "  #variableName"=") ); \
      Serial.println(variableName); \
    } \
  }

#define dbgc(myFixedText, variableName) \
  { \
    static long lastState; \
    if ( lastState != variableName ){ \
      Serial.print( F(#myFixedText " "  #variableName" changed from ") ); \
      Serial.print(lastState); \
      Serial.print( F(" to ") ); \
      Serial.println(variableName); \
      lastState = variableName; \
    } \
  }

#define dbgcf(myFixedText, variableName) \
  { \
    static float lastState; \
    if ( lastState != variableName ){ \
      Serial.print( F(#myFixedText " "  #variableName" changed from ") ); \
      Serial.print(lastState); \
      Serial.print( F(" to ") ); \
      Serial.println(variableName); \
      lastState = variableName; \
    } \
  }
// MACRO-END * MACRO-END * MACRO-END * MACRO-END * MACRO-END * MACRO-END * MACRO-END *


#include <mp3tf16p.h>
#include <Wire.h>
#include <Adafruit_CAP1188.h>
#include <Adafruit_NeoPixel.h>

MP3Player mp3(10, 11);
int volumeLevel;

Adafruit_CAP1188 cap = Adafruit_CAP1188();
#define CAP1188_SENSITIVITY 0x6F
uint8_t prevTouch1 = 0;
uint8_t prevTouch2 = 0;
int x = 1;

#define PIN 6
#define NUMPIXELS 24
Adafruit_NeoPixel pixels(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
uint32_t black = pixels.Color(0, 0, 0);
int sound = 2;

void setup(void)
{
  Serial.begin(9600);
  mp3.initialize();

  if (!cap.begin()) {
    while (1);
  }

  pinMode(sound, INPUT);
  pixels.begin();
  pixels.setBrightness(50);
}

void loop(void)
{
  int volumelevel = 12;
  int trackCount = mp3.player.readFileCounts();

  dbgi("01", trackCount, 1000);
  for (int i = 1; i <= trackCount ; i++) {
    dbgc("02", i);
    mp3.playTrackNumber(i, volumelevel, false);

    while (!mp3.playCompleted()) {
      int soundStatus = digitalRead(sound);
      dbgi("03", soundStatus, 1000); // <<<  this gets executed

      uint8_t touched = cap.touched();
      if (touched != prevTouch1) {
        if (touched & 0x01) {
          mp3.playTrackNumber((i + 1), volumelevel, false);
          i ++;
        }
        prevTouch1 = touched;
      }

      if (touched != prevTouch2) {
        if (touched & 0x02) {
          x ++;
          if (x == 3) {
            x = 1;
          }
        }
        prevTouch2 = touched;
      }

      if (x == 1) {
        dbgi("x==1", x, 1000); // <<<  this gets executed
        if (soundStatus == 0) {
          dbgi("soundStatus == 0", soundStatus, 1000);
          pixels.clear();
          pixels.setPixelColor(0, pixels.Color(255, 0, 0));
          pixels.setPixelColor(12, pixels.Color(255, 0, 0));
          pixels.setPixelColor(1, pixels.Color(255, 127, 0));
          pixels.setPixelColor(23, pixels.Color(255, 127, 0));
          pixels.setPixelColor(2, pixels.Color(255, 255, 0));
          pixels.setPixelColor(22, pixels.Color(255, 255, 0));
          pixels.setPixelColor(3, pixels.Color(127, 255, 0));
          pixels.setPixelColor(21, pixels.Color(127, 255, 0));
          pixels.setPixelColor(4, pixels.Color(0, 255, 0));
          pixels.setPixelColor(20, pixels.Color(0, 255, 0));
          pixels.setPixelColor(5, pixels.Color(0, 255, 127));
          pixels.setPixelColor(19, pixels.Color(0, 255, 127));
          pixels.setPixelColor(6, pixels.Color(0, 255, 255));
          pixels.setPixelColor(18, pixels.Color(0, 255, 255));
          pixels.setPixelColor(7, pixels.Color(0, 127, 255));
          pixels.setPixelColor(17, pixels.Color(0, 127, 255));
          pixels.setPixelColor(8, pixels.Color(0, 0, 255));
          pixels.setPixelColor(16, pixels.Color(0, 0, 255));
          pixels.setPixelColor(9, pixels.Color(127, 0, 255));
          pixels.setPixelColor(15, pixels.Color(127, 0, 255));
          pixels.setPixelColor(10, pixels.Color(255, 0, 255));
          pixels.setPixelColor(14, pixels.Color(255, 0, 255));
          pixels.setPixelColor(11, pixels.Color(255, 0, 127));
          pixels.setPixelColor(13, pixels.Color(255, 0, 127));
          pixels.show();
        }

        else {
          dbgi("else soundStatus", soundStatus, 1000); // <<< this gets executed

          pixels.clear();
          pixels.fill(black, 0, 12);
          pixels.show();
        }
      }

      else {
        dbgi("else x !=1",x,1000);

        pixels.clear();
        pixels.fill(black, 0, 12);
        pixels.show();
      }
    }
  }
  mp3.serialPrintStatus(MP3_ALL_MESSAGE);
}

You should post a link to the documenation of this two libraries

#include <mp3tf16p.h>
#include <Adafruit_CAP1188.h>

mp3tf16p.h is clear MP3 but what does Adafruit_CAP1188.h do??

Thanks again for your answer!

I moved

dbgi("01", trackCount, 1000);
      dbgc("02", i);

to the while loop. Everything that is outside that loop doesn't seem to happen I guess the communication to the SD card reader would block that as you don't specify it to happen when the sound is playing:

while (!mp3.playCompleted()) {
      dbgi("01", trackCount, 1000);
      dbgc("02", i);
      int soundStatus = digitalRead(sound);
      dbgi("03", soundStatus, 1000);

      uint8_t touched = cap.touched();
      if (touched != prevTouch1) {
        if (touched & 0x01) {
          mp3.playTrackNumber((i + 1), volumelevel, false);
          i ++;
        }
        prevTouch1 = touched;
      }

      if (touched != prevTouch2) {
        if (touched & 0x02) {
          x ++;
          if (x == 3) {
            x = 1;
          }
        }
        prevTouch2 = touched;
      }

      /*if (x == 1) {
        dbgi("x==1", x, 1000);
       if (soundStatus == 0) {
          dbgi("soundStatus == 0", soundStatus, 1000);
          pixels.clear();
          pixels.setPixelColor(0, pixels.Color(255, 0, 0));
          pixels.setPixelColor(12, pixels.Color(255, 0, 0));
          pixels.setPixelColor(1, pixels.Color(255, 127, 0));
          pixels.setPixelColor(23, pixels.Color(255, 127, 0));
          pixels.setPixelColor(2, pixels.Color(255, 255, 0));
          pixels.setPixelColor(22, pixels.Color(255, 255, 0));
          pixels.setPixelColor(3, pixels.Color(127, 255, 0));
          pixels.setPixelColor(21, pixels.Color(127, 255, 0));
          pixels.setPixelColor(4, pixels.Color(0, 255, 0));
          pixels.setPixelColor(20, pixels.Color(0, 255, 0));
          pixels.setPixelColor(5, pixels.Color(0, 255, 127));
          pixels.setPixelColor(19, pixels.Color(0, 255, 127));
          pixels.setPixelColor(6, pixels.Color(0, 255, 255));
          pixels.setPixelColor(18, pixels.Color(0, 255, 255));
          pixels.setPixelColor(7, pixels.Color(0, 127, 255));
          pixels.setPixelColor(17, pixels.Color(0, 127, 255));
          pixels.setPixelColor(8, pixels.Color(0, 0, 255));
          pixels.setPixelColor(16, pixels.Color(0, 0, 255));
          pixels.setPixelColor(9, pixels.Color(127, 0, 255));
          pixels.setPixelColor(15, pixels.Color(127, 0, 255));
          pixels.setPixelColor(10, pixels.Color(255, 0, 255));
          pixels.setPixelColor(14, pixels.Color(255, 0, 255));
          pixels.setPixelColor(11, pixels.Color(255, 0, 127));
          pixels.setPixelColor(13, pixels.Color(255, 0, 127));
          pixels.show();
        }

        else {
          dbgi("else soundStatus", soundStatus, 1000);

          pixels.clear();
          pixels.fill(black, 0, 12);
          pixels.show();
        }
      }

      else {
        dbgi("else x !=1",x,1000);

        pixels.clear();
        pixels.fill(black, 0, 12);
        pixels.show();
      }*/
    }

The serial output now is, the sound ended at timestamp 22:44:03.889 and the next sound started playing:

22:41:29.874 -> "02" i changed from 0 to 1
22:41:30.244 -> "01" trackCount=16
22:41:30.244 -> "03" soundStatus=1
22:41:31.272 -> "01" trackCount=16
22:41:31.272 -> "03" soundStatus=1
22:41:32.254 -> "01" trackCount=16
22:41:32.254 -> "03" soundStatus=1
22:41:33.234 -> "01" trackCount=16
22:41:33.234 -> "03" soundStatus=1
22:41:34.255 -> "01" trackCount=16
22:41:34.255 -> "03" soundStatus=1
22:41:35.238 -> "01" trackCount=16
22:41:35.238 -> "03" soundStatus=1
22:41:36.268 -> "01" trackCount=16
22:41:36.268 -> "03" soundStatus=1
22:41:37.243 -> "01" trackCount=16
22:41:37.243 -> "03" soundStatus=1
22:41:38.268 -> "01" trackCount=16
22:41:38.268 -> "03" soundStatus=1
22:41:39.245 -> "01" trackCount=16
22:41:39.245 -> "03" soundStatus=1
22:41:40.270 -> "01" trackCount=16
22:41:40.270 -> "03" soundStatus=1
22:41:41.248 -> "01" trackCount=16
22:41:41.248 -> "03" soundStatus=1
22:41:42.272 -> "01" trackCount=16
22:41:42.272 -> "03" soundStatus=1
22:41:43.253 -> "01" trackCount=16
22:41:43.253 -> "03" soundStatus=1
22:41:44.281 -> "01" trackCount=16
22:41:44.281 -> "03" soundStatus=1
22:41:45.259 -> "01" trackCount=16
22:41:45.259 -> "03" soundStatus=1
22:41:46.284 -> "01" trackCount=16
22:41:46.284 -> "03" soundStatus=1
22:41:47.261 -> "01" trackCount=16
22:41:47.261 -> "03" soundStatus=1
22:41:48.289 -> "01" trackCount=16
22:41:48.289 -> "03" soundStatus=1
22:41:49.266 -> "01" trackCount=16
22:41:49.266 -> "03" soundStatus=1
22:41:50.293 -> "01" trackCount=16
22:41:50.293 -> "03" soundStatus=1
22:41:51.272 -> "01" trackCount=16
22:41:51.272 -> "03" soundStatus=1
22:41:52.302 -> "01" trackCount=16
22:41:52.302 -> "03" soundStatus=1
22:41:53.282 -> "01" trackCount=16
22:41:53.282 -> "03" soundStatus=1
22:41:54.307 -> "01" trackCount=16
22:41:54.307 -> "03" soundStatus=1
22:41:55.288 -> "01" trackCount=16
22:41:55.288 -> "03" soundStatus=1
22:41:56.270 -> "01" trackCount=16
22:41:56.270 -> "03" soundStatus=1
22:41:57.299 -> "01" trackCount=16
22:41:57.299 -> "03" soundStatus=1
22:41:58.275 -> "01" trackCount=16
22:41:58.275 -> "03" soundStatus=1
22:41:59.302 -> "01" trackCount=16
22:41:59.302 -> "03" soundStatus=1
22:42:00.282 -> "01" trackCount=16
22:42:00.282 -> "03" soundStatus=1
22:42:01.307 -> "01" trackCount=16
22:42:01.307 -> "03" soundStatus=1
22:42:02.284 -> "01" trackCount=16
22:42:02.284 -> "03" soundStatus=1
22:42:03.307 -> "01" trackCount=16
22:42:03.307 -> "03" soundStatus=1
22:42:04.286 -> "01" trackCount=16
22:42:04.286 -> "03" soundStatus=1
22:42:05.313 -> "01" trackCount=16
22:42:05.313 -> "03" soundStatus=1
22:42:06.288 -> "01" trackCount=16
22:42:06.288 -> "03" soundStatus=1
22:42:07.311 -> "01" trackCount=16
22:42:07.311 -> "03" soundStatus=1
22:42:08.291 -> "01" trackCount=16
22:42:08.291 -> "03" soundStatus=1
22:42:09.315 -> "01" trackCount=16
22:42:09.315 -> "03" soundStatus=1
22:42:10.298 -> "01" trackCount=16
22:42:10.298 -> "03" soundStatus=1
22:42:11.318 -> "01" trackCount=16
22:42:11.318 -> "03" soundStatus=1
22:42:12.294 -> "01" trackCount=16
22:42:12.294 -> "03" soundStatus=1
22:42:13.319 -> "01" trackCount=16
22:42:13.319 -> "03" soundStatus=1
22:42:14.298 -> "01" trackCount=16
22:42:14.298 -> "03" soundStatus=1
22:42:15.322 -> "01" trackCount=16
22:42:15.322 -> "03" soundStatus=1
22:42:16.301 -> "01" trackCount=16
22:42:16.301 -> "03" soundStatus=1
22:42:17.328 -> "01" trackCount=16
22:42:17.328 -> "03" soundStatus=1
22:42:18.307 -> "01" trackCount=16
22:42:18.307 -> "03" soundStatus=1
22:42:19.332 -> "01" trackCount=16
22:42:19.332 -> "03" soundStatus=1
22:42:20.315 -> "01" trackCount=16
22:42:20.315 -> "03" soundStatus=1
22:42:21.340 -> "01" trackCount=16
22:42:21.340 -> "03" soundStatus=1
22:42:22.320 -> "01" trackCount=16
22:42:22.320 -> "03" soundStatus=1
22:42:23.303 -> "01" trackCount=16
22:42:23.303 -> "03" soundStatus=1
22:42:24.328 -> "01" trackCount=16
22:42:24.328 -> "03" soundStatus=1
22:42:25.307 -> "01" trackCount=16
22:42:25.307 -> "03" soundStatus=1
22:42:26.331 -> "01" trackCount=16
22:42:26.331 -> "03" soundStatus=1
22:42:27.307 -> "01" trackCount=16
22:42:27.307 -> "03" soundStatus=1
22:42:28.333 -> "01" trackCount=16
22:42:28.333 -> "03" soundStatus=1
22:42:29.310 -> "01" trackCount=16
22:42:29.310 -> "03" soundStatus=1
22:42:30.335 -> "01" trackCount=16
22:42:30.335 -> "03" soundStatus=1
22:42:31.312 -> "01" trackCount=16
22:42:31.312 -> "03" soundStatus=1
22:42:32.334 -> "03" soundStatus=1
22:42:32.334 -> "01" trackCount=16
22:42:33.353 -> "01" trackCount=16
22:42:33.353 -> "03" soundStatus=1
22:42:34.334 -> "01" trackCount=16
22:42:34.334 -> "03" soundStatus=1
22:42:35.315 -> "01" trackCount=16
22:42:35.315 -> "03" soundStatus=1
22:42:36.346 -> "01" trackCount=16
22:42:36.346 -> "03" soundStatus=1
22:42:37.323 -> "01" trackCount=16
22:42:37.323 -> "03" soundStatus=1
22:42:38.347 -> "01" trackCount=16
22:42:38.347 -> "03" soundStatus=1
22:42:39.329 -> "01" trackCount=16
22:42:39.329 -> "03" soundStatus=1
22:42:40.354 -> "01" trackCount=16
22:42:40.354 -> "03" soundStatus=1
22:42:41.329 -> "01" trackCount=16
22:42:41.329 -> "03" soundStatus=1
22:42:42.351 -> "01" trackCount=16
22:42:42.351 -> "03" soundStatus=1
22:42:43.329 -> "01" trackCount=16
22:42:43.329 -> "03" soundStatus=1
22:42:44.352 -> "01" trackCount=16
22:42:44.352 -> "03" soundStatus=1
22:42:45.334 -> "01" trackCount=16
22:42:45.334 -> "03" soundStatus=1
22:42:46.363 -> "01" trackCount=16
22:42:46.363 -> "03" soundStatus=1
22:42:47.342 -> "01" trackCount=16
22:42:47.342 -> "03" soundStatus=1
22:42:48.363 -> "01" trackCount=16
22:42:48.363 -> "03" soundStatus=1
22:42:49.335 -> "01" trackCount=16
22:42:49.335 -> "03" soundStatus=1
22:42:50.349 -> "01" trackCount=16
22:42:50.349 -> "03" soundStatus=1
22:42:51.378 -> "01" trackCount=16
22:42:51.378 -> "03" soundStatus=1
22:42:52.353 -> "01" trackCount=16
22:42:52.353 -> "03" soundStatus=1
22:42:53.379 -> "01" trackCount=16
22:42:53.379 -> "03" soundStatus=1
22:42:54.358 -> "01" trackCount=16
22:42:54.358 -> "03" soundStatus=1
22:42:55.382 -> "01" trackCount=16
22:42:55.382 -> "03" soundStatus=1
22:42:56.359 -> "01" trackCount=16
22:42:56.359 -> "03" soundStatus=1
22:42:57.338 -> "01" trackCount=16
22:42:57.338 -> "03" soundStatus=1
22:42:58.364 -> "01" trackCount=16
22:42:58.364 -> "03" soundStatus=1
22:42:59.344 -> "03" soundStatus=1
22:42:59.344 -> "01" trackCount=16
22:43:00.369 -> "01" trackCount=16
22:43:00.369 -> "03" soundStatus=1
22:43:01.346 -> "01" trackCount=16
22:43:01.346 -> "03" soundStatus=1
22:43:02.370 -> "01" trackCount=16
22:43:02.370 -> "03" soundStatus=1
22:43:03.350 -> "01" trackCount=16
22:43:03.350 -> "03" soundStatus=1
22:43:04.380 -> "01" trackCount=16
22:43:04.380 -> "03" soundStatus=1
22:43:05.361 -> "01" trackCount=16
22:43:05.361 -> "03" soundStatus=1
22:43:06.384 -> "01" trackCount=16
22:43:06.384 -> "03" soundStatus=1
22:43:07.367 -> "01" trackCount=16
22:43:07.367 -> "03" soundStatus=1
22:43:08.385 -> "01" trackCount=16
22:43:08.385 -> "03" soundStatus=1
22:43:09.367 -> "01" trackCount=16
22:43:09.367 -> "03" soundStatus=1
22:43:10.393 -> "01" trackCount=16
22:43:10.393 -> "03" soundStatus=1
22:43:11.371 -> "01" trackCount=16
22:43:11.371 -> "03" soundStatus=1
22:43:12.396 -> "01" trackCount=16
22:43:12.396 -> "03" soundStatus=1
22:43:13.374 -> "01" trackCount=16
22:43:13.374 -> "03" soundStatus=1
22:43:14.401 -> "01" trackCount=16
22:43:14.401 -> "03" soundStatus=1
22:43:15.376 -> "01" trackCount=16
22:43:15.376 -> "03" soundStatus=1
22:43:16.401 -> "01" trackCount=16
22:43:16.401 -> "03" soundStatus=1
22:43:17.378 -> "01" trackCount=16
22:43:17.378 -> "03" soundStatus=1
22:43:18.405 -> "01" trackCount=16
22:43:18.405 -> "03" soundStatus=1
22:43:19.380 -> "01" trackCount=16
22:43:19.380 -> "03" soundStatus=1
22:43:20.401 -> "01" trackCount=16
22:43:20.401 -> "03" soundStatus=1
22:43:21.376 -> "01" trackCount=16
22:43:21.376 -> "03" soundStatus=1
22:43:22.402 -> "01" trackCount=16
22:43:22.402 -> "03" soundStatus=1
22:43:23.378 -> "01" trackCount=16
22:43:23.378 -> "03" soundStatus=1
22:43:24.408 -> "01" trackCount=16
22:43:24.408 -> "03" soundStatus=1
22:43:25.386 -> "01" trackCount=16
22:43:25.386 -> "03" soundStatus=1
22:43:26.413 -> "01" trackCount=16
22:43:26.413 -> "03" soundStatus=1
22:43:27.392 -> "01" trackCount=16
22:43:27.392 -> "03" soundStatus=1
22:43:28.419 -> "01" trackCount=16
22:43:28.419 -> "03" soundStatus=1
22:43:29.398 -> "01" trackCount=16
22:43:29.398 -> "03" soundStatus=1
22:43:30.380 -> "01" trackCount=16
22:43:30.380 -> "03" soundStatus=1
22:43:31.405 -> "01" trackCount=16
22:43:31.405 -> "03" soundStatus=1
22:43:32.385 -> "01" trackCount=16
22:43:32.385 -> "03" soundStatus=1
22:43:33.413 -> "01" trackCount=16
22:43:33.413 -> "03" soundStatus=1
22:43:34.392 -> "01" trackCount=16
22:43:34.392 -> "03" soundStatus=1
22:43:35.422 -> "01" trackCount=16
22:43:35.422 -> "03" soundStatus=1
22:43:36.400 -> "01" trackCount=16
22:43:36.400 -> "03" soundStatus=1
22:43:37.430 -> "01" trackCount=16
22:43:37.430 -> "03" soundStatus=1
22:43:38.410 -> "01" trackCount=16
22:43:38.410 -> "03" soundStatus=1
22:43:39.392 -> "01" trackCount=16
22:43:39.392 -> "03" soundStatus=1
22:43:40.413 -> "01" trackCount=16
22:43:40.413 -> "03" soundStatus=1
22:43:41.393 -> "01" trackCount=16
22:43:41.393 -> "03" soundStatus=1
22:43:42.415 -> "01" trackCount=16
22:43:42.415 -> "03" soundStatus=1
22:43:43.440 -> "01" trackCount=16
22:43:43.440 -> "03" soundStatus=1
22:43:44.419 -> "01" trackCount=16
22:43:44.419 -> "03" soundStatus=1
22:43:45.442 -> "01" trackCount=16
22:43:45.442 -> "03" soundStatus=1
22:43:46.418 -> "01" trackCount=16
22:43:46.418 -> "03" soundStatus=1
22:43:47.443 -> "01" trackCount=16
22:43:47.443 -> "03" soundStatus=1
22:43:48.424 -> "01" trackCount=16
22:43:48.424 -> "03" soundStatus=1
22:43:49.404 -> "01" trackCount=16
22:43:49.404 -> "03" soundStatus=1
22:43:50.430 -> "01" trackCount=16
22:43:50.430 -> "03" soundStatus=1
22:43:51.413 -> "01" trackCount=16
22:43:51.413 -> "03" soundStatus=1
22:43:52.441 -> "01" trackCount=16
22:43:52.441 -> "03" soundStatus=1
22:43:53.419 -> "01" trackCount=16
22:43:53.419 -> "03" soundStatus=1
22:43:54.441 -> "01" trackCount=16
22:43:54.441 -> "03" soundStatus=1
22:43:55.416 -> "01" trackCount=16
22:43:55.416 -> "03" soundStatus=1
22:43:56.438 -> "01" trackCount=16
22:43:56.438 -> "03" soundStatus=1
22:43:57.416 -> "01" trackCount=16
22:43:57.416 -> "03" soundStatus=1
22:43:58.441 -> "01" trackCount=16
22:43:58.441 -> "03" soundStatus=1
22:43:59.416 -> "01" trackCount=16
22:43:59.416 -> "03" soundStatus=1
22:44:00.442 -> "01" trackCount=16
22:44:00.442 -> "03" soundStatus=1
22:44:01.421 -> "01" trackCount=16
22:44:01.421 -> "03" soundStatus=1
22:44:02.443 -> "01" trackCount=16
22:44:02.443 -> "03" soundStatus=1
22:44:03.889 -> "01" trackCount=16
22:44:03.889 -> "02" i changed from 1 to 2
22:44:03.936 -> "03" soundStatus=1
22:44:04.862 -> "01" trackCount=16
22:44:04.862 -> "03" soundStatus=1

You should post a link to the documenation of this two libraries

#include <mp3tf16p.h>
#include <Adafruit_CAP1188.h>

So the Adafruit_CAP1188 library is to control the CAP1188 which is a capsense breakout board to register touch. I use the capsense sensors as buttons as I had them laying around from a previous school project and thought "touchscreen" would be cooler rather than using buttons. The link to the library: https://www.arduino.cc/reference/en/libraries/adafruit-cap1188-library/.

The mp3tf16p.h is indeed to read mp3 files from the sd card. The link to that library: https://dev.azure.com/overlording/The%20Last%20Outpost%20Workshop/_git/MP3-TF-16P

As update with the changes made to the code in my last post (moving the to the while loop) I ran the original code again.

// MACRO-START * MACRO-START * MACRO-START * MACRO-START * MACRO-START * MACRO-START *
// a detailed explanation how these macros work is given in this tutorial
// https://forum.arduino.cc/t/comfortable-serial-debug-output-short-to-write-fixed-text-name-and-content-of-any-variable-code-example/888298

#define dbg(myFixedText, variableName) \
  Serial.print( F(#myFixedText " "  #variableName"=") ); \
  Serial.println(variableName);

#define dbgi(myFixedText, variableName,timeInterval) \
  { \
    static unsigned long intervalStartTime; \
    if ( millis() - intervalStartTime >= timeInterval ){ \
      intervalStartTime = millis(); \
      Serial.print( F(#myFixedText " "  #variableName"=") ); \
      Serial.println(variableName); \
    } \
  }

#define dbgc(myFixedText, variableName) \
  { \
    static long lastState; \
    if ( lastState != variableName ){ \
      Serial.print( F(#myFixedText " "  #variableName" changed from ") ); \
      Serial.print(lastState); \
      Serial.print( F(" to ") ); \
      Serial.println(variableName); \
      lastState = variableName; \
    } \
  }

#define dbgcf(myFixedText, variableName) \
  { \
    static float lastState; \
    if ( lastState != variableName ){ \
      Serial.print( F(#myFixedText " "  #variableName" changed from ") ); \
      Serial.print(lastState); \
      Serial.print( F(" to ") ); \
      Serial.println(variableName); \
      lastState = variableName; \
    } \
  }
// MACRO-END * MACRO-END * MACRO-END * MACRO-END * MACRO-END * MACRO-END * MACRO-END *


#include <mp3tf16p.h>
#include <Wire.h>
#include <Adafruit_CAP1188.h>
#include <Adafruit_NeoPixel.h>

MP3Player mp3(10, 11);
int volumeLevel;

Adafruit_CAP1188 cap = Adafruit_CAP1188();
#define CAP1188_SENSITIVITY 0x6F
uint8_t prevTouch1 = 0;
uint8_t prevTouch2 = 0;
int x = 1;

#define PIN 6
#define NUMPIXELS 24
Adafruit_NeoPixel pixels(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
uint32_t black = pixels.Color(0, 0, 0);
int sound = 2;

void setup(void)
{
  Serial.begin(9600);
  mp3.initialize();

  if (!cap.begin()) {
    while (1);
  }

  pinMode(sound, INPUT);
  pixels.begin();
  pixels.setBrightness(50);
}

void loop(void)
{
  int volumelevel = 1;
  int trackCount = mp3.player.readFileCounts();

  
  for (int i = 1; i <= trackCount ; i++) {
    
    mp3.playTrackNumber(i, volumelevel, false);

    while (!mp3.playCompleted()) {
      dbgi("01", trackCount, 1000);
      dbgc("02", i);
      int soundStatus = digitalRead(sound);
      dbgi("03", soundStatus, 1000);

      uint8_t touched = cap.touched();
      if (touched != prevTouch1) {
        if (touched & 0x01) {
          mp3.playTrackNumber((i + 1), volumelevel, false);
          i ++;
        }
        prevTouch1 = touched;
      }

      if (touched != prevTouch2) {
        if (touched & 0x02) {
          x ++;
          if (x == 3) {
            x = 1;
          }
        }
        prevTouch2 = touched;
      }

      if (x == 1) {
        dbgi("x==1", x, 1000);
       if (soundStatus == 0) {
          dbgi("soundStatus == 0", soundStatus, 1000);
          pixels.clear();
          pixels.setPixelColor(0, pixels.Color(255, 0, 0));
          pixels.setPixelColor(12, pixels.Color(255, 0, 0));
          pixels.setPixelColor(1, pixels.Color(255, 127, 0));
          pixels.setPixelColor(23, pixels.Color(255, 127, 0));
          pixels.setPixelColor(2, pixels.Color(255, 255, 0));
          pixels.setPixelColor(22, pixels.Color(255, 255, 0));
          pixels.setPixelColor(3, pixels.Color(127, 255, 0));
          pixels.setPixelColor(21, pixels.Color(127, 255, 0));
          pixels.setPixelColor(4, pixels.Color(0, 255, 0));
          pixels.setPixelColor(20, pixels.Color(0, 255, 0));
          pixels.setPixelColor(5, pixels.Color(0, 255, 127));
          pixels.setPixelColor(19, pixels.Color(0, 255, 127));
          pixels.setPixelColor(6, pixels.Color(0, 255, 255));
          pixels.setPixelColor(18, pixels.Color(0, 255, 255));
          pixels.setPixelColor(7, pixels.Color(0, 127, 255));
          pixels.setPixelColor(17, pixels.Color(0, 127, 255));
          pixels.setPixelColor(8, pixels.Color(0, 0, 255));
          pixels.setPixelColor(16, pixels.Color(0, 0, 255));
          pixels.setPixelColor(9, pixels.Color(127, 0, 255));
          pixels.setPixelColor(15, pixels.Color(127, 0, 255));
          pixels.setPixelColor(10, pixels.Color(255, 0, 255));
          pixels.setPixelColor(14, pixels.Color(255, 0, 255));
          pixels.setPixelColor(11, pixels.Color(255, 0, 127));
          pixels.setPixelColor(13, pixels.Color(255, 0, 127));
          pixels.show();
        }

        else {
          dbgi("else soundStatus", soundStatus, 1000);

          pixels.clear();
          pixels.fill(black, 0, 12);
          pixels.show();
        }
      }

      else {
        dbgi("else x !=1",x,1000);

        pixels.clear();
        pixels.fill(black, 0, 12);
        pixels.show();
      }
    }
  }
  mp3.serialPrintStatus(MP3_ALL_MESSAGE);
}

Which gave this serial output, the sound ended at timestamp 22:54:33.072:

22:51:58.460 -> "02" i changed from 0 to 1
22:51:58.789 -> "x==1" x=1
22:51:58.789 -> "else soundStatus" soundStatus=1
22:51:58.836 -> "01" trackCount=16
22:51:58.884 -> "03" soundStatus=1
22:51:59.776 -> "x==1" x=1
22:51:59.776 -> "else soundStatus" soundStatus=1
22:51:59.823 -> "01" trackCount=16
22:51:59.870 -> "03" soundStatus=1
22:52:00.812 -> "x==1" x=1
22:52:00.812 -> "else soundStatus" soundStatus=1
22:52:00.812 -> "01" trackCount=16
22:52:00.859 -> "03" soundStatus=1
22:52:01.794 -> "x==1" x=1
22:52:01.794 -> "else soundStatus" soundStatus=1
22:52:01.840 -> "01" trackCount=16
22:52:01.886 -> "03" soundStatus=1
22:52:02.773 -> "x==1" x=1
22:52:02.773 -> "else soundStatus" soundStatus=1
22:52:02.820 -> "01" trackCount=16
22:52:02.866 -> "03" soundStatus=1
22:52:03.803 -> "x==1" x=1
22:52:03.803 -> "else soundStatus" soundStatus=1
22:52:03.851 -> "01" trackCount=16
22:52:03.898 -> "03" soundStatus=1
22:52:04.790 -> "x==1" x=1
22:52:04.790 -> "else soundStatus" soundStatus=1
22:52:04.836 -> "01" trackCount=16
22:52:04.883 -> "03" soundStatus=1
22:52:05.820 -> "x==1" x=1
22:52:05.820 -> "else soundStatus" soundStatus=1
22:52:05.820 -> "01" trackCount=16
22:52:05.868 -> "03" soundStatus=1
22:52:06.808 -> "x==1" x=1
22:52:06.808 -> "else soundStatus" soundStatus=1
22:52:06.854 -> "01" trackCount=16
22:52:06.901 -> "03" soundStatus=1
22:52:07.791 -> "x==1" x=1
22:52:07.791 -> "else soundStatus" soundStatus=1
22:52:07.839 -> "01" trackCount=16
22:52:07.885 -> "03" soundStatus=1
22:52:08.816 -> "x==1" x=1
22:52:08.816 -> "else soundStatus" soundStatus=1
22:52:08.816 -> "01" trackCount=16
22:52:08.863 -> "03" soundStatus=1
22:52:09.806 -> "x==1" x=1
22:52:09.806 -> "else soundStatus" soundStatus=1
22:52:09.853 -> "01" trackCount=16
22:52:09.900 -> "03" soundStatus=1
22:52:10.791 -> "x==1" x=1
22:52:10.791 -> "else soundStatus" soundStatus=1
22:52:10.837 -> "01" trackCount=16
22:52:10.883 -> "03" soundStatus=1
22:52:11.820 -> "x==1" x=1
22:52:11.820 -> "else soundStatus" soundStatus=1
22:52:11.820 -> "01" trackCount=16
22:52:11.867 -> "03" soundStatus=1
22:52:12.804 -> "x==1" x=1
22:52:12.804 -> "else soundStatus" soundStatus=1
22:52:12.850 -> "01" trackCount=16
22:52:12.897 -> "03" soundStatus=1
22:52:13.791 -> "x==1" x=1
22:52:13.791 -> "else soundStatus" soundStatus=1
22:52:13.837 -> "01" trackCount=16
22:52:13.884 -> "03" soundStatus=1
22:52:14.819 -> "x==1" x=1
22:52:14.819 -> "else soundStatus" soundStatus=1
22:52:14.866 -> "01" trackCount=16
22:52:14.921 -> "03" soundStatus=1
22:52:15.802 -> "x==1" x=1
22:52:15.802 -> "else soundStatus" soundStatus=1
22:52:15.848 -> "01" trackCount=16
22:52:15.896 -> "03" soundStatus=1
22:52:16.832 -> "x==1" x=1
22:52:16.832 -> "else soundStatus" soundStatus=1
22:52:16.832 -> "01" trackCount=16
22:52:16.879 -> "03" soundStatus=1
22:52:17.811 -> "x==1" x=1
22:52:17.811 -> "else soundStatus" soundStatus=1
22:52:17.859 -> "01" trackCount=16
22:52:17.906 -> "03" soundStatus=1
22:52:18.839 -> "x==1" x=1
22:52:18.839 -> "else soundStatus" soundStatus=1
22:52:18.839 -> "01" trackCount=16
22:52:18.885 -> "03" soundStatus=1
22:52:19.819 -> "x==1" x=1
22:52:19.819 -> "else soundStatus" soundStatus=1
22:52:19.866 -> "01" trackCount=16
22:52:19.913 -> "03" soundStatus=1
22:52:20.799 -> "x==1" x=1
22:52:20.799 -> "else soundStatus" soundStatus=1
22:52:20.846 -> "01" trackCount=16
22:52:20.893 -> "03" soundStatus=1
22:52:21.830 -> "x==1" x=1
22:52:21.830 -> "else soundStatus" soundStatus=1
22:52:21.877 -> "01" trackCount=16
22:52:21.924 -> "03" soundStatus=1
22:52:22.810 -> "x==1" x=1
22:52:22.810 -> "else soundStatus" soundStatus=1
22:52:22.857 -> "01" trackCount=16
22:52:22.903 -> "03" soundStatus=1
22:52:23.836 -> "x==1" x=1
22:52:23.836 -> "else soundStatus" soundStatus=1
22:52:23.836 -> "01" trackCount=16
22:52:23.883 -> "03" soundStatus=1
22:52:24.818 -> "x==1" x=1
22:52:24.818 -> "else soundStatus" soundStatus=1
22:52:24.865 -> "01" trackCount=16
22:52:24.912 -> "03" soundStatus=1
22:52:25.849 -> "x==1" x=1
22:52:25.849 -> "else soundStatus" soundStatus=1
22:52:25.849 -> "01" trackCount=16
22:52:25.896 -> "03" soundStatus=1
22:52:26.832 -> "x==1" x=1
22:52:26.832 -> "else soundStatus" soundStatus=1
22:52:26.879 -> "01" trackCount=16
22:52:26.926 -> "03" soundStatus=1
22:52:27.820 -> "x==1" x=1
22:52:27.820 -> "else soundStatus" soundStatus=1
22:52:27.867 -> "01" trackCount=16
22:52:27.914 -> "03" soundStatus=1
22:52:28.855 -> "x==1" x=1
22:52:28.855 -> "else soundStatus" soundStatus=1
22:52:28.855 -> "01" trackCount=16
22:52:28.902 -> "03" soundStatus=1
22:52:29.836 -> "x==1" x=1
22:52:29.836 -> "else soundStatus" soundStatus=1
22:52:29.882 -> "01" trackCount=16
22:52:29.928 -> "03" soundStatus=1
22:52:30.819 -> "x==1" x=1
22:52:30.819 -> "else soundStatus" soundStatus=1
22:52:30.867 -> "01" trackCount=16
22:52:30.913 -> "03" soundStatus=1
22:52:31.851 -> "x==1" x=1
22:52:31.851 -> "else soundStatus" soundStatus=1
22:52:31.851 -> "01" trackCount=16
22:52:31.898 -> "03" soundStatus=1
22:52:32.835 -> "x==1" x=1
22:52:32.835 -> "else soundStatus" soundStatus=1
22:52:32.881 -> "01" trackCount=16
22:52:32.928 -> "03" soundStatus=1
22:52:33.861 -> "x==1" x=1
22:52:33.861 -> "01" trackCount=16
22:52:33.861 -> "03" soundStatus=1
22:52:33.861 -> "else soundStatus" soundStatus=1
22:52:34.845 -> "x==1" x=1
22:52:34.845 -> "01" trackCount=16
22:52:34.892 -> "03" soundStatus=1
22:52:34.892 -> "else soundStatus" soundStatus=1
22:52:35.827 -> "x==1" x=1
22:52:35.827 -> "01" trackCount=16
22:52:35.874 -> "03" soundStatus=1
22:52:35.874 -> "else soundStatus" soundStatus=1
22:52:36.853 -> "x==1" x=1
22:52:36.853 -> "01" trackCount=16
22:52:36.900 -> "else soundStatus" soundStatus=1
22:52:36.947 -> "03" soundStatus=1
22:52:37.835 -> "x==1" x=1
22:52:37.835 -> "01" trackCount=16
22:52:37.882 -> "else soundStatus" soundStatus=1
22:52:37.929 -> "03" soundStatus=1
22:52:38.863 -> "x==1" x=1
22:52:38.863 -> "01" trackCount=16
22:52:38.863 -> "else soundStatus" soundStatus=1
22:52:38.910 -> "03" soundStatus=1
22:52:39.846 -> "x==1" x=1
22:52:39.846 -> "01" trackCount=16
22:52:39.893 -> "else soundStatus" soundStatus=1
22:52:39.940 -> "03" soundStatus=1
22:52:40.870 -> "x==1" x=1
22:52:40.870 -> "01" trackCount=16
22:52:40.870 -> "else soundStatus" soundStatus=1
22:52:40.917 -> "03" soundStatus=1
22:52:41.853 -> "x==1" x=1
22:52:41.853 -> "01" trackCount=16
22:52:41.900 -> "else soundStatus" soundStatus=1
22:52:41.947 -> "03" soundStatus=1
22:52:42.831 -> "x==1" x=1
22:52:42.831 -> "01" trackCount=16
22:52:42.878 -> "else soundStatus" soundStatus=1
22:52:42.925 -> "03" soundStatus=1
22:52:43.857 -> "x==1" x=1
22:52:43.857 -> "01" trackCount=16
22:52:43.904 -> "else soundStatus" soundStatus=1
22:52:43.950 -> "03" soundStatus=1
22:52:44.834 -> "x==1" x=1
22:52:44.834 -> "01" trackCount=16
22:52:44.881 -> "else soundStatus" soundStatus=1
22:52:44.928 -> "03" soundStatus=1
22:52:45.865 -> "x==1" x=1
22:52:45.865 -> "01" trackCount=16
22:52:45.912 -> "else soundStatus" soundStatus=1
22:52:45.959 -> "03" soundStatus=1
22:52:46.852 -> "x==1" x=1
22:52:46.852 -> "01" trackCount=16
22:52:46.899 -> "else soundStatus" soundStatus=1
22:52:46.946 -> "03" soundStatus=1
22:52:47.840 -> "x==1" x=1
22:52:47.840 -> "01" trackCount=16
22:52:47.885 -> "else soundStatus" soundStatus=1
22:52:47.932 -> "03" soundStatus=1
22:52:48.867 -> "x==1" x=1
22:52:48.867 -> "01" trackCount=16
22:52:48.913 -> "else soundStatus" soundStatus=1
22:52:48.960 -> "03" soundStatus=1
22:52:49.852 -> "x==1" x=1
22:52:49.852 -> "01" trackCount=16
22:52:49.898 -> "else soundStatus" soundStatus=1
22:52:49.944 -> "03" soundStatus=1
22:52:50.880 -> "x==1" x=1
22:52:50.880 -> "01" trackCount=16
22:52:50.880 -> "else soundStatus" soundStatus=1
22:52:50.927 -> "03" soundStatus=1
22:52:51.861 -> "x==1" x=1
22:52:51.861 -> "01" trackCount=16
22:52:51.908 -> "else soundStatus" soundStatus=1
22:52:51.954 -> "03" soundStatus=1
22:52:52.845 -> "x==1" x=1
22:52:52.845 -> "01" trackCount=16
22:52:52.892 -> "else soundStatus" soundStatus=1
22:52:52.938 -> "03" soundStatus=1
22:52:53.869 -> "x==1" x=1
22:52:53.869 -> "01" trackCount=16
22:52:53.916 -> "else soundStatus" soundStatus=1
22:52:53.963 -> "03" soundStatus=1
22:52:54.851 -> "x==1" x=1
22:52:54.851 -> "01" trackCount=16
22:52:54.897 -> "else soundStatus" soundStatus=1
22:52:54.944 -> "03" soundStatus=1
22:52:55.878 -> "x==1" x=1
22:52:55.878 -> "01" trackCount=16
22:52:55.926 -> "else soundStatus" soundStatus=1
22:52:55.974 -> "03" soundStatus=1
22:52:56.862 -> "x==1" x=1
22:52:56.862 -> "01" trackCount=16
22:52:56.909 -> "else soundStatus" soundStatus=1
22:52:56.956 -> "03" soundStatus=1
22:52:57.893 -> "x==1" x=1
22:52:57.893 -> "01" trackCount=16
22:52:57.893 -> "else soundStatus" soundStatus=1
22:52:57.941 -> "03" soundStatus=1
22:52:58.882 -> "x==1" x=1
22:52:58.882 -> "01" trackCount=16
22:52:58.928 -> "else soundStatus" soundStatus=1
22:52:58.974 -> "03" soundStatus=1
22:52:59.863 -> "x==1" x=1
22:52:59.863 -> "01" trackCount=16
22:52:59.910 -> "else soundStatus" soundStatus=1
22:52:59.957 -> "03" soundStatus=1
22:53:00.888 -> "x==1" x=1
22:53:00.888 -> "01" trackCount=16
22:53:00.935 -> "03" soundStatus=1
22:53:00.935 -> "else soundStatus" soundStatus=1
22:53:01.870 -> "x==1" x=1
22:53:01.870 -> "01" trackCount=16
22:53:01.916 -> "03" soundStatus=1
22:53:01.916 -> "else soundStatus" soundStatus=1
22:53:02.898 -> "x==1" x=1
22:53:02.898 -> "01" trackCount=16
22:53:02.898 -> "03" soundStatus=1
22:53:02.898 -> "else soundStatus" soundStatus=1
22:53:03.877 -> "x==1" x=1
22:53:03.877 -> "01" trackCount=16
22:53:03.925 -> "03" soundStatus=1
22:53:03.925 -> "else soundStatus" soundStatus=1
22:53:04.860 -> "x==1" x=1
22:53:04.860 -> "01" trackCount=16
22:53:04.907 -> "03" soundStatus=1
22:53:04.907 -> "else soundStatus" soundStatus=1
22:53:05.884 -> "x==1" x=1
22:53:05.884 -> "01" trackCount=16
22:53:05.931 -> "03" soundStatus=1
22:53:05.931 -> "else soundStatus" soundStatus=1
22:53:06.869 -> "x==1" x=1
22:53:06.869 -> "01" trackCount=16
22:53:06.916 -> "03" soundStatus=1
22:53:06.916 -> "else soundStatus" soundStatus=1
22:53:07.897 -> "x==1" x=1
22:53:07.897 -> "01" trackCount=16
22:53:07.943 -> "03" soundStatus=1
22:53:07.943 -> "else soundStatus" soundStatus=1
22:53:08.878 -> "x==1" x=1
22:53:08.878 -> "01" trackCount=16
22:53:08.925 -> "03" soundStatus=1
22:53:08.925 -> "else soundStatus" soundStatus=1
22:53:09.906 -> "x==1" x=1
22:53:09.906 -> "01" trackCount=16
22:53:09.906 -> "03" soundStatus=1
22:53:09.906 -> "else soundStatus" soundStatus=1
22:53:10.883 -> "x==1" x=1
22:53:10.883 -> "01" trackCount=16
22:53:10.930 -> "03" soundStatus=1
22:53:10.930 -> "else soundStatus" soundStatus=1
22:53:11.912 -> "x==1" x=1
22:53:11.912 -> "01" trackCount=16
22:53:11.912 -> "03" soundStatus=1
22:53:11.912 -> "else soundStatus" soundStatus=1
22:53:12.885 -> "x==1" x=1
22:53:12.885 -> "01" trackCount=16
22:53:12.932 -> "03" soundStatus=1
22:53:12.932 -> "else soundStatus" soundStatus=1
22:53:13.916 -> "x==1" x=1
22:53:13.916 -> "01" trackCount=16
22:53:13.916 -> "03" soundStatus=1
22:53:13.916 -> "else soundStatus" soundStatus=1
22:53:14.893 -> "x==1" x=1
22:53:14.893 -> "01" trackCount=16
22:53:14.940 -> "03" soundStatus=1
22:53:14.940 -> "else soundStatus" soundStatus=1
22:53:15.924 -> "x==1" x=1
22:53:15.924 -> "01" trackCount=16
22:53:15.924 -> "03" soundStatus=1
22:53:15.924 -> "else soundStatus" soundStatus=1
22:53:16.905 -> "x==1" x=1
22:53:16.905 -> "01" trackCount=16
22:53:16.952 -> "03" soundStatus=1
22:53:16.952 -> "else soundStatus" soundStatus=1
22:53:17.886 -> "x==1" x=1
22:53:17.886 -> "01" trackCount=16
22:53:17.932 -> "03" soundStatus=1
22:53:17.932 -> "else soundStatus" soundStatus=1
22:53:18.914 -> "x==1" x=1
22:53:18.914 -> "01" trackCount=16
22:53:18.962 -> "03" soundStatus=1
22:53:18.962 -> "else soundStatus" soundStatus=1
22:53:19.897 -> "x==1" x=1
22:53:19.897 -> "01" trackCount=16
22:53:19.943 -> "03" soundStatus=1
22:53:19.943 -> "else soundStatus" soundStatus=1
22:53:20.921 -> "x==1" x=1
22:53:20.921 -> "01" trackCount=16
22:53:20.921 -> "03" soundStatus=1
22:53:20.921 -> "else soundStatus" soundStatus=1
22:53:21.903 -> "x==1" x=1
22:53:21.903 -> "01" trackCount=16
22:53:21.949 -> "03" soundStatus=1
22:53:21.949 -> "else soundStatus" soundStatus=1
22:53:22.931 -> "x==1" x=1
22:53:22.931 -> "01" trackCount=16
22:53:22.931 -> "03" soundStatus=1
22:53:22.931 -> "else soundStatus" soundStatus=1
22:53:23.913 -> "x==1" x=1
22:53:23.913 -> "01" trackCount=16
22:53:23.960 -> "03" soundStatus=1
22:53:23.960 -> "else soundStatus" soundStatus=1
22:53:24.896 -> "x==1" x=1
22:53:24.896 -> "01" trackCount=16
22:53:24.943 -> "03" soundStatus=1
22:53:24.943 -> "else soundStatus" soundStatus=1
22:53:25.922 -> "x==1" x=1
22:53:25.922 -> "01" trackCount=16
22:53:25.969 -> "03" soundStatus=1
22:53:25.969 -> "else soundStatus" soundStatus=1
22:53:26.901 -> "x==1" x=1
22:53:26.901 -> "01" trackCount=16
22:53:26.948 -> "03" soundStatus=1
22:53:26.948 -> "else soundStatus" soundStatus=1
22:53:27.929 -> "x==1" x=1
22:53:27.929 -> "01" trackCount=16
22:53:27.976 -> "03" soundStatus=1
22:53:27.976 -> "else soundStatus" soundStatus=1
22:53:28.912 -> "x==1" x=1
22:53:28.912 -> "01" trackCount=16
22:53:28.961 -> "03" soundStatus=1
22:53:28.961 -> "else soundStatus" soundStatus=1
22:53:29.946 -> "x==1" x=1
22:53:29.946 -> "01" trackCount=16
22:53:29.946 -> "03" soundStatus=1
22:53:29.946 -> "else soundStatus" soundStatus=1
22:53:30.925 -> "x==1" x=1
22:53:30.925 -> "01" trackCount=16
22:53:30.971 -> "03" soundStatus=1
22:53:30.971 -> "else soundStatus" soundStatus=1
22:53:31.908 -> "x==1" x=1
22:53:31.908 -> "01" trackCount=16
22:53:31.955 -> "03" soundStatus=1
22:53:31.955 -> "else soundStatus" soundStatus=1
22:53:32.937 -> "x==1" x=1
22:53:32.937 -> "01" trackCount=16
22:53:32.984 -> "03" soundStatus=1
22:53:32.984 -> "else soundStatus" soundStatus=1
22:53:33.914 -> "x==1" x=1
22:53:33.914 -> "01" trackCount=16
22:53:33.961 -> "03" soundStatus=1
22:53:33.961 -> "else soundStatus" soundStatus=1
22:53:34.946 -> "x==1" x=1
22:53:34.946 -> "01" trackCount=16
22:53:34.946 -> "03" soundStatus=1
22:53:34.946 -> "else soundStatus" soundStatus=1
22:53:35.924 -> "x==1" x=1
22:53:35.924 -> "01" trackCount=16
22:53:35.970 -> "03" soundStatus=1
22:53:35.970 -> "else soundStatus" soundStatus=1
22:53:36.950 -> "x==1" x=1
22:53:36.950 -> "01" trackCount=16
22:53:36.950 -> "03" soundStatus=1
22:53:36.950 -> "else soundStatus" soundStatus=1
22:53:37.934 -> "x==1" x=1
22:53:37.934 -> "01" trackCount=16
22:53:37.980 -> "03" soundStatus=1
22:53:37.980 -> "else soundStatus" soundStatus=1
22:53:38.959 -> "x==1" x=1
22:53:38.959 -> "01" trackCount=16
22:53:38.959 -> "03" soundStatus=1
22:53:38.959 -> "else soundStatus" soundStatus=1
22:53:39.941 -> "x==1" x=1
22:53:39.941 -> "01" trackCount=16
22:53:39.988 -> "03" soundStatus=1
22:53:39.988 -> "else soundStatus" soundStatus=1
22:53:40.967 -> "x==1" x=1
22:53:40.967 -> "01" trackCount=16
22:53:40.967 -> "03" soundStatus=1
22:53:40.967 -> "else soundStatus" soundStatus=1
22:53:41.952 -> "x==1" x=1
22:53:41.952 -> "01" trackCount=16
22:53:41.999 -> "03" soundStatus=1
22:53:41.999 -> "else soundStatus" soundStatus=1
22:53:42.934 -> "x==1" x=1
22:53:42.934 -> "01" trackCount=16
22:53:42.981 -> "03" soundStatus=1
22:53:42.981 -> "else soundStatus" soundStatus=1
22:53:43.961 -> "x==1" x=1
22:53:43.961 -> "01" trackCount=16
22:53:43.961 -> "03" soundStatus=1
22:53:43.961 -> "else soundStatus" soundStatus=1
22:53:44.943 -> "x==1" x=1
22:53:44.943 -> "01" trackCount=16
22:53:44.991 -> "03" soundStatus=1
22:53:44.991 -> "else soundStatus" soundStatus=1
22:53:45.976 -> "x==1" x=1
22:53:45.976 -> "01" trackCount=16
22:53:45.976 -> "03" soundStatus=1
22:53:45.976 -> "else soundStatus" soundStatus=1
22:53:46.956 -> "x==1" x=1
22:53:46.956 -> "01" trackCount=16
22:53:47.003 -> "03" soundStatus=1
22:53:47.003 -> "else soundStatus" soundStatus=1
22:53:47.938 -> "x==1" x=1
22:53:47.938 -> "01" trackCount=16
22:53:47.984 -> "03" soundStatus=1
22:53:47.984 -> "else soundStatus" soundStatus=1
22:53:48.971 -> "x==1" x=1
22:53:48.971 -> "01" trackCount=16
22:53:48.971 -> "03" soundStatus=1
22:53:48.971 -> "else soundStatus" soundStatus=1
22:53:49.953 -> "x==1" x=1
22:53:49.953 -> "01" trackCount=16
22:53:50.000 -> "03" soundStatus=1
22:53:50.000 -> "else soundStatus" soundStatus=1
22:53:50.982 -> "x==1" x=1
22:53:50.982 -> "01" trackCount=16
22:53:50.982 -> "03" soundStatus=1
22:53:50.982 -> "else soundStatus" soundStatus=1
22:53:51.962 -> "x==1" x=1
22:53:51.962 -> "01" trackCount=16
22:53:52.009 -> "03" soundStatus=1
22:53:52.009 -> "else soundStatus" soundStatus=1
22:53:52.944 -> "x==1" x=1
22:53:52.944 -> "01" trackCount=16
22:53:52.990 -> "03" soundStatus=1
22:53:52.990 -> "else soundStatus" soundStatus=1
22:53:53.967 -> "x==1" x=1
22:53:53.967 -> "01" trackCount=16
22:53:54.013 -> "03" soundStatus=1
22:53:54.013 -> "else soundStatus" soundStatus=1
22:53:54.946 -> "x==1" x=1
22:53:54.946 -> "01" trackCount=16
22:53:54.993 -> "03" soundStatus=1
22:53:54.993 -> "else soundStatus" soundStatus=1
22:53:55.970 -> "x==1" x=1
22:53:55.970 -> "01" trackCount=16
22:53:56.149 -> "03" soundStatus=1
22:53:56.149 -> "else soundStatus" soundStatus=1
22:53:56.949 -> "x==1" x=1
22:53:56.949 -> "01" trackCount=16
22:53:57.138 -> "03" soundStatus=1
22:53:57.138 -> "else soundStatus" soundStatus=1
22:53:57.974 -> "x==1" x=1
22:53:57.974 -> "01" trackCount=16
22:53:58.020 -> "03" soundStatus=1
22:53:58.020 -> "else soundStatus" soundStatus=1
22:53:58.955 -> "x==1" x=1
22:53:58.955 -> "01" trackCount=16
22:53:59.002 -> "03" soundStatus=1
22:53:59.002 -> "else soundStatus" soundStatus=1
22:53:59.978 -> "x==1" x=1
22:53:59.978 -> "01" trackCount=16
22:54:00.025 -> "03" soundStatus=1
22:54:00.025 -> "else soundStatus" soundStatus=1
22:54:00.960 -> "x==1" x=1
22:54:00.960 -> "01" trackCount=16
22:54:01.007 -> "03" soundStatus=1
22:54:01.007 -> "else soundStatus" soundStatus=1
22:54:01.987 -> "x==1" x=1
22:54:01.987 -> "01" trackCount=16
22:54:02.034 -> "03" soundStatus=1
22:54:02.034 -> "else soundStatus" soundStatus=1
22:54:02.964 -> "x==1" x=1
22:54:02.964 -> "01" trackCount=16
22:54:03.011 -> "03" soundStatus=1
22:54:03.011 -> "else soundStatus" soundStatus=1
22:54:03.991 -> "x==1" x=1
22:54:03.991 -> "01" trackCount=16
22:54:04.038 -> "03" soundStatus=1
22:54:04.038 -> "else soundStatus" soundStatus=1
22:54:04.971 -> "x==1" x=1
22:54:04.971 -> "01" trackCount=16
22:54:05.018 -> "03" soundStatus=1
22:54:05.018 -> "else soundStatus" soundStatus=1
22:54:05.991 -> "x==1" x=1
22:54:05.991 -> "01" trackCount=16
22:54:06.038 -> "03" soundStatus=1
22:54:06.038 -> "else soundStatus" soundStatus=1
22:54:06.971 -> "x==1" x=1
22:54:06.971 -> "01" trackCount=16
22:54:07.018 -> "03" soundStatus=1
22:54:07.018 -> "else soundStatus" soundStatus=1
22:54:07.997 -> "x==1" x=1
22:54:07.997 -> "01" trackCount=16
22:54:08.043 -> "03" soundStatus=1
22:54:08.043 -> "else soundStatus" soundStatus=1
22:54:08.979 -> "x==1" x=1
22:54:08.979 -> "01" trackCount=16
22:54:09.026 -> "03" soundStatus=1
22:54:09.026 -> "else soundStatus" soundStatus=1
22:54:10.009 -> "x==1" x=1
22:54:10.009 -> "01" trackCount=16
22:54:10.009 -> "03" soundStatus=1
22:54:10.009 -> "else soundStatus" soundStatus=1
22:54:10.990 -> "x==1" x=1
22:54:10.990 -> "01" trackCount=16
22:54:11.036 -> "03" soundStatus=1
22:54:11.036 -> "else soundStatus" soundStatus=1
22:54:12.017 -> "x==1" x=1
22:54:12.017 -> "01" trackCount=16
22:54:12.017 -> "03" soundStatus=1
22:54:12.017 -> "else soundStatus" soundStatus=1
22:54:12.993 -> "x==1" x=1
22:54:12.993 -> "01" trackCount=16
22:54:13.039 -> "03" soundStatus=1
22:54:13.039 -> "else soundStatus" soundStatus=1
22:54:14.020 -> "x==1" x=1
22:54:14.020 -> "01" trackCount=16
22:54:14.020 -> "03" soundStatus=1
22:54:14.020 -> "else soundStatus" soundStatus=1
22:54:15.002 -> "x==1" x=1
22:54:15.002 -> "01" trackCount=16
22:54:15.049 -> "03" soundStatus=1
22:54:15.049 -> "else soundStatus" soundStatus=1
22:54:15.986 -> "x==1" x=1
22:54:15.986 -> "01" trackCount=16
22:54:16.032 -> "03" soundStatus=1
22:54:16.032 -> "else soundStatus" soundStatus=1
22:54:17.012 -> "x==1" x=1
22:54:17.012 -> "01" trackCount=16
22:54:17.059 -> "03" soundStatus=1
22:54:17.059 -> "else soundStatus" soundStatus=1
22:54:17.991 -> "x==1" x=1
22:54:17.991 -> "01" trackCount=16
22:54:18.038 -> "03" soundStatus=1
22:54:18.038 -> "else soundStatus" soundStatus=1
22:54:19.019 -> "x==1" x=1
22:54:19.019 -> "01" trackCount=16
22:54:19.019 -> "03" soundStatus=1
22:54:19.019 -> "else soundStatus" soundStatus=1
22:54:19.995 -> "x==1" x=1
22:54:19.995 -> "01" trackCount=16
22:54:20.042 -> "03" soundStatus=1
22:54:20.042 -> "else soundStatus" soundStatus=1
22:54:21.020 -> "x==1" x=1
22:54:21.020 -> "01" trackCount=16
22:54:21.067 -> "03" soundStatus=1
22:54:21.067 -> "else soundStatus" soundStatus=1
22:54:21.998 -> "x==1" x=1
22:54:21.998 -> "01" trackCount=16
22:54:22.045 -> "03" soundStatus=1
22:54:22.045 -> "else soundStatus" soundStatus=1
22:54:23.025 -> "x==1" x=1
22:54:23.025 -> "01" trackCount=16
22:54:23.072 -> "03" soundStatus=1
22:54:23.072 -> "else soundStatus" soundStatus=1
22:54:24.006 -> "x==1" x=1
22:54:24.006 -> "01" trackCount=16
22:54:24.053 -> "03" soundStatus=1
22:54:24.053 -> "else soundStatus" soundStatus=1
22:54:25.037 -> "x==1" x=1
22:54:25.037 -> "01" trackCount=16
22:54:25.037 -> "03" soundStatus=1
22:54:25.037 -> "else soundStatus" soundStatus=1
22:54:26.023 -> "x==1" x=1
22:54:26.023 -> "01" trackCount=16
22:54:26.070 -> "03" soundStatus=1
22:54:26.070 -> "else soundStatus" soundStatus=1
22:54:27.000 -> "x==1" x=1
22:54:27.000 -> "01" trackCount=16
22:54:27.046 -> "03" soundStatus=1
22:54:27.046 -> "else soundStatus" soundStatus=1
22:54:28.025 -> "x==1" x=1
22:54:28.025 -> "01" trackCount=16
22:54:28.072 -> "03" soundStatus=1
22:54:28.072 -> "else soundStatus" soundStatus=1
22:54:29.008 -> "x==1" x=1
22:54:29.008 -> "01" trackCount=16
22:54:29.054 -> "03" soundStatus=1
22:54:29.054 -> "else soundStatus" soundStatus=1
22:54:30.037 -> "x==1" x=1
22:54:30.037 -> "01" trackCount=16
22:54:30.084 -> "03" soundStatus=1
22:54:30.084 -> "else soundStatus" soundStatus=1
22:54:31.019 -> "x==1" x=1
22:54:31.019 -> "01" trackCount=16
22:54:31.066 -> "03" soundStatus=1
22:54:31.066 -> "else soundStatus" soundStatus=1
22:54:32.047 -> "x==1" x=1
22:54:32.047 -> "01" trackCount=16
22:54:32.047 -> "03" soundStatus=1
22:54:32.047 -> "else soundStatus" soundStatus=1
22:54:33.025 -> "x==1" x=1
22:54:33.025 -> "01" trackCount=16
22:54:33.072 -> "03" soundStatus=1
22:54:33.072 -> "else soundStatus" soundStatus=1
22:54:34.053 -> "x==1" x=1
22:54:34.053 -> "01" trackCount=16
22:54:34.053 -> "03" soundStatus=1
22:54:34.053 -> "else soundStatus" soundStatus=1
22:54:35.035 -> "x==1" x=1
22:54:35.035 -> "01" trackCount=16
22:54:35.082 -> "else soundStatus" soundStatus=1
22:54:35.128 -> "03" soundStatus=1
22:54:36.062 -> "x==1" x=1
22:54:36.062 -> "01" trackCount=16
22:54:36.062 -> "else soundStatus" soundStatus=1
22:54:36.108 -> "03" soundStatus=1
22:54:37.040 -> "x==1" x=1
22:54:37.040 -> "01" trackCount=16
22:54:37.087 -> "else soundStatus" soundStatus=1
22:54:37.133 -> "03" soundStatus=1
22:54:38.021 -> "x==1" x=1
22:54:38.021 -> "01" trackCount=16
22:54:38.068 -> "else soundStatus" soundStatus=1
22:54:38.115 -> "03" soundStatus=1
22:54:39.048 -> "x==1" x=1
22:54:39.048 -> "01" trackCount=16
22:54:39.095 -> "else soundStatus" soundStatus=1
22:54:39.142 -> "03" soundStatus=1
22:54:40.026 -> "x==1" x=1
22:54:40.026 -> "01" trackCount=16
22:54:40.071 -> "else soundStatus" soundStatus=1
22:54:40.119 -> "03" soundStatus=1
22:54:41.056 -> "x==1" x=1
22:54:41.056 -> "01" trackCount=16
22:54:41.056 -> "else soundStatus" soundStatus=1
22:54:41.104 -> "03" soundStatus=1

``

At least on the AVR platform, NeoPixel code turns interrupts off for extended periods of time. It can wreak havoc on any code that uses interrupts, including core functions like Serial. It has to be done, to make the bit-banging work.

It is indeed

pixels.show()

that interrupts the loop.

If I comment only those lines out it works. But by moving that line out of the for loop the lights won't turn on.

I managed to solve the automatic playing:

#include <mp3tf16p.h>
#include <Wire.h>
#include <Adafruit_CAP1188.h>
#include <Adafruit_NeoPixel.h>

MP3Player mp3(10, 11);
int volumeLevel;

Adafruit_CAP1188 cap = Adafruit_CAP1188();
#define CAP1188_SENSITIVITY 0x6F
uint8_t prevTouch1 = 0;
uint8_t prevTouch2 = 0;
int x = 1;

#define PIN 6
#define NUMPIXELS 24
Adafruit_NeoPixel pixels(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
uint32_t black = pixels.Color(0, 0, 0);
int sound = 2;

unsigned long previousMillis = 0;
const long interval = 900;

void setup(void)
{
  Serial.begin(9600);
  mp3.initialize();

  if (!cap.begin()) {
    while (1);
  }

  pinMode(sound, INPUT);
  pixels.begin();
  pixels.setBrightness(50);
}

void loop(void)
{
  int volumelevel = 10;
  int trackCount = mp3.player.readFileCounts();

  for (int i = 1; i <= trackCount ; i++)
  {
    mp3.playTrackNumber(i, volumelevel, false);

    while (!mp3.playCompleted()) {
      unsigned long currentMillis = millis();
      int soundStatus = digitalRead(sound);
      uint8_t touched = cap.touched();
      if (touched != prevTouch1) {
        if (touched & 0x01) {
          mp3.playTrackNumber((i + 1), volumelevel, false);
          i ++;
        }
        prevTouch1 = touched;
      }
      if (touched != prevTouch2) {
        if (touched & 0x02) {
          x ++;
          if (x == 3) {
            x = 1;
          }
        }
        prevTouch2 = touched;
      }

      if (x == 1) {
        if (soundStatus == 0) {
          pixels.clear();
          pixels.setPixelColor(0, pixels.Color(255, 0, 0));
          pixels.setPixelColor(12, pixels.Color(255, 0, 0));
          pixels.setPixelColor(1, pixels.Color(255, 127, 0));
          pixels.setPixelColor(23, pixels.Color(255, 127, 0));
          pixels.setPixelColor(2, pixels.Color(255, 255, 0));
          pixels.setPixelColor(22, pixels.Color(255, 255, 0));
          pixels.setPixelColor(3, pixels.Color(127, 255, 0));
          pixels.setPixelColor(21, pixels.Color(127, 255, 0));
          pixels.setPixelColor(4, pixels.Color(0, 255, 0));
          pixels.setPixelColor(20, pixels.Color(0, 255, 0));
          pixels.setPixelColor(5, pixels.Color(0, 255, 127));
          pixels.setPixelColor(19, pixels.Color(0, 255, 127));
          pixels.setPixelColor(6, pixels.Color(0, 255, 255));
          pixels.setPixelColor(18, pixels.Color(0, 255, 255));
          pixels.setPixelColor(7, pixels.Color(0, 127, 255));
          pixels.setPixelColor(17, pixels.Color(0, 127, 255));
          pixels.setPixelColor(8, pixels.Color(0, 0, 255));
          pixels.setPixelColor(16, pixels.Color(0, 0, 255));
          pixels.setPixelColor(9, pixels.Color(127, 0, 255));
          pixels.setPixelColor(15, pixels.Color(127, 0, 255));
          pixels.setPixelColor(10, pixels.Color(255, 0, 255));
          pixels.setPixelColor(14, pixels.Color(255, 0, 255));
          pixels.setPixelColor(11, pixels.Color(255, 0, 127));
          pixels.setPixelColor(13, pixels.Color(255, 0, 127));
          pixels.show();
        }

        else {
          if (currentMillis - previousMillis >= interval) {
            mp3.playTrackNumber((i + 1), volumelevel, false);
            i ++;
          }

          else {
            pixels.clear();
            pixels.fill(black, 0, 23);
            pixels.show();
            previousMillis = currentMillis;
          }
        }
      }

      else {
        if (currentMillis - previousMillis >= interval) {
          mp3.playTrackNumber((i + 1), volumelevel, false);
          i ++;
        }

        else {
          pixels.clear();
          pixels.fill(black, 0, 23);
          pixels.show();
          previousMillis = currentMillis;
        }

        if (i >= trackCount) {
          i = 1;
        }

        else {
        }
      }
    }
  }
  mp3.serialPrintStatus(MP3_ALL_MESSAGE);
}

But now it doesn't play automatically anymore when you skip a sound using this part of the code:

 if (touched != prevTouch1) {
        if (touched & 0x01) {
          mp3.playTrackNumber((i + 1), volumelevel, false);
          i ++;
        }
        prevTouch1 = touched;
      }

So when I touch the first sensor of the capsense it switches to the next sound but when that sound is finished it doesn't automatically go to the next as it does when you haven't skipped a sound. I don't know if this is something that could work or if I should save the hustle and just remove the sound skipping option?

dear @ninanas98

if somebody other than you shall really help analysing what the code does it is

always

nescsessary to post the complete sketch.
There is a logical bug in your code that is guaranteed

outside

the posted code-snippet.
How should anybody analyse your code if your actual code-version is not available in the forum?

So please please please

always post the complete sketch

best regards Stefan

Dear Stefan,

I posted the complete sketch first and posted the snippet to point out what part of the code didn't work. Instead refering to the lines of code as you said before was not a good way to refer to any part of the code. So the snipet was just really meant to be able to navigate jn the complete code posted before. I thought that would made the story a bit more clear rather than saying that the code doesn't work

There is always a danger that a user has made changes to the code and the user thinks these changes don't matter.

This sounds like you have made changes to the code.

This again sounds like you have made changes to the code.

Hence the beg for posting your real actual code

The quickest way to post the complete sketch is to

  • press ctrl-T for automformatting
  • do a right-click with the mouse and choose "copy for forum"
    Then press ctrl-v in the posting
    e voilà ! sketch is posted as a code-section because the function
    "copy for forum" automatically adds the startcode / endcode characters

best regards Stefan

This is the final code I have. Didn't make any other changes on the code posted in that post. It os differently to the code posted in previous posts. But I haven't touched the code since I posted that version.

That piece of code is a literal copy from a part of the code above. So haven't touched that part either.

The entire post was just to show what I had done differently to the code in the previous posts and that it still didn't fully workout the way I wanted it to. Although I didn't use the copy for forum. Just the old school ctrl c, ctrl v

Did you mean "shuffle"?

No just really if it's worth the time to try to solve it or if it's better not to because it would be a waste of time as it might not be able to be solved