SSブログ

R6n、IMA ADPCM Ver

 昨日は鉄道模型芸術祭2018に子供と行きました。ジオラマのレベルが高いです。街灯など光が大切だなと思いました。
 土曜日は最初、花見に行こうと思ったのですが、家の周りの桜はまだ咲き始めで満開は来週かなあと思ったのでやめたのですが池袋は満開でした。
re_DSC02243.jpg

 で、お決まりのコースで帰りがけに中野駅行きのバスに乗って、ホビーセンターカトーに寄って帰りました。アメリカ型のHO機関車がたくさんジャンク品で出ているとのことで、気に入ったものがあったら買おうと思ったのですが、ジャンク品の理由がどれも走行不良だったため、ぎくしゃくした走りや異音がするのを直すのは面倒だと思ったのと、あと数千円出せば新品のDD51とか手が届くので、買うのはやめました。
 数か月前に行ったときは、四季島がレイアウトを走っていましたが、今回は、特急「はと」青大将が走っていました。最後尾のマイテ58の3軸台車を見ながら、欲しいなあをちょっと思いましたが、見て満足したので買うのはやめておきました。
 で、本題ですが、R6nのSO103のIMA ADPCM化です。
 もともとSO103は8KHzのWAVでやっており、確か2秒ぐらい音が入ります。IMA ADPCM化する際に16KHzとかにすると、再生時間が長くならないので、8KHzのIMA ADPCMにしました。合計で4.8秒ほど再生可能です。しかし、SL103の16KHzソース→SO103の8kHz化でハマってしまい(nBlockAlignが16kHzと8kHzで値が違う)、半日かかってしまいました。
 で完成です。スケッチはこちらです。
動画はこんな感じで、一応4.8秒ぐらいは音が入れられると思います。音はF3~F6に割り当てています。


 スケッチと一緒に「ADPCM加工用8K」というフォルダを置いており、この中に、IMA ADPCM用の「WAV→ヘッダ変換」するソフトDSwav2c.exeも入れてあります。
 IMA ADPCMの作り方は、Audacityで
・モノラル8000Hz,で音を加工しておく。
・ファイル→オーディオの書き出しでファイル選択のダイアログを出す。
・ファイルの種類を「その他の非圧縮ファイル」を選ぶ。
・オプションボタンを押して、「非圧縮のオプションを設定してください.」のダイアログで、ヘッダ:WAV(Microsoft)、エンコーディング:IMA ADPCMを選んでOKボタンを押す。
・ファイル名(XXX.WAV)を決めて、保存する。
これでWAVファイルができます。例えばhorn.WAVとしておきます。
次にこれを DSwav2c.exeでヘッダファイルにして、ArudinoのIDEで読める形式にします。
・ソフトを開いてOpenボタンを押して、ファイルXXX.wavを選ぶ。
・Saveボタンを押して、ヘッダーファイルとしてセーブする。
例えばhorn.wavを選んで、horn.hを作ります。WAVファイル名で変数名が決め打ちされますので、お気を付けください。
そして、これをArudinoのスケッチから読めば、完成です。
・Arduinoのスケッチがあるフォルダにヘッダファイル(XXX.h)を置きます。
・次にスケッチを開いて、右上の▼ボタンからVVVF_sound.cppを選びます。
・12行目辺りからの音3~音6のヘッダファイル("XXX.h")を指定します。#include "XXX.h"の辺りです。
例えば音3はhorn.hを指定します。
・324行目辺りからの
return pgm_read_byte(&XXX_data[inOffset]);
の「XXX_data」を書き換えますhorn.hならhorn_dataとなります。音3~音6まで指定しておきます。
これで、コンパイルしてみて、容量が100%を超えなければ成功です。
また、それ以外のエラーは大体、ヘッダファイルの名前が間違っているとか、ヘッダ内の配列名とXXX_dataの名前が合っていないなどだと思います。
 音が途切れ途切れ鳴る場合や、音の高さ、再生スピードがおかしい場合は、sampling周波数を間違えていると思います。
 なお、このスケッチは吊り掛け音とかは鳴りません・・・。
 あとは、ディーゼルもやってみて一段落でしょうか?ディーゼル音は今16KHzなのですが、これを8kHzにして、警笛とブレーキ音入れて、が出来ればよいかなあと思っています。

コメント(4) 

コメント 4

ラスカル

いつもありがとうざいます。
ところで添付のスケッチを書き込もうとすると
スケッチが大きすぎますと言われるのは
IDEのバージョンでしょうか。SLだめでした。
by ラスカル (2018-03-26 22:12) 

fujigaya2

私のIDEのVersionはArduino1.8.3ですね。
一応、SL103,SO103_IMA_ADPCM共に家でコンパイルしてみましたが、できました。
そういえば、昔、SoundOptionの時もぎりぎりまで詰め込んだら、コンパイルできなくなったような気もします。
今週の土日に少し容量を減らしたバージョンを作ってみます。
少々お待ちください。
by fujigaya2 (2018-03-26 23:49) 

KAKKA

こんにちは

私のもArduino1.8.3でコンパイルして書き込んでました。
以下のコンパイル結果が表示されました。

最大32256バイトのフラッシュメモリのうち、スケッチが31870バイト(98%)を使っています。


by KAKKA (2018-04-01 19:42) 

fujigaya2

KAKKAさん

コンパイル情報ありがとうございます。
1.6.X辺りはちょっと大きめになるようですね。
by fujigaya2 (2018-04-01 22:29) 

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。