W danych falowych próbki są przeplatane. Oznacza to, że dane są zorganizowane w ten sposób.
Sample 1 Left | Sample 1 Right | Sample 2 Left | Sample 2 right ... Sample n Left | Sample n right
Ponieważ dla każdej próbki wynosi 16 bity (2 bajty) pierwszą próbkę 2 kanał (to znaczy do lewej i prawej) 4 bajtów.
ten sposób wiesz, że ostatnia próba w bloku danych fali jest następujący:
wavDataSize - 4
Następnie można załadować każdą próbkę w czasie poprzez skopiowanie go do innego bufora zaczynając od końca zapisu i odczytu do tyłu. Gdy dojdziesz do początku danych fal, odwróciłeś dane fal i odtwarzanie zostanie odwrócone.
Edycja: Jeśli chcesz mieć łatwy sposób czytania plików wave na iOS, sprawdź numer Audio File Services Reference.
Edit 2:
readPoint = waveDataSize;
writePoint = 0;
while(readPoint > 0)
{
readPoint -= 4;
Uint32 bytesToRead = 4;
Uint32 sample;
AudioFileReadBytes(inFile, false, maxData, &bytesToRead &sample);
AudioFileWriteBytes(outFile, false, writePoint, &bytesToRead, &sample);
writePoint += 4;
}
Trudność polega na tym, że jest to format pliku wav z nagłówkiem i fragmentami. – zaph
@CocoaFu: Niezupełnie. Apple oferuje całą gamę funkcji związanych z plikami wave. Sam format nie jest trudny do zrobienia. – Goz
@Goz Dzięki, jeśli nie jest to zbyt trudne pytanie, czy możesz podać próbkę kodu, aby pomóc mi zrozumieć? Jak można to osiągnąć w sensie kodowym? – DaveSmith122