You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I was having a few issues when attempting to play an mp3 from a specified ms time and found the following.
The variable "bitrate" is declared in SFEMP3Shield.h as a uint8_t, which only allows bitrates up to 224kbps. I changed it to uint16_t which solves that issue.
The If...else if... else if... else statement found in the getBitRateFromMP3File(filename) function (SFEMP3Shield.cpp) seems to not be functioning as, I imagine, it should be. If the MP3 file is MPEG Version 2/2.5 then the first if statement evaluates true, and no other code is run in the if/else if block.... causing the "bitrate" variable to be filled with an incorrect bitrate.
I tested with multiple files, bitrates, and sample rates and was getting incorrect bitrates often.
//found the 11 1's
//parse version, layer and bitrate out and save bitrate
if(!(temp & 0b00001000)) { //!true if Version 1, !false version 2 and 2.5
row_num = 3;
}
else if((temp & 0b00000110) == 0b00000100) { //true if layer 2, false if layer 1 or 3
row_num += 1;
}
else if((temp & 0b00000110) == 0b00000010) { //true if layer 3, false if layer 2 or 1
row_num += 2;
} else {
continue; // Not found, need to skip the rest and continue looking.
// \warning But this can lead to a dead end and file end of file.
}
I seem to have fixed my issue by replacing the existing if...else if....else if...else with the following.
Arduino 1.8.19
LilyPad MP3
I was having a few issues when attempting to play an mp3 from a specified ms time and found the following.
The variable "bitrate" is declared in SFEMP3Shield.h as a uint8_t, which only allows bitrates up to 224kbps. I changed it to uint16_t which solves that issue.
The If...else if... else if... else statement found in the getBitRateFromMP3File(filename) function (SFEMP3Shield.cpp) seems to not be functioning as, I imagine, it should be. If the MP3 file is MPEG Version 2/2.5 then the first if statement evaluates true, and no other code is run in the if/else if block.... causing the "bitrate" variable to be filled with an incorrect bitrate.
I tested with multiple files, bitrates, and sample rates and was getting incorrect bitrates often.
I seem to have fixed my issue by replacing the existing if...else if....else if...else with the following.
These two changes allowed me to play any file from any ms timestamp, without issue.
The text was updated successfully, but these errors were encountered: