36 void* end = (uint8_t*)data+len;
38 while(datachunk->
id + datachunk->
size < end && strncmp(datachunk->
id,
"data", 4) != 0)
45 if(!header || !datachunk ||
46 strncmp(header->
chunk_id,
"RIFF", 4) ||
47 strncmp(header->
format,
"WAVE", 4) ||
48 strncmp(datachunk->
id,
"data", 4) ||
68 size_t total = datachunk->
size/(header->
bps/8);
88 size_t pos = channel % channels;
90 int8_t* data = (int8_t*)
getData();
91 for(
size_t i=0; i<len; ++i){
92 output[i] = (float)data[pos] / 128.0f;
96 int16_t* data = (int16_t*)
getData();
97 for(
size_t i=0; i<len; ++i){
98 output[i] = (float)data[pos] / 32768.0f;
109 float* data = (
float*)
getData();
110 for(
size_t i=0; i<len; ++i){
111 output[i] = data[pos];
118 read(channel, output);
This class contains useful methods for manipulating arrays of floats.
static FloatArray create(int size)
Creates a new FloatArray.
size_t getNumberOfChannels()
FloatArray createFloatArray(size_t channel)
WavFile(void *data, size_t len)
size_t getBitsPerSample()
size_t getNumberOfSamples()
void read(size_t channel, FloatArray output)