Spela ljud-ljudfiler (wav) med en Arduino (7 / 9 steg)
Steg 7: Läsa wav Header
WAV-filer sparas med en viss frekvens och data storlek.
Denna information finns i en 44 byte header i början av en wav-fil.
Även om vissa program sträcker sig i huvudet (efter byte 35), vilket gör platsen för data storlek mer svårt att lokalisera.
För att läsa rubriken vi skapa en buffert och kopiera i början av filen.
Hur ofta lagras i 4 byte start 24 byte in i filen.
Läs frekvens anges i wav filhuvudet
byte headbuf [60]
tempfile.Seek(0);
tempfile.Read(headbuf,60);
retval = headbuf [27].
retval = (retval << 8) | headbuf [26].
retval = (retval << 8) | headbuf [25].
retval = (retval << 8) | headbuf [24].
Serial.Print F ("filen frekvens").
Serial.Print(retval);
.
Det bästa sättet att hitta information om storlek är att söka efter ordet "data" i huvudet.
Extrahera sedan de 4 byte efter den, som utgör värdet lång
osignerade långa retval;
int mypos = 40;
för (int jag = 36; jag < 60; i ++) {
om (headbuf [i] == hade ") {
IF(headbuf[i+1]=='a') {
IF(headbuf[i+2]=='t') {
IF(headbuf[i+3]=='a') {
äntligen har vi det
mypos = i + 4.
Jag = 60.
}
}
}
}
}
tempfile.Seek(mypos);
retval = headbuf [mypos + 3];
retval = (retval << 8) | headbuf [mypos + 2];
retval = (retval << 8) | headbuf [mypos + 1];
retval = (retval << 8) | headbuf [mypos];
.
OK har vi datalängd och frekvens!
Ljuddata följer de 4 byte att göra upp längden datavärde.