@@ -78,7 +78,7 @@ class WavFile {
7878 void * getData (){
7979 return datachunk->id + sizeof (WavDataChunk);
8080 }
81- void read (size_t channel, FloatArray output){
81+ void read (size_t channel, FloatArray output, bool all= false ){
8282 size_t channels = getNumberOfChannels ();
8383 size_t len = getNumberOfSamples ();
8484 if (len > output.getSize ())
@@ -87,14 +87,14 @@ class WavFile {
8787 if (header->audio_format == 1 && header->bps == 8 ){ // WAVE_FORMAT_PCM 8-bit
8888 int8_t * data = (int8_t *)getData ();
8989 for (size_t i=0 ; i<len; ++i){
90- output[i] = (float )data[pos] / 128 .0f ;
91- pos += channels;
90+ output[i] = (float )data[pos] / 128 .0f ;
91+ pos += all ? 1 : channels;
9292 }
9393 }else if (header->audio_format == 1 && header->bps == 16 ){ // WAVE_FORMAT_PCM 16-bit
9494 int16_t * data = (int16_t *)getData ();
9595 for (size_t i=0 ; i<len; ++i){
96- output[i] = (float )data[pos] / 32768 .0f ;
97- pos += channels;
96+ output[i] = (float )data[pos] / 32768 .0f ;
97+ pos += all ? 1 : channels;
9898 }
9999 // todo: 24-bit data needs decoding
100100 // }else if(header->audio_format == 1 && header->bps == 24){ // WAVE_FORMAT_PCM 24-bit
@@ -106,8 +106,8 @@ class WavFile {
106106 }else if (header->audio_format == 3 && header->bps == 32 ){ // WAVE_FORMAT_IEEE_FLOAT
107107 float * data = (float *)getData ();
108108 for (size_t i=0 ; i<len; ++i){
109- output[i] = data[pos];
110- pos += channels;
109+ output[i] = data[pos];
110+ pos += all ? 1 : channels;
111111 }
112112 }
113113 }
@@ -116,6 +116,11 @@ class WavFile {
116116 read (channel, output);
117117 return output;
118118 }
119+ FloatArray createFloatArray (){
120+ FloatArray output = FloatArray::create (getNumberOfSamples () * getNumberOfChannels ());
121+ read (0 , output, true );
122+ return output;
123+ }
119124};
120125
121126#endif // __WavFile_h__
0 commit comments