Det som tar tid är ju när läsaren i HDn får göra lite större hopp än nästa sector på disken... Tidigare så läste jag en/två sectorer mp3-data och sedan adressen till nästa cluster från en annan sector på disken och detta tog ganska mycket tid och orsakade hackande uppspelning... Har provat lite olika metoder nu för att snabba upp det, bla att läsa en hel bunnt med cluster-adresser, spara i AVRns RAM och sedan bara föja adresserna. Detta gick väl bra tills det var dags att läsa in nya adresser (ungefär var 4sek), då la musiken av i ca 1 sek och forsatte sedan

Nu har jag funderat i några dagar på hur det ska gå att lösa och det jag tänkt mest på och nu börjat arbeta med är att läsa hela cluster-kjedjan för filen som ska spelas och spara den som en fil på hårddisken och sedan läsa adressena igen, fast från filen denna gång. Fördelen med detta framför att läsa adresserna direkt från FAT där dom ligger är att här får man alltid 128adresser vid varje läsning av en sector av filen, jämfört med att läsa adresserna när dom ligger i FAT på en extremt dåligt defragmenterad disk, då man kan ha otur och få en adress från en sektor = att man kanske måste läsa 128sectorer för att få 128adresser = Massor av tid (Iof så lär den disken som är så dåligt defraggad aldrig stötas på, men bara så att det blir lite lättare att förstå skildnaden).
Eftersom jag knappt förstår själv vad jag babblar om här ovan så försöker jag sammanfatta det lite enkelt här nedan:
Kod: Markera allt
Spara hela cluster-kjedjan i en fil på HDn.
Loopa tills låten är slut
{
Läs 128cluster-adresser från den sparade filen.
Kör 128ggr, tills clusteradresserna är slut
{
Läs ett cluster mp3-data som första/andra/tredje/... cluster-adressen pekar på.
Skicka Mp3-datan från det lästa clustret till decodern.
}
}