Output the audio signal (*.bin) with filtering by IIR filter in the SD card using onboard CODEC. For *.wav file, F746_SD_WavPlayer and F746_SD_GraphicEqualiser are published on mbed. SD カードのオーディオ信号 (*.bin) を遮断周波数可変の IIR フィルタを通して,ボードに搭載されているCODEC で出力する.*.wav 形式のファイル用には,F746_SD_WavPlayer と F746_SD_GraphicEqualiser を mbed で公開している.

Dependencies:   BSP_DISCO_F746NG_patch_fixed F746_GUI LCD_DISCO_F746NG SDFileSystem_Warning_Fixed TS_DISCO_F746NG mbed

Committer:
MikamiUitOpen
Date:
Sun Apr 17 08:44:43 2016 +0000
Revision:
5:4a99dabc9180
Parent:
0:6748e3332e85
6

Who changed what in which revision?

UserRevisionLine numberNew contents of line
MikamiUitOpen 0:6748e3332e85 1 //--------------------------------------------------------------
MikamiUitOpen 0:6748e3332e85 2 // SD_BinaryReader class
MikamiUitOpen 0:6748e3332e85 3 // SD カードの内容を読み出す
MikamiUitOpen 0:6748e3332e85 4 // 最初の4バイト:データサイズ
MikamiUitOpen 0:6748e3332e85 5 // それ以降: int16_t のデータ
MikamiUitOpen 0:6748e3332e85 6 //
MikamiUitOpen 0:6748e3332e85 7 // 2016/04/07, Copyright (c) 2016 MIKAMI, Naoki
MikamiUitOpen 0:6748e3332e85 8 //--------------------------------------------------------------
MikamiUitOpen 0:6748e3332e85 9
MikamiUitOpen 0:6748e3332e85 10 #ifndef SD_BINARY_READER_HPP
MikamiUitOpen 0:6748e3332e85 11 #define SD_BINARY_READER_HPP
MikamiUitOpen 0:6748e3332e85 12
MikamiUitOpen 0:6748e3332e85 13 #include "SDFileSystem.h"
MikamiUitOpen 0:6748e3332e85 14 #include "BlinkLabel.hpp"
MikamiUitOpen 0:6748e3332e85 15 #include <string>
MikamiUitOpen 0:6748e3332e85 16
MikamiUitOpen 0:6748e3332e85 17 namespace Mikami
MikamiUitOpen 0:6748e3332e85 18 {
MikamiUitOpen 0:6748e3332e85 19 class SD_BinaryReader
MikamiUitOpen 0:6748e3332e85 20 {
MikamiUitOpen 0:6748e3332e85 21 public:
MikamiUitOpen 0:6748e3332e85 22 SD_BinaryReader() : STR_("sd"), ok_(false)
MikamiUitOpen 0:6748e3332e85 23 {
MikamiUitOpen 0:6748e3332e85 24 sd_ = new SDFileSystem(STR_.c_str());
MikamiUitOpen 0:6748e3332e85 25 sd_->mount();
MikamiUitOpen 0:6748e3332e85 26 }
MikamiUitOpen 0:6748e3332e85 27
MikamiUitOpen 0:6748e3332e85 28 ~SD_BinaryReader()
MikamiUitOpen 0:6748e3332e85 29 {
MikamiUitOpen 0:6748e3332e85 30 sd_->unmount();
MikamiUitOpen 0:6748e3332e85 31 delete sd_;
MikamiUitOpen 0:6748e3332e85 32 }
MikamiUitOpen 0:6748e3332e85 33
MikamiUitOpen 0:6748e3332e85 34 void Open(const string fileName)
MikamiUitOpen 0:6748e3332e85 35 {
MikamiUitOpen 0:6748e3332e85 36 string name = (string)"/" + STR_ + "/" + fileName;
MikamiUitOpen 0:6748e3332e85 37 fp_ = fopen(name.c_str(), "rb");
MikamiUitOpen 0:6748e3332e85 38 if (fp_ == NULL) ErrorMsg("open error!!");
MikamiUitOpen 0:6748e3332e85 39 }
MikamiUitOpen 0:6748e3332e85 40
MikamiUitOpen 0:6748e3332e85 41 void Close() { fclose(fp_); }
MikamiUitOpen 0:6748e3332e85 42
MikamiUitOpen 0:6748e3332e85 43 // ファイルからデータサイズの読み出し
MikamiUitOpen 0:6748e3332e85 44 // 戻り値: int16_t 型のデータサイズ
MikamiUitOpen 0:6748e3332e85 45 int32_t ReadSize()
MikamiUitOpen 0:6748e3332e85 46 {
MikamiUitOpen 0:6748e3332e85 47 fread(&size_, sizeof(int), 1, fp_);
MikamiUitOpen 0:6748e3332e85 48 ok_ = true;
MikamiUitOpen 0:6748e3332e85 49 return size_;
MikamiUitOpen 0:6748e3332e85 50 }
MikamiUitOpen 0:6748e3332e85 51
MikamiUitOpen 0:6748e3332e85 52 // ファイルからデータの取得
MikamiUitOpen 0:6748e3332e85 53 void Read(int16_t data[], uint32_t size)
MikamiUitOpen 0:6748e3332e85 54 {
MikamiUitOpen 0:6748e3332e85 55 if (!ok_) ErrorMsg("Get data FAILED");
MikamiUitOpen 0:6748e3332e85 56 fread(data, sizeof(int16_t), size, fp_);
MikamiUitOpen 0:6748e3332e85 57 }
MikamiUitOpen 0:6748e3332e85 58
MikamiUitOpen 0:6748e3332e85 59 // データサイズの取得
MikamiUitOpen 0:6748e3332e85 60 // 戻り値: int16_t 型のデータサイズ
MikamiUitOpen 0:6748e3332e85 61 int32_t GetSize()
MikamiUitOpen 0:6748e3332e85 62 {
MikamiUitOpen 0:6748e3332e85 63 if (!ok_) ErrorMsg("Get data size FAILED");
MikamiUitOpen 0:6748e3332e85 64 return size_;
MikamiUitOpen 0:6748e3332e85 65 }
MikamiUitOpen 0:6748e3332e85 66
MikamiUitOpen 0:6748e3332e85 67 private:
MikamiUitOpen 0:6748e3332e85 68 const string STR_;
MikamiUitOpen 0:6748e3332e85 69
MikamiUitOpen 0:6748e3332e85 70 SDFileSystem *sd_;
MikamiUitOpen 0:6748e3332e85 71 FILE *fp_;
MikamiUitOpen 0:6748e3332e85 72
MikamiUitOpen 0:6748e3332e85 73 bool ok_;
MikamiUitOpen 0:6748e3332e85 74 int32_t size_; // word count, word = int16_t
MikamiUitOpen 0:6748e3332e85 75
MikamiUitOpen 0:6748e3332e85 76 void ErrorMsg(char msg[])
MikamiUitOpen 0:6748e3332e85 77 {
MikamiUitOpen 0:6748e3332e85 78 BlinkLabel errLabel(240, 100, msg, Label::CENTER);
MikamiUitOpen 0:6748e3332e85 79 }
MikamiUitOpen 0:6748e3332e85 80
MikamiUitOpen 0:6748e3332e85 81 // disallow copy constructor and assignment operator
MikamiUitOpen 0:6748e3332e85 82 SD_BinaryReader(const SD_BinaryReader&);
MikamiUitOpen 0:6748e3332e85 83 SD_BinaryReader& operator=(const SD_BinaryReader&);
MikamiUitOpen 0:6748e3332e85 84 };
MikamiUitOpen 0:6748e3332e85 85 }
MikamiUitOpen 0:6748e3332e85 86 #endif // SD_BINARY_READER_HPP