SPKT
Dependencies: SDFileSystem_Warning_Fixed
Dependents: DISCO-F746_WAV_PLAYER WAV
Diff: SD_WavReader.cpp
- Revision:
- 18:6631cd0fbbcd
- Parent:
- 16:299cc1052baa
diff -r abfd6af9a236 -r 6631cd0fbbcd SD_WavReader.cpp --- a/SD_WavReader.cpp Thu Mar 23 02:58:48 2017 +0000 +++ b/SD_WavReader.cpp Tue Jun 04 21:35:59 2019 +0000 @@ -1,11 +1,3 @@ -//-------------------------------------------------------------- -// SD_WavReader class -// SD カードの *.wav ファイルの内容を読み出す -// 以下の型式のファイルのみ扱う -// PCM,16 ビットステレオ,標本化周波数 44.1 kHz -// -// 2017/03/22, Copyright (c) 2017 MIKAMI, Naoki -//-------------------------------------------------------------- #include "SD_WavReader.hpp" @@ -29,29 +21,29 @@ { string name = (string)"/" + STR_ + "/" + fileName; fp_ = fopen(name.c_str(), "rb"); - if (fp_ == NULL) ErrorMsg("open error!!"); + if (fp_ == NULL) ErrorMsg("Loi The SD!!!"); } - // ファイルのヘッダ "RIFFxxxxWAVEfmt " の部分の読み込み - // 戻り値:16 ビットステレオ,標本化周波数が 44.1 kHz の場合 true + // Đọc một phần của tiêu đề tệp "RIFFxxxxWAVEfmt" + // Giá trị trả về: true nếu âm thanh nổi 16 bit, tần số lấy mẫu là 44,1 kHz bool SD_WavReader::IsWavFile() { char data[17]; - fread(data, 1, 16, fp_); // 16 バイト分を読み込む + fread(data, 1, 16, fp_); // Đọc 16 byte string strRead = ""; for (int n=0; n<4; n++) strRead += data[n]; - // 間の 4 文字はチェックしない + // Không kiểm tra 4 ký tự giữa for (int n=8; n<16; n++) strRead += data[n]; - // "RIFF", "WAVE", "fmt " が存在することを確認 + // Kiểm tra xem "RIFF", "WAVE", "fmt" có tồn tại không if (strRead != "RIFFWAVEfmt ") return false; - // fmt chunck のサイズを取得 + // có được kích thước của fmt chunck uint32_t fmtChunkSize; fread(&fmtChunkSize, sizeof(uint32_t), 1, fp_); - // PCM, Stereo, 44.1 kHz, 16 bit であることを確認 + // Xác nhận rằng đó là PCM, Stereo, 44.1 kHz, 16 bit WaveFormatEx fmtData; fread(&fmtData, fmtChunkSize, 1, fp_); if ((fmtData.wFormatTag != 1) || @@ -60,7 +52,7 @@ (fmtData.wBitsPerSample != 16) ) return false; - // data chunk を探す + // Tìm dữ liệu char dataId[5]; dataId[4] = 0; fread(dataId, 1, 4, fp_); @@ -77,7 +69,7 @@ if (n == 99) return false; } - // データサイズ (byte) を取得 + // Nhận kích thước dữ liệu (byte) int32_t sizeByte; fread(&sizeByte, sizeof(int32_t), 1, fp_); size_ = sizeByte/4; @@ -86,7 +78,7 @@ return true; } - // ファイルからステレオデータの取得 + // Nhận dữ liệu âm thanh nổi từ tập tin void SD_WavReader::ReadStereo(Array<int16_t>& dataL, Array<int16_t>& dataR) { @@ -100,7 +92,7 @@ } } - // ファイルからデータをモノラルに変換しての取得 + // Chuyển đổi dữ liệu từ tập tin sang đơn âm void SD_WavReader::ReadAndToMono(Array<int16_t>& data) { if (!ok_) ErrorMsg("Get data FAILED"); @@ -110,7 +102,7 @@ data[n] = (buffer[2*n] + buffer[2*n+1])/2; } - // データサイズ(標本化点の数)の取得 + // Thu thập kích thước dữ liệu (số điểm lấy mẫu) int32_t SD_WavReader::GetSize() { if (!ok_) ErrorMsg("Get data size FAILED");