LTspice-ドットコマンド「.wave」(WAVファイル出力)の使い方
当記事では、ドットコマンド「.wave」(WAVファイル出力)の使い方について詳しく解説します。
「.wave」を使用して、指定したノードの「電圧」または「電流」をWAV形式の音声ファイルで出力することが可能です。
(WAVまたはWAVEは、音声データ記述のためのフォーマットです。ファイルの拡張子は「.wave」になります。)
「.wave」の構文
「.wave」の構文は以下のようになります。指定したノードの「電圧」または「電流」をWAV形式の音声ファイルで出力することができます。
- ファイル名.wav
出力するWAVファイルの「ファイル名」を入力します。WAVファイルの保存先は、「.wave」でシミュレーションを行った回路図ファイルと同じフォルダになります。
また、フルパスで入力することで、WAVファイルの保存先を指定することができます。
- ビット数
量子化ビット数を入力します。有効範囲は「1~32[bit]」になります。
- サンプリングレート
サンプリングレート(サンプルレートまたはサンプリング周波数)を入力します。有効範囲は「1~4,294,967,295[Hz]」になります。
正確にサンプリング(標本化)するためには、サンプリングする信号の最も高い周波数の2倍以上の値を設定する必要があります。
- V(ノード名)
サンプリングする信号をノード名で設定して、チャネル0から割り当てられます。
サンプリングする信号を複数設定するには、スペースで区切ることによって、続けて入力します。
例えば、「V(out1) V(out2)」の場合、V(out1)⇒チャネル0、V(out2)⇒チャネル1に割り当てられていきます。
また、「I(ノード名)」とすることで、電流を指定することができ、値は変わらず単位がA(アンペア)からV(ボルト)に変換されて出力されます。
出力範囲
- 電圧:±1V以内
- 電流:±1A以内
出力チャネル数
- 1~65535
「.wave」のコマンド例
「.wave」のコマンド例を、以下のように3つ紹介します。
.wave Output.wav 16 44.1k V(out1)
ノード「out1」の電圧を、量子化ビット数「16bit」/サンプリングレート「44.1kHz」で、ファイル名「Output.wav」として出力します。
ファイルの保存場所は「.wave」のコマンドでシミュレーションを実行した回路図フィルと同じフォルダになります。
PCで再生可能なデジタル音源のフォーマットは、PCに搭載されているサウンドカードによって異なります。
現在、オンサウンドボードとして、PCのマザーボード上にサウンドチップが搭載されていることが多く、音質にこだわらなければ、別途サウンドカードを購入する必要はありません。
今回のコマンド例では、大抵のオンサウンドボードで再生可能な音楽CDのフォーマットで、量子化ビット数とサンプリングレートを設定してあります。
- 音楽CD: 16bit/44.1kHz
- ハイレゾ音源: 24bit/96kHz(または192kHz)
など
.wave D:Output.wav 16 44.1k V(out1)
ノード「out1」の電圧を、量子化ビット数「16bit」/サンプリングレート「44.1kHz」で、ファイル名「Output.wav」として出力します。
ファイルの保存場所は、フルパスで指定したドライブ「D」になります。
.wave Output.wav 16 44.1k V(out1) V(out2)
ノード「out1」と「out2」の電圧を、量子化ビット数「16bit」/サンプリングレート「44.1kHz」で、ファイル名「Output.wav」として出力します。
また、ノードを複数指定しているので、電圧V(out1)はチャネル0、電圧V(out2)はチャネル1にそれぞれ出力されます。
そのため、ステレオスピーカーやステレオヘッドフォンで音源を聞くと、チャネル0の電圧V(out1)がL(左)、 チャネル1の電圧V(out2)がR(右)で聞こえます。
ファイルの保存場所は「.wave」のコマンドでシミュレーションを実行した回路図フィルと同じフォルダになります。
「.wave」のシミュレーション例
「.wave」のシミュレーション例として、「WAVファイル出力」と「WAVファイル入力」にわけて説明します。
なお、LTspiceで回路図を作成したことがない方は、以下の記事を参考にしてみて下さい。
WAVファイル出力
電圧源のみの回路を作成して、「.wave」を使用して、WAVファイルを出力します。
また、こちらで作成済みの回路図を用意したので、すぐにシミュレーションを始めたい方は以下のリンクをクリックしてダウンロードしてください。
以下のように、電源、GND、ノードで構成された回路図を作成します。
また、電圧源V1の設定を振幅0.5[V]、周波数0.25[kHz]、電圧源V2の設定を振幅1.0[V]、周波数2[kHz]に設定します。トランジェント解析は5[s]に設定します。
なお、人間の会話は、250~2000[Hz](0.25~2[kHz])の間で行われていると言われています。
回路図作成後、ツールバーの「SPICE Directive」をクリックします。
トランジェント解析(.tran)の詳しい解説については、以下の記事をご覧下さい。
「.wave」の構文は以下のように記述して配置します。
.wave output.wav 16 44.1k V(out1) V(out2)
今回は、コマンド例3と同様に、ノード「out1」の電圧を、量子化ビット数「16bit」/サンプリングレート「44.1kHz」で、ファイル名「Output.wav」として出力します。
また、ノードを複数指定しているので、電圧V(out1)はチャネル0、電圧V(out2)はチャネル1にそれぞれ出力されます。
「.wave」の構文を配置した後、ツールバーの「Run」をクリックします。
シミュレーション完了後、ノード「out1」と「out2」を電圧プローブで、それぞれクリックします。
トランジェント解析は5[s]に設定したので、グラフに表示された波形が見にくくなっています。
そのため、波形ビューワを使用して、X軸の設定(Horizontal Axis)で、Right(目盛りの右側最大値)を10[ms]に変更します。
ノード「out1」の電圧が振幅0.5[V]、周波数0.25[kHz]、ノード「out2」の電圧が振幅1.0[V]、周波数2[kHz]で出力されていることがわかります。
波形ビューワ(Waveform Viewer)の詳しい解説については、以下の記事をご覧下さい。
今回、シミュレーションを実行した回路図と同じフォルダを確認すると、「output.wav」が生成されていることがわかります。
また、「output.wav」をステレオ再生すると、チャネル0の振幅0.5[V]/周波数0.25[kHz]がL(左)、 チャネル1の振幅1.0[V]/周波数2[kHz]がR(右)で聞こえます。
そのため、ステレオスピーカーやステレオヘッドフォンで実際に聞いてみると、L(左)からは低い音、R(右)からは高い音が聞こえ、R(右)の音の方が、L(左)からの音より大きいことがわかると思います。
今回、「WAVファイル出力」のシミュレーションに使用した回路図は以下のリンクからダウンロードできます。
WAVファイル入力
電圧源のみの回路を作成して、電圧源の設定をWAVファイルを読み込むための構文を記述することで、WAVファイルの波形データを入力します。
また、こちらで作成済みの回路図を用意したので、すぐにシミュレーションを始めたい方は以下のリンクをクリックしてダウンロードしてください。
「WAVファイル出力」で使用した回路図を修正します。
電圧源V1とV2の電圧値を右クリックして、「WAVファイルを読み込む構文」を入力します。
また、今回のシミュレーションでは使用しない「.wave」の構文を削除しておきます。
「WAVファイルを読み込む構文」は以下のように記述します。
V1
wavefile=output.wav chan=0
V2
wavefile=output.wav chan=1
今回は、「WAVファイル出力」で生成したWAVファイル「output.wav」を読み込んでみます。
電圧源V1では「output.wav」のチャネル0、電圧源V2では「output.wav」のチャネル1の信号波形をそれぞれ読み込みます。
「WAVファイルを読み込む構文」は以下のようになります。WAVファイル名とチャネルを指定することで、WAVファイルの波形データを読み込むことができます。
「WAVファイルを読み込む構文」の例を挙げると、以下のようになります。
wavefile=output.wav chan=0
コマンド例1では、シミュレーションを実行する回路図ファイルと同じフォルダにあるWAVファイル「output.wav」のチャネル0を読み込みます。なお、チャネルの番号の指定がない場合は、自動的にチャネル0が指定されます。
wavefile=D:output.wav chan=1
コマンド例2では、ドライブDにあるWAVファイル「output.wav」のチャネル1を読み込みます。このように、フルパスでWAVファイルを指定することで、シミュレーションを実行する回路図ファイルと同じフォルダになくとも参照することが可能です。
回路図の修正が完了した後、ツールバーの「Run」をクリックします。
シミュレーション完了後、ノード「out1」と「out2」を電圧プローブで、それぞれクリックします。
トランジェント解析は5[s]に設定したので、グラフに表示された波形が見にくくなっています。
そのため、波形ビューワを使用して、X軸の設定(Horizontal Axis)で、Right(目盛りの右側最大値)を10[ms]に変更します。
ノード「out1」の電圧が振幅0.5[V]、周波数0.25[kHz]、ノード「out2」の電圧が振幅1.0[V]、周波数2[kHz]で出力されていることがわかります。
このことから、「output.wav」の信号波形が正しく読み込まれていることがわかります。
さらに、LTspiceでは、FFT機能を使用することで、入力したWAVファイルの音声を詳しくスペクトラム解析することも可能です。
波形ビューワ(Waveform Viewer)の詳しい解説については、以下の記事をご覧下さい。
今回、「WAVファイル入力」のシミュレーションに使用した回路図は以下のリンクからダウンロードできます。