« SDカードデータロガー - ケース完成 | メイン | PSoCリンク集 »



PSoCでWAVEファイルを再生する

前回の実験(ここの下のほうの文章)
PSoCのSDカードモジュールでは読み取り速度が遅すぎてだめだったので、
WAVEデータをPSoCのROMに書いてDA変換するだけのプログラムを書いてみました。

スピーカの接続は以下のような簡易的なものです。
wave_sp.png
↑P0_5にDA変換した結果を一定間隔で出力する


今度はちゃんと動きました。
問題は読み取り速度だけのようで、再生自体は簡単でした。

ROMのサイズの関係上(今回使用したCY8C29466は32KBです)
8bitモノラル、8kHzのWAVEファイルを再生しました。

再生の際、WAVEファイルを読み取り、一度テキスト(以下のようなC言語のソースコード)
に変換するプログラムをC#でつくり変換しました。
SDカードが使えないと不便です。

変換例)
const unsigned char wave_table[] = {
128,128,128,128,127,125,125,126,129,130,129,129,135,137,138,137,132,121,110,108,
114,119,120,116,120,132,137,141,136,135,134,126,124,130,142,131,121,117,125,139,
・・・(略)・・・
};

後はこれを適当な間隔で読み取り、DA変換してあげるだけです。
以外にもあっさりと鳴りました。

当然ながら音質はかなり悪いですが、一応鳴ったので良しとします。
(でもなんかすごいくやしいorz)

◆リンク
参考にさせていただきました。
H8で音声データを扱ってみよう


WAVEファイルについて
WAVE形式のファイルフォーマット

WAV ファイルフォーマット

Ryuzのプログラミング講座<第1回 Waveファイルのフォーマット編>




◆おまけ
今回作成したWAVE→テキストの変換プログラムを載せておきます。
本当はこんなもの作るつもりなかったのに(SDカードが使えれば・・・)

http://www.bird-soft.net/download/WaveTextConv.zip


WaveTextConv.png
↑作成したプログラムのSS




応援お願いします(人気blogランキングへ)

トラックバック

このエントリーのトラックバックURL:
http://www.bird-soft.net/mt/mt-tb.cgi/118

コメント

間隔で読み取るってなぁに?

こんにちは、いつも楽しんで拝見しております。
事後承諾で恐縮ですがリンクさせて頂きました。
よろしくお願いします。

こんにちは。
リンクありがとうございます。
こちらこそよろしくお願いします。

コメントを投稿