シミュレーション時に必ずお世話になるのが独立電圧源じゃないかと思います。「いろいろ設定できる」といいつつ複雑な波形を与えるのはメンドイです。しかしLTspice(日本語)のヘルプを読んでいて気づきましたぞ。.wav形式のファイルを読み取れる。ということはOctaveなどで生成したwaveファイルをspiceできる、と。
※「SPICEの小瓶」投稿順インデックスはこちら
LTspiceの独立電圧源の設定パネル(アドバンスドなやつ)は以下のようです。
左上のFunctionsというところに、トランジェント解析で使用できる「波形」設定のラジオボタンがならんどります。
- (none) 単なるDC電源、あるいはAC解析など波形設定不要な時の選択肢。
- PULSE パルス波(台形波的な)
- SINE 正弦波
- EXP イクスポーネンシャルな立ち上がりと立下りの波形
- SFFM FM変調的な
- PWL 折れ線グラフ的な(spice上で設定)
- PWL FILE 折れ線グラフ(のデータをテキストファイルから読む)
ちょっと複雑な波形を与えようとすると最後のPWLとなりますかな。これを書くのがちょいとメンドイのですが。
ところが以下のドキュメントを読んでいて気づいてしまったのであります。.wav形式のファイルをLTspiceは読めるのだ、と。
LTspice XVII ヘルプ日本語版
なお、上記の日本語ドキュメントはアナデバ様の以下のページから「登録」すれば無料でダウンロード可能です。
LTspice スタートアップガイド(日本オリジナル版)無料ダウンロード
WAVEファイルを読み取らせてみる
たまたま手元のDISK内で見つかったkacha.wavという wave形式の音声ファイルがあったのでそれを読ませてみました。音声的には「カチャ」という鍵を開けるような音がするだけのもの。LTspiceの回路図は以下です。
波形を観察したものがこちら。「カチャ」なのかどうかは定かでありませんが、何やら音声波形らしきものが見えとります。
そういえば .WAV形式のファイルを生成できたのだった
少し前に、うかつにもWindowsの標準アプリがもはや .wav 形式をサポートしていないことに気づいて愕然としました。そして Octave と C++ の両方で.wav形式のファイルを生成してみたのでした。以下の記事です。
ソフトな忘却力(19) .WAVファイルの生成、OCTAVEとCPPの両方で
Octaveで書きだせる、ということは、MATLABでも書き出せるのは必定。勿論、時折独自路線のScilabでも書き出せます。つまり、信号処理とかに使う「奴ら」は、.wav形式を捨てることなく使えると(非圧縮の単純PCM形式こそ望ましい。)
以下は上記の記事で使ったOctaveのサンプルスクリプトの再掲です。サンプリングレート11.025kHzの440Hzの正弦波を生成するもの。
% generate .wave file sample samplingHz=11025; quantization=8; soundHz=440; nData=11025; dt=1.0/samplingHz; t=(1:nData)*dt-dt; soundOmega=2*pi*soundHz; y=sin(soundOmega*t); audiowrite("test.wav", y, samplingHz, "BitsPerSample", quantization); info=audioinfo("test.wav");
上記の出力の test.wav ファイルをLTspiceに食わせてみました。こんな感じ。
シミュレーションした波形は以下のようです。
Octave上での数値 1.0 がそのまま、1.0Vの信号になっています。周波数も設定どおり、ほぼほぼ440Hzがみえてますやん。
それじゃ、LTspice の入力波形、複雑なやつを作りたかったら、Octaveとかにお願いすればいいじゃん。。。