Stap 7: Het lezen van de wav Header
WAV-bestanden worden opgeslagen met een bepaalde frequentie en data grootte.
Deze informatie is opgenomen in een 44 byte header aan het begin van een wav-bestand.
Hoewel sommige software breidt de header (na byte 35), de locatie van de gegevens maken grootte meer moeilijk te vinden.
Om te lezen van de kop wij creëren een buffer en het begin van het bestand te kopiëren.
De frequentie wordt opgeslagen in 4 bytes vanaf 24 bytes in het bestand.
Lees frequentie opgegeven in de header van het bestand van de wav
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 ("bestand frequentie"));
Serial.Print(RetVal);
.
De beste manier om te vinden de grootte van de gegevens is om te zoeken naar het woord "gegevens" in de kop.
Pak vervolgens de 4 bytes na, die deel van de long-waarde uitmaken
unsigned long retval;
int mypos = 40;
for (int i = 36; ik < 60; i ++) {}
Als (headbuf [i] == had') {}
if(headbuf[i+1]=='A') {}
if(headbuf[i+2]=='t') {}
if(headbuf[i+3]=='A') {}
eindelijk hebben we het
mypos = i + 4;
Ik = 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 hebben we de data lengte en frequentie!
De audiogegevens volgt de 4 bytes die deel uitmaken van de gegevenswaarde voor de lengte.