Chapter006_Zara_F746NG
Dependencies: F746_GUI SRF08 Array_Matrix TS_DISCO_F746NG mbed LCD_DISCO_F746NG BSP_DISCO_F746NG SDFileSystem_Warning_Fixed FrequencyResponseDrawer F746_SAI_IO
Diff: MyClasses_Functions/SD_WavReader.cpp
- Revision:
- 11:769d986c10fa
- Parent:
- 0:04b43b777fae
- Child:
- 12:85e7363da26a
--- a/MyClasses_Functions/SD_WavReader.cpp Wed Jun 15 13:16:49 2016 +0000 +++ b/MyClasses_Functions/SD_WavReader.cpp Mon Jul 04 05:59:44 2016 +0000 @@ -4,7 +4,7 @@ // 以下のフォーマット以外は扱わない // PCM,16 ビットステレオ,標本化周波数 44.1 kHz // -// 2016/04/19, Copyright (c) 2016 MIKAMI, Naoki +// 2016/06/17, Copyright (c) 2016 MIKAMI, Naoki //-------------------------------------------------------------- #include "SD_WavReader.hpp" @@ -15,14 +15,12 @@ : STR_("sd"), ok_(false) { sd_ = new SDFileSystem(STR_.c_str()); - sd_->mount(); - - buffer = new int16_t[bufferSize*2]; + sd_->mount(); + buffer.SetSize(bufferSize*2); } SD_WavReader::~SD_WavReader() { - delete[] buffer; sd_->unmount(); delete sd_; } @@ -88,17 +86,25 @@ return true; } - // ファイルからデータの取得 - void SD_WavReader::Read(int16_t data[], uint32_t size) + // ファイルからステレオデータの取得 + void SD_WavReader::ReadStereo(Array<int16_t>& dataL, + Array<int16_t>& dataR) { if (!ok_) ErrorMsg("Get data FAILED"); - fread(data, sizeof(int16_t), size, fp_); - } + uint32_t size = dataL.Length(); + fread(buffer, sizeof(int16_t), size*2, fp_); + for (int n=0; n<size; n++) + { + dataL[n] = buffer[2*n]; + dataR[n] = buffer[2*n+1]; + } + } // ファイルからデータをモノラルに変換しての取得 - void SD_WavReader::ReadAndToMono(int16_t data[], uint32_t size) + void SD_WavReader::ReadAndToMono(Array<int16_t>& data) { if (!ok_) ErrorMsg("Get data FAILED"); + uint32_t size = data.Length(); fread(buffer, sizeof(int16_t), size*2, fp_); for (int n=0; n<size; n++) data[n] = (buffer[2*n] + buffer[2*n+1])/2;