過渡解析(tran解析)のシミュレーション結果を『WAVファイル』に出力する.waveコマンドについて説明します。
『.waveコマンド』とは
『.waveコマンド』とは、tran解析(Transient解析、トランジェント解析、過渡解析とも呼ばれています)』のシミュレーション結果をWAVファイル(拡張子がwavであるWAVE形式の音声ファイル)として出力するコマンドです。
作成した『WAVファイル』は別のシミュレーションで電圧源や電流源の入力信号として使用したり、メディアプレーヤーで音声として再生することができます。
『.waveコマンド』の構文
『.waveコマンド』の構文は以下のようになっています。
- <filename.wav>
- <Nbits>
- <SampleRate>
- V(out1) [V(out2)…]
作成する『WAVファイル』のファイル名と保存先のパスを入力します。
パスは絶対パス、または『.waveコマンド』を記述した『回路図ファイルorネットリスト』が保存されているフォルダ(ディレクトリ)からの相対パスを入力します。パスを入力せずファイル名のみの場合、『WAVファイル』は『.waveコマンド』を記述した『回路図ファイル(拡張子がascであるファイル)orネットリスト』と同じフォルダに保存されます。
サンプルリング・ビット数を入力します。有効な範囲は1〜32ビットとなります。
1秒間当たりのサンプリング数を入力します。有効な範囲は1〜4,294,967,295サンプル/秒となります。
出力するチャネル数です。各ノードの電圧をチャネル・ナンバ(chan)に出力します。上の構文では、ノードout1の電圧V(out1)をチャネル・ナンバ0(chan=0)に、ノードout2の電圧V(out2)をチャネル・ナンバ1(chan=1)に出力します。なお、部品や端子に流れる電流(例えばI(R1)など)も指定することができます。電流を指定した場合には、値はそのままで単位がAからVに変換されて出力されます。
構文において「<」と「>」で囲まれたパラメータは省略できません。また、「[」と「]」で囲まれたパラメータは省略できます。
補足
- 出力する電圧や電流の振幅は±1Vの範囲に制限されます。電圧や電流の振幅が±1Vの場合にはクリッピングされた波形となります(後ほど詳しく説明します)。
- 出力するチャネル数は1から最大65535までとなります。しかし、シミュレーションにおいて65535も使用することはないため、ほぼ無限大と考えて良いです。
- 各ノードの出力を複数のチャネルに出力することもできます。
- チャネル・ナンバは『0』から割り当てられます(後ほど詳しく説明します)。
『.waveコマンド』のコマンド例
- 作成する『WAVファイル』のファイル名は『output.wav』となります。
- パスを記述していないため、『WAVファイル』は『.waveコマンド』を記述した『回路図ファイルorネットリスト』と同じフォルダに保存されます。
- サンプルリング・ビット数は“16”、1秒間当たりのサンプリング数は“44.1k”となります。
- ノードout1の電圧V(out1)をチャネル・ナンバ0(chan=0)に、ノードout2の電圧V(out2)をチャネル・ナンバ1(chan=1)に出力します。
- 作成する『WAVファイル』のファイル名は『voice.wav』となり、Cドライブ上に保存されます。
- サンプルリング・ビット数は“16”、1秒間当たりのサンプリング数は“44.1k”となります。
- ノードleftの電圧V(left)をチャネル・ナンバ0(chan=0)に、ノードrightの電圧V(right)をチャネル・ナンバ1(chan=1)に出力します。
『.waveコマンド』の使い方(『WAVファイル』の出力方法)
まず、『WAVファイル』の出力方法についてシンプルな回路を用いて説明します。以下の順序で説明します。
- 『回路図ファイル』を作成する
- 『回路図ファイル』を保存する
- シミュレーションを実行する(『.waveコマンド』を実行する)
- 『WAVファイル』が自動的に作成される
1.『回路図ファイル』を作成する
まず、『WAVファイル』に出力する信号を作成するための『回路図ファイル』を作成します。
上図は電圧源V1、電圧源V2の電圧値をノードout1、out2に接続している回路となっています。各電圧源は正弦波を出力しており、各々の振幅と周波数は以下のようになっています。
電圧源V2:振幅2.0V、周波数0.1kHz
2.『回路図ファイル』を保存する
『回路図ファイル』を保存します。今回は一例として、Cドライブに『testフォルダ』を作成し、その中に『回路図ファイル』を保存しています。ファイル名は『wave.asc』としています。
3.シミュレーションを実行する(『.waveコマンド』を実行する)
『回路図ファイル(wave.asc)』を開いて、シミュレーションを実行します。シミュレーション回路図上では先ほど説明した以下の『.waveコマンド』を入力しています。
また、『.tran 1』としているため、1秒間の『WAVファイル』が作成されます。シミュレーション結果を上図の右に示しています。V(out1)、V(out2)が正弦波であることが確認できます。
4.『WAVファイル』が自動的に作成される
シミュレーション実行後、自動的に『WAVファイル』が作成されます。今回は、『.waveコマンド』でパスの指定をしていないため、『回路図ファイル(wave.asc)』と同じフォルダに『WAVファイル(output.wav)』が作成されています。次にこの『WAVファイル(output.wav)』を電圧源や電流源の入力として使用する方法について説明します。
なお、今回は、1秒間の『WAVファイル』を作成しましたが、ファイルサイズが173kBとなっています。長い『WAVファイル』の場合には、バイト数が膨大になり、シミュレーションにはかなりの時間がかかることに注意してください。
『WAVファイル』を電圧源や電圧源の入力信号に使用する方法
先ほど作成した『WAVファイル(output.wav)』を電圧源や電圧源の入力信号に使用する方法について説明します。以下の順序で説明します。
- 『回路図ファイル』を作成する
- 『WAVファイル』と同じフォルダに『回路図ファイル』を保存する
- 『回路図ファイル』を開いてシミュレーションを実行する
1.『回路図ファイル』を作成する
『WAVファイル(output.wav)』を電圧源や電圧源の入力信号として使用するための『回路図ファイル』を作成します。
電圧源の電圧値を右クリックまたは、シンボルを『Ctrl+右クリック』すると出てくるValue欄に『WAVファイル』を読み込むための構文を入力します。構文は以下のようになっています。
ここで、『回路図ファイル』と『WAVファイル』が同じフォルダにあるか別のフォルダにあるかで<filename.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=1
と入力しています。
2.『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ファイル』の形式を考慮すると以下のようになります。
- <Nbits>:ビット/チャネル
- <SampleRate>:サンプルレート
- V(left) [V(right)…]:出力チャネル数
8または16
11025Hz、22050Hz、44100Hz(44.1kHz)
1つのみだとモノラル、2つ指定するとステレロとなります。また、チャネル・ナンバ0(chan=0)がステレオの左チャネル、チャネルナンバ1(chan=1)がステレオの右チャネルとなります。なお、3つ指定すると、3つ目は無効となり、チャネル・ナンバ0と1のみ音声が再生されます。
先ほどのシミュレーションでは以下の『.waveコマンド』を記述しました。
実際に『WAVファイル(output.wav)』をPCで再生してみると、V(out1)がチャネル・ナンバ0(chan=0)なのでステレオの左チャネル、V(out2)がチャネルナンバ1(chan=1)なのでステレオの右チャネルで再生されることが確認できます。