Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: F746_GUI SD_PlayerSkeleton F746_SAI_IO
main.cpp
00001 //-------------------------------------------------------------------- 00002 // SD_PlayerSkeleton クラスの使用例(音量調節付き SD オーディオプレーヤー) 00003 // SD のファイル: *.wav 00004 // PCM,16 ビットステレオ,標本化周波数 44.1 kHz 00005 // 上記以外の形式は扱わない 00006 // 出力:モノラル(L+R,左右チャンネルに同じものを出力) 00007 // 00008 // 2017/04/09, Copyright (c) 2017 MIKAMI, Naoki 00009 //-------------------------------------------------------------------- 00010 00011 #include "VolumeCtrl.hpp" 00012 00013 #include "SAI_InOut.hpp" 00014 #include "LcdPanelFrq.hpp" 00015 #include "GaussRand.hpp" 00016 00017 00018 00019 00020 using namespace Mikami; 00021 00022 int main() 00023 { 00024 VolumeCtrl myPlayer("SD Player with Volume Control"); 00025 myPlayer.Execute(); 00026 00027 00028 const int FS = I2S_AUDIOFREQ_48K; // 標本化周波数:48 kHz 00029 SaiIO mySai(SaiIO::OUTPUT, 2048, FS); // オーディオ信号出力用 00030 LcdPanel myPanel(1.0f/(float)FS); // LCD パネル表示用 00031 GaussRand rnd(0.5f, 0); // ガウス性ノイズ発生器 00032 00033 mySai.PlayOut(); // オーディオ信号出力開始 00034 00035 const float MAX_AMP = 8192.0f; 00036 while (true) // 無限ループ 00037 { 00038 // 出力バッファへの転送が完了したら以下の処理を行う 00039 if (mySai.IsXferred()) 00040 { 00041 for (int n=0; n<mySai.GetLength(); n++) 00042 { 00043 // 入力信号の生成 00044 float phi = myPanel.GetPhi(); 00045 float sn = sinf(phi); // 入力信号となる正弦波を発生 00046 float noize = myPanel.GetNoiseLevel()*rnd.Next(); 00047 00048 int16_t xn = (int16_t)(MAX_AMP*sn); 00049 int16_t yn = (int16_t)(MAX_AMP*(sn + noize)); 00050 mySai.Output(xn, yn); // xn:ノイズなし(左チャンネル) 00051 // yn:ノイズ付加(右チャンネル) 00052 myPanel.Store(yn, n); // 表示用として格納 00053 } 00054 00055 myPanel.Display(); // 入出力信号の波形表示 00056 } 00057 myPanel.Update(); // パネルの状態を読み取り必要なパラメータなどを更新する 00058 } 00059 }
Generated on Wed Jul 13 2022 05:15:52 by
1.7.2