【LTspice】”WAVファイル”を出力する『.waveコマンド』の使い方

スポンサーリンク

過渡解析(tran解析)のシミュレーション結果を『WAVファイル』に出力する.waveコマンドについて説明します。

『.waveコマンド』とは

『.waveコマンド』とは、tran解析(Transient解析、トランジェント解析、過渡解析とも呼ばれています)』のシミュレーション結果をWAVファイル(拡張子がwavであるWAVE形式の音声ファイル)として出力するコマンドです。

作成した『WAVファイル』は別のシミュレーションで電圧源や電流源の入力信号として使用したり、メディアプレーヤーで音声として再生することができます。

『.waveコマンド』の構文

『.waveコマンド』の構文は以下のようになっています。

.wave <filename.wav> <Nbits> <SampleRate> V(out1) [V(out2)…]
  • <filename.wav>
  • 作成する『WAVファイル』のファイル名保存先のパスを入力します。
    パスは絶対パス、または『.waveコマンド』を記述した『回路図ファイルorネットリスト』が保存されているフォルダ(ディレクトリ)からの相対パスを入力します。パスを入力せずファイル名のみの場合、『WAVファイル』は『.waveコマンド』を記述した『回路図ファイル(拡張子がascであるファイル)orネットリスト』と同じフォルダに保存されます。

  • <Nbits>
  • サンプルリング・ビット数を入力します。有効な範囲は1〜32ビットとなります。

  • <SampleRate>
  • 1秒間当たりのサンプリング数を入力します。有効な範囲は1〜4,294,967,295サンプル/秒となります。

  • V(out1) [V(out2)…]
  • 出力するチャネル数です。各ノードの電圧をチャネル・ナンバ(chan)に出力します。上の構文では、ノードout1の電圧V(out1)をチャネル・ナンバ0(chan=0)に、ノードout2の電圧V(out2)をチャネル・ナンバ1(chan=1)に出力します。なお、部品や端子に流れる電流(例えばI(R1)など)も指定することができます。電流を指定した場合には、値はそのままで単位がAからVに変換されて出力されます。

構文において「<」と「>」で囲まれたパラメータは省略できません。また、「[」と「]」で囲まれたパラメータは省略できます。

補足

  • 出力する電圧や電流の振幅は±1Vの範囲に制限されます。電圧や電流の振幅が±1Vの場合にはクリッピングされた波形となります(後ほど詳しく説明します)。
  • 出力するチャネル数は1から最大65535までとなります。しかし、シミュレーションにおいて65535も使用することはないため、ほぼ無限大と考えて良いです。
  • 各ノードの出力を複数のチャネルに出力することもできます。
  • チャネル・ナンバは『0』から割り当てられます(後ほど詳しく説明します)。

『.waveコマンド』のコマンド例

.wave output.wav 16 44.1k V(out1) V(out2)
  • 作成する『WAVファイル』のファイル名は『output.wav』となります。
  • パスを記述していないため、『WAVファイル』は『.waveコマンド』を記述した『回路図ファイルorネットリスト』と同じフォルダに保存されます。
  • サンプルリング・ビット数は“16”、1秒間当たりのサンプリング数は“44.1k”となります。
  • ノードout1の電圧V(out1)をチャネル・ナンバ0(chan=0)に、ノードout2の電圧V(out2)をチャネル・ナンバ1(chan=1)に出力します。
.wave C:voice.wav 16 44.1k V(left) V(right)
  • 作成する『WAVファイル』のファイル名は『voice.wav』となり、Cドライブ上に保存されます。
  • サンプルリング・ビット数は“16”、1秒間当たりのサンプリング数は“44.1k”となります。
  • ノードleftの電圧V(left)をチャネル・ナンバ0(chan=0)に、ノードrightの電圧V(right)をチャネル・ナンバ1(chan=1)に出力します。 

『.waveコマンド』の使い方(『WAVファイル』の出力方法)

まず、『WAVファイル』の出力方法についてシンプルな回路を用いて説明します。以下の順序で説明します。

  1. 『回路図ファイル』を作成する
  2. 『回路図ファイル』を保存する
  3. シミュレーションを実行する(『.waveコマンド』を実行する)
  4. 『WAVファイル』が自動的に作成される

1.『回路図ファイル』を作成する

『回路図ファイル』を作成する01
まず、『WAVファイル』に出力する信号を作成するための『回路図ファイル』を作成します。

上図は電圧源V1、電圧源V2の電圧値をノードout1、out2に接続している回路となっています。各電圧源は正弦波を出力しており、各々の振幅と周波数は以下のようになっています。

電圧源V1:振幅0.5V、周波数0.5kHz
電圧源V2:振幅2.0V、周波数0.1kHz

2.『回路図ファイル』を保存する

『回路図ファイル』を保存する01
『回路図ファイル』を保存します。今回は一例として、Cドライブに『testフォルダ』を作成し、その中に『回路図ファイル』を保存しています。ファイル名は『wave.asc』としています。

3.シミュレーションを実行する(『.waveコマンド』を実行する)

シミュレーションを実行する(『.waveコマンド』を実行する)
『回路図ファイル(wave.asc)』を開いて、シミュレーションを実行します。シミュレーション回路図上では先ほど説明した以下の『.waveコマンド』を入力しています。

.wave output.wav 16 44.1k V(out1) V(out2)

また、『.tran 1』としているため、1秒間の『WAVファイル』が作成されます。シミュレーション結果を上図の右に示しています。V(out1)、V(out2)が正弦波であることが確認できます。

4.『WAVファイル』が自動的に作成される

『WAVファイル』が自動的に作成される
シミュレーション実行後、自動的に『WAVファイル』が作成されます。今回は、『.waveコマンド』でパスの指定をしていないため、『回路図ファイル(wave.asc)』と同じフォルダに『WAVファイル(output.wav)』が作成されています。次にこの『WAVファイル(output.wav)』を電圧源や電流源の入力として使用する方法について説明します。

なお、今回は、1秒間の『WAVファイル』を作成しましたが、ファイルサイズが173kBとなっています。長い『WAVファイル』の場合には、バイト数が膨大になり、シミュレーションにはかなりの時間がかかることに注意してください。

『WAVファイル』を電圧源や電圧源の入力信号に使用する方法

先ほど作成した『WAVファイル(output.wav)』を電圧源や電圧源の入力信号に使用する方法について説明します。以下の順序で説明します。

  1. 『回路図ファイル』を作成する
  2. 『WAVファイル』と同じフォルダに『回路図ファイル』を保存する
  3. 『回路図ファイル』を開いてシミュレーションを実行する

1.『回路図ファイル』を作成する

『回路図ファイル』を作成する02
『WAVファイル(output.wav)』を電圧源や電圧源の入力信号として使用するための『回路図ファイル』を作成します。

電圧源の電圧値を右クリックまたは、シンボルを『Ctrl+右クリック』すると出てくるValue欄に『WAVファイル』を読み込むための構文を入力します。構文は以下のようになっています。

wavefile=<filename.wav> [chan=0]

ここで、『回路図ファイル』と『WAVファイル』が同じフォルダにあるか別のフォルダにあるかで<filename.wav>が変わります。

『回路図ファイル』と『WAVファイル』が同じフォルダにある場合
【コマンド例】
wavefile=output.wav chan=1
<filename.wav>には『WAVファイル』のファイル名を記述します。また、チャネル・ナンバの指定を行います。上のコマンド例ではチャネル・ナンバ1(chan=1)を指定しています。なお、チャネル・ナンバの指定がない場合には、チャネル・ナンバ0(chan=0)が自動的に指定されます。

『回路図ファイル』と『WAVファイル』が別フォルダにある場合
【コマンド例】
wavefile=C:\test¥output.wav chan=2
<filename.wav>には『WAVファイル』のファイル名と参照するパスを記述します。また、チャネル・ナンバの指定を行います。上のコマンド例ではチャネル・ナンバ2(chan=2)を指定しています。

シミュレーション回路では、『WAVファイル(output.wav)』を入力として使用するために電圧源を2つ用意して、各電圧源に対して、

wavefile=output.wav chan=0
wavefile=output.wav chan=1

と入力しています。

2.『WAVファイル』と同じフォルダに『回路図ファイル』を保存する

『WAVファイル』と同じフォルダに『回路図ファイル』を保存する
今回は、一例として、『回路図ファイル(saisei.asc)』を『WAVファイル(output.wav)』と同じフォルダ(Cドライブのtestフォルダ)に保存しています。

3.『回路図ファイル』を開いてシミュレーションを実行する

『回路図ファイル』を開いてシミュレーションを実行する
『tran解析』の設定において、『Stop Time』に『WAVファイル』の再生時間を指定してシミュレーションを実行します。今回は、『WAVファイル(output.wav)』の再生時間である1sとしています。

シミュレーション結果を見ると、電圧源VAとVBが『WAVファイル(output.wav)』を読み込み、電圧を出力していることが確認できます。電圧源VAはチャネル・ナンバ0(chan=0)の波形(『回路図ファイル(wave.asc)』のノードout1の電圧V(out1))となります。また、電圧源VBはチャネル・ナンバ1(chan=1)の波形(『回路図ファイル(wave.asc)』のノードout2の電圧V(out2))に対して、波形が±1Vでクリッピングされていることも確認できます。

補足

  • 『tran解析』の設定において、『Maximum Timestep』を『1/ビットレート』以下に設定することで、入力波形よりシミュレーションの方が高精度になります。ビットレートは『WAVファイル』のプロパティの詳細タブで調べることができます。シミュレーション例では、ビットレートが1411kbpsなので0.708us以下のタイムステップを設定しています。
  • いくつかのシミュレーションを組み合わせる必要がある場合、この『.waveコマンド』を使用して、回路間で電圧や電流の波形を引き渡すと便利です。

『WAVファイル』の音声を再生する

次に実際に『WAVファイル』を再生する方法について説明します。アンプ等の設計でシミュレーションで音を確認するときに便利です。

『WAVファイル』をPCで再生する場合、『.waveコマンド』は、一般的にサポートされている『WAVファイル』の形式を考慮すると以下のようになります。

.wave <filename.wav> <Nbits> <SampleRate> V(left) [V(right)…]
  • <Nbits>:ビット/チャネル
  • 8または16

  • <SampleRate>:サンプルレート
  • 11025Hz、22050Hz、44100Hz(44.1kHz)

  • V(left) [V(right)…]:出力チャネル数
  • 1つのみだとモノラル、2つ指定するとステレロとなります。また、チャネル・ナンバ0(chan=0)がステレオの左チャネル、チャネルナンバ1(chan=1)がステレオの右チャネルとなります。なお、3つ指定すると、3つ目は無効となり、チャネル・ナンバ0と1のみ音声が再生されます。

先ほどのシミュレーションでは以下の『.waveコマンド』を記述しました。

.wave output.wav 16 44.1k V(out1) V(out2)

実際に『WAVファイル(output.wav)』をPCで再生してみると、V(out1)がチャネル・ナンバ0(chan=0)なのでステレオの左チャネル、V(out2)がチャネルナンバ1(chan=1)なのでステレオの右チャネルで再生されることが確認できます。

スポンサーリンク