Library for Skeleton of SD card player. SD カードプレーヤのための骨組みとして使うためのライブラリ.このライブラリを登録した際のプログラム:「F746_SD_Player_Demo」

Dependencies:   SDFileSystem_Warning_Fixed

Dependents:   F746_SD_Player_Demo F746_SD_VarableFilter F746_SD_GraphicEqualizer F746_MySoundMachine ... more

Committer:
MikamiUitOpen
Date:
Mon Aug 15 04:38:45 2016 +0000
Revision:
0:d310bb78455d
Child:
2:511479736d6e
1

Who changed what in which revision?

UserRevisionLine numberNew contents of line
MikamiUitOpen 0:d310bb78455d 1 //--------------------------------------------------------------
MikamiUitOpen 0:d310bb78455d 2 // SD_WavReader class ---- Header
MikamiUitOpen 0:d310bb78455d 3 // SD カードの *.wav ファイルの内容を読み出す
MikamiUitOpen 0:d310bb78455d 4 // 以下のフォーマット以外は扱わない
MikamiUitOpen 0:d310bb78455d 5 // PCM,16 ビットステレオ,標本化周波数 44.1 kHz
MikamiUitOpen 0:d310bb78455d 6 //
MikamiUitOpen 0:d310bb78455d 7 // 2016/07/12, Copyright (c) 2016 MIKAMI, Naoki
MikamiUitOpen 0:d310bb78455d 8 //--------------------------------------------------------------
MikamiUitOpen 0:d310bb78455d 9
MikamiUitOpen 0:d310bb78455d 10 #ifndef SD_WAV_READER_HPP
MikamiUitOpen 0:d310bb78455d 11 #define SD_WAV_READER_HPP
MikamiUitOpen 0:d310bb78455d 12
MikamiUitOpen 0:d310bb78455d 13 #include "SDFileSystem.h"
MikamiUitOpen 0:d310bb78455d 14 #include "BlinkLabel.hpp"
MikamiUitOpen 0:d310bb78455d 15 #include "Array.hpp"
MikamiUitOpen 0:d310bb78455d 16 #include <string>
MikamiUitOpen 0:d310bb78455d 17
MikamiUitOpen 0:d310bb78455d 18 namespace Mikami
MikamiUitOpen 0:d310bb78455d 19 {
MikamiUitOpen 0:d310bb78455d 20 class SD_WavReader
MikamiUitOpen 0:d310bb78455d 21 {
MikamiUitOpen 0:d310bb78455d 22 public:
MikamiUitOpen 0:d310bb78455d 23 SD_WavReader(int32_t bufferSize);
MikamiUitOpen 0:d310bb78455d 24 virtual ~SD_WavReader();
MikamiUitOpen 0:d310bb78455d 25
MikamiUitOpen 0:d310bb78455d 26 void Open(const string fileName);
MikamiUitOpen 0:d310bb78455d 27
MikamiUitOpen 0:d310bb78455d 28 void Close() { fclose(fp_); }
MikamiUitOpen 0:d310bb78455d 29
MikamiUitOpen 0:d310bb78455d 30 // ファイルのヘッダ読み込み
MikamiUitOpen 0:d310bb78455d 31 // 戻り値: *.wav で,16 ビットステレオ,
MikamiUitOpen 0:d310bb78455d 32 // 標本化周波数:44.1 kHz の場合 true
MikamiUitOpen 0:d310bb78455d 33 bool IsWavFile();
MikamiUitOpen 0:d310bb78455d 34
MikamiUitOpen 0:d310bb78455d 35 // ファイルからステレオデータの取得
MikamiUitOpen 0:d310bb78455d 36 void ReadStereo(Array<int16_t>& dataL, Array<int16_t>& dataR);
MikamiUitOpen 0:d310bb78455d 37
MikamiUitOpen 0:d310bb78455d 38 // ファイルからデータをモノラルに変換しての取得
MikamiUitOpen 0:d310bb78455d 39 void ReadAndToMono(Array<int16_t>& data);
MikamiUitOpen 0:d310bb78455d 40
MikamiUitOpen 0:d310bb78455d 41 // データサイズ(標本化点の数)の取得
MikamiUitOpen 0:d310bb78455d 42 int32_t GetSize();
MikamiUitOpen 0:d310bb78455d 43
MikamiUitOpen 0:d310bb78455d 44 private:
MikamiUitOpen 0:d310bb78455d 45 const string STR_;
MikamiUitOpen 0:d310bb78455d 46
MikamiUitOpen 0:d310bb78455d 47 struct WaveFormatEx
MikamiUitOpen 0:d310bb78455d 48 {
MikamiUitOpen 0:d310bb78455d 49 uint16_t wFormatTag; // 1: PCM
MikamiUitOpen 0:d310bb78455d 50 uint16_t nChannels; // 1:モノラル,2: ステレオ
MikamiUitOpen 0:d310bb78455d 51 uint32_t nSamplesPerSec; // 標本化周波数 (Hz)
MikamiUitOpen 0:d310bb78455d 52 uint32_t nAvgBytesPerSec; // 転送速度 (bytes/s)
MikamiUitOpen 0:d310bb78455d 53 uint16_t nBlockAlign; // 4: 16ビットステレオの場合
MikamiUitOpen 0:d310bb78455d 54 uint16_t wBitsPerSample; // データのビット数,8 または 16
MikamiUitOpen 0:d310bb78455d 55 uint16_t cbSize; // PCM の場合使わない
MikamiUitOpen 0:d310bb78455d 56 };
MikamiUitOpen 0:d310bb78455d 57
MikamiUitOpen 0:d310bb78455d 58 SDFileSystem *sd_;
MikamiUitOpen 0:d310bb78455d 59 FILE *fp_;
MikamiUitOpen 0:d310bb78455d 60
MikamiUitOpen 0:d310bb78455d 61 bool ok_;
MikamiUitOpen 0:d310bb78455d 62 int32_t size_; // データサイズ(標本化点の数)
MikamiUitOpen 0:d310bb78455d 63 Array<int16_t> buffer; // ステレオをモノラルに変換する際の作業領域
MikamiUitOpen 0:d310bb78455d 64
MikamiUitOpen 0:d310bb78455d 65 void ErrorMsg(char msg[])
MikamiUitOpen 0:d310bb78455d 66 { BlinkLabel errLabel(240, 100, msg, Label::CENTER); }
MikamiUitOpen 0:d310bb78455d 67
MikamiUitOpen 0:d310bb78455d 68 // disallow copy constructor and assignment operator
MikamiUitOpen 0:d310bb78455d 69 SD_WavReader(const SD_WavReader&);
MikamiUitOpen 0:d310bb78455d 70 SD_WavReader& operator=(const SD_WavReader&);
MikamiUitOpen 0:d310bb78455d 71 };
MikamiUitOpen 0:d310bb78455d 72 }
MikamiUitOpen 0:d310bb78455d 73 #endif // SD_BINARY_READER_HPP