     if ( message.type > TYPE_STOP && !musicPlayer.playingMusic) {
         Serial << endl; // TODO: what does this line do?
         musicPlayer.setVolume(message.volume, message.volume);
-        playRandomTrack(getDirectory(message.type), message.playCount);
+        playRandomTrack(musicDir[message.type]);
     } else if ( message.type == TYPE_STOP && musicPlayer.playingMusic ) {
         musicPlayer.stopPlaying();
     } else if ( message.type == TYPE_VOLUME ) {

    }
}

const char * getDirectory(int messageType) {
    if (messageType == TYPE_BAFF) { return dirBaff; }
    //return dirBaff;
    switch (messageType) {
        case TYPE_BAFF: return dirBaff;
        case TYPE_WIN: return dirWins;
        case TYPE_LOSE: return dirLose;
        case TYPE_ROCK: return dirRock;
        //case 5: musicUnitTest(); break;
    }
}

void playRandomTrack(const char *dirName, int totalTracks) {
    // soft reset.  hate to have this here, but when I flip btw codec types, I get static w/o this.
    musicPlayer.stopPlaying();
    musicPlayer.sciWrite(VS1053_REG_MODE, VS1053_MODE_SM_SDINEW | VS1053_MODE_SM_RESET);

    File dir = SD.open(dirName);
    if ( ! dir.isDirectory() ) {
        Serial << F("Error! not a directory: ") << dirName << endl;
    }
    dir.rewindDirectory(); // can't seem to cleanly get the SD card file handlers to start at the top of the dir!!!!

    // pick a track
    int track = random(0, totalTracks);

    // seek file
    File entry = dir.openNextFile(); // have to open a file simply to get it's name!!

    }
    Serial << F("SD OK!") << endl;

    configMusicDir(musicDir[TYPE_BAFF], dirBaff);
    configMusicDir(musicDir[TYPE_WIN], dirWins);
    configMusicDir(musicDir[TYPE_LOSE], dirLose);
    configMusicDir(musicDir[TYPE_ROCK], dirRock);

    // show counts
    Serial << F("Track counts:") << endl;
