Arduino (Mega) ljudinspelning (5 / 9 steg)
Steg 5: Våg-filformat
En våg filhuvudet är en 44 byte block.
Huvudet är i början av wav-fil.
Header block måste vara påbörjas globalt med:
byte wavheader [44].
Ljuddata följer huvudet.
För en 8 bitars är mono wav-fildata ett tal mellan 0 och 255.
Skriptet läser A1 hamnen, tolkar inkommande ljud som en spänning mellan 0 och 255. Perfekta!
Endast 4 sektioner huvudet skulle behöva uppdateras när den en wav-fil sparas.
Dessa visas som kommenterade avsnitten i bilden.
Byte vid offset 4 innehåller längden på data + längden av huvudet - 2 * 4 byte
Eller helt enkelt data räkningen + 36.
Alla kommenterade avsnittet är ett tal på 4 byte.
De fyra byte ske med den minst signifikanta byten första - detta är "little endian format".
Följande rutin kommer att acceptera ett långt heltal och skriva den till en angiven punkt i wav huvudet som 4 så byte:
void headmod (lång värde, byte läge) {
skriva fyra byte för en lång
tempfile.Seek(location); hitta platsen i filen
byte tbuf [4].
tbuf [0] = värde & 0xFF; Lo byte
tbuf [1] = (värde >> 8) & 0xFF;
tbuf [2] = (värde >> 16) & 0xFF;
tbuf [3] = (värde >> 24) & 0xFF; Hej byte
tempfile.write(tbuf,4); Skriv 4 byte bufferten
}