FC2ブログ

名張市つつじが丘おもちゃ病院

三重県名張市つつじが丘でおもちゃの病院を開院しています。年中無休で修理は無料、部品代のみ実費です。おもちゃの修理依頼は tutuji@cb4.so-net.ne.jp へメールにてご連絡下さい。なお、宅配便での受け付けは行っておりません。このブログにはおもちゃ等の修理事例やツール製作などを載せていきます。故障診断や修理方法の改善等、ご意見をお寄せ下さい。

PIC電子オルゴールVer5_7でWAVファイルからHEXファイルを生成するツールを製作

【前振り】
PIC電子オルゴールで扱う音声データは、WAVファイルを素にツールでアセンブラのソースコードを作って、それをMPLABXでbuildしてHEXファイルを生成していた。
先般、 PIC電子オルゴールVer5_7で大容量SPIフラッシュメモリ(W25Q64)をサポート したのだが、従来の手法では8MバイトものPCMデータを扱うことができない。それで、WAVファイルから直接インテルHEXファイルを生成するツールを作った。

【設計】
・要件
①処理対象のWAVファイルはリニアPCM形式のみとする。これ以外の形式のWAVファイルを扱う場合は、巷に出回っている気の利いたツールで事前にリニアPCM形式に変換しておくこととする。

②WAVファイルのch数・量子化ビット数・サンプリングレートを評価して、自動的にモノラル8ビット8kspsに相当するインテルHEXファイルを生成する。

③複数のWAVファイルを入力可能とする。入力の順に、HEXファイルの0番地から詰めて行く。

④音声データのダイナミックレンジを最大化する。

⑤orgelで使う音声データインデックスの定義に必要な vos_mac のスクリプトも生成する。各音声の開始アドレスと長さはこれを見れば判る。

・機能
//①リニアPCM形式のWAVファイルからインテルHEXファイルを生成する
//②WAVファイルのヘッダ情報を見て、自動的に、orgelで音声再生するためのモノラル8ビット8kspsのPCMデータに変換する
//③サンプリングレートやch数の変換では複数のサンプルの平均値を出力する
//④最大のダイナミックレンジになる(0x00~0xffに振る)ように加工する
//⑤複数ファイルを入力し、順に1個のインテルHEXファイルに出力する
//⑥上記⑤の処理で、入力ファイル毎にorgelの音声データ(SPIフラッシュ)のインデックスを設定するvos_macのスクリプトを出力する
//⑦16Mバイト分までのHEXファイルが生成可能

・入力パラメータ(起動パラメータ)
//P1:出力ファイル(インテルHEX)のパス名
//P2:出力ファイル(vos_macスクリプト)のパス名
//P3:入力ファイル(WAVファイルパス名リスト)のパス名

・WAVファイルパス名リストの例
sharin.wav
kirakiraomeme.wav
aidorumitai.wav
kyounooshare.wav
egaogasuteki.wav
kirarin.wav

・生成されたインテルHEXファイルの例
:020000040000FA
:100000007B906E8D895995816C985A89A25681870B
:10001000748D72807E877C737C828F6B8188847CF8
:100020006E91826D7D93805D94955E7F917B7687E6
:100030007D777F7F895984B44783956C95648196D9
:10004000638395666CAA617D837F885D9E745F9FE4
        ・
        ・
        ・
:1002500083FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2A
:00000001FF

・生成された vos_macスクリプト の例
vos_mac 0x000000,0x0024de,8000 ;sharin.wav
vos_mac 0x0024de,0x004575,8000 ;kirakiraomeme.wav
vos_mac 0x006a53,0x0019ad,8000 ;aidorumitai.wav
vos_mac 0x008400,0x002cca,8000 ;kyounooshare.wav
vos_mac 0x00b0ca,0x001de2,8000 ;egaogasuteki.wav
vos_mac 0x00ceac,0x0033a5,8000 ;kirarin.wav

vos_macのパラメータは 音声データ開始アドレス、音声データ長さ、サンプリングレート[sps] となっているので、orgel以外への応用の場合にはこの値を参考にして欲しい。


【使い方のヒント】
①このツールは、入力されたWAVファイルのデータの最大値と最小値を調べて、ダイナミックレンジが最大となるようにデータを加工する。その計算誤差が少なくなるように、入力ファイルの量子化ビット数は落とさないで、このツールに入力するのがよい。

②WAVファイルのサンプリングレートが8kspsでない場合は複数のPCMデータを1つに纏めることにより8kspsに変換する。そのため、WAVファイルのサンプリングレートが8kspsの整数倍でない場合は変換誤差が生じる。これを避けるためには、事前にWAVファイルを8kspsにしておくとよい。


【開発環境】
VisualuStudio2008Express

【ダウンロード】
設計資料と開発プロジェクトは ここから ダウンロードできる。

プロジェクトのソリューションファイルは下記にある。
orgel5_7\tool\wav2hex\wav2hex.sln

実行例は下記にある。
orgel5_7\voice_Mirrorna
バッチファイルは wav2hex.bat
WAVファイルパスリストファイルは wavlist.txt
生成されたHEXファイルは W25Q64.hex
生成されたvos_macスクリプトは vos_mac.txt
関連記事
スポンサーサイト
  1. 2018/10/01(月) 08:25:15|
  2. 電子オルゴール+音声
  3. | コメント:0
<<PICプログラマーの機能改善(大容量SPIフラッシュのサポート) | ホーム | PIC電子オルゴールVer5_7でBTL出力機能を改善>>

コメント

コメントの投稿


管理者にだけ表示を許可する

プロフィール

大泉茂幸

Author:大泉茂幸
名張市つつじが丘おもちゃ病院
名張市つつじが丘南3番町129
tutuji@cb4.so-net.ne.jp
090-5534-6494
連絡は上記のメール、またはSMSでお願いします。

子どもの頃から趣味は電子工作一筋でやってきました。理科離れが進む中で科学技術に興味を持つ子どもが少しでも増えて行くことを願って、子ども達に電子工作の活動の場を提供しています。

1981年からおもちゃ病院の活動を始め、2014年に三重県名張市への移住を機に「つつじが丘おもちゃ病院」を開院しました。自分でおもちゃを設計し製作する【おもちゃ工房】と、マイコンを応用した電子工作を楽しむ【マイコンクラブ】も併設しています。新規参加メンバーを募集しています。

当ブログで公開している技術情報や成果物の複製、改変および再配布はフリーです。読者様のおもちゃ病院活動のお役に立てば幸いです。ご利用いただいた結果や感想等を記事へのコメントやメールでフィードバックしていただけると有難いです。なお、公開ファイルは最新版を載せているので、古い記事の内容から変わっている場合があります。

カテゴリ

おもちゃ修理技術 (90)
¦ ・電子オルゴール+音声 (32)
¦ ・音声再生・録音再生 (6)
¦ ・2.4GHzラジコン (29)
¦ ・レガシーラジコン (12)
¦ ・赤外線リモコン (4)
¦ ・RFID (3)
¦ ・タッチセンス (4)
ツール製作 (26)
¦ ・プログラマー (19)
¦ ・USB-シリアル変換 (3)
¦ ・その他のツール (4)
修理事例 (154)
¦ ・マイコン換装 (72)
¦ ・電子・電気修理 (59)
¦ ・メカ修理 (23)
製作記事 (4)
PIC開発 (4)
おもちゃ病院 (9)
ドクター研修会 (2)
未分類 (0)

最新記事

最新コメント

月別アーカイブ

訪問者数

検索フォーム

RSSリンクの表示

リンク

このブログをリンクに追加する

ブロとも申請フォーム

この人とブロともになる

QRコード

QR