☆ PIPE 録音

サウンドデバイスから送られてきた音声データを、ハードディスクに保存せず に名前なしパイプを作成して他プロセスの標準入力(stdin)へと渡す事が可能です。

この機能を使うには「setup」の「録音の設定」の録音モードを「PIPE」にセッ トし、パイプの「設定」で標準入力としてデータを渡すコマンドとそのオプシ ョンを設定し、ラジオボタンをチェックして下さい。

コマンドでは置換文字を指定することもできます。詳しくは 置換規則一覧 を参照してください。

なお(WAVE 形式で録音した場合の)データサイズが 4G を超える場合は 仮のデータサイズとして 4G が起動したツールに送られますので、場合によっては 起動したツール側でヘッダを無視する等のオプション指定が必要になります。 その場合はPIPE 設定ダイアログの「ヘッダ非送信」をチェックしてヘッダを送信 しないようにします。

あとは録音ボタンを押せば録音を開始します。

PIPE 録音の具体的な使用方法については応用のページを参照して下さい。

なお録音中に表示される録音サイズは「パイプにロック音が出力したデータサイズ」 であり「ファイルのサイズ」ではありません。したがって実際のファイルサイズは 表示と異なる場合があります。

(注意 1)
起動したツールが停止して応答が無くなった場合は Shift キーを押し ながら録音停止ボタンを押すと録音の強制停止をします。

(注意 2)
データサイズが 2 G バイト以上になるととエラーが出るツールもあ ります。その場合には録音サイズが 2G 以下になるようにして下さい。

(注意 3)
うまくデータが送信されない場合には、高度な設定のパイプのバッファサイズの ところを変えてみたり、起動したツールの読 み込み用のバッファサイズを変更してみて下さい。

(注意 4)
PIPE 設定ダイアログの「ヘッダ非送信」をチェックすると、 WAVE ヘッダ をコマンド側に送信せずに生の WAVE データだけをコマンド側に 渡します。


☆ Ogg Vorbis 録音

Ogg Vorbis 形式でリアルタイム録音 します。

(1) oggenc.exe を lockon.exe と同じフォルダに置く
(2)「setup」の「録音の設定」の録音モードを「PIPE」にする
(3) パイプの設定に

oggenc.exe -q1 - -o "%a"

の様に書いてラジオボタンをチェック。

(4) ファイル名(*.ogg)と録音時間を設定して録音開始。
oggenc のオプションに関しては oggenc のヘルプを参照して下さい。

☆ MP3 録音

MP3 形式でリアルタイム録音します。

ここでは外部エンコーダを使用する方法を説明します。 ACM を使用する方法については こちらを 参照してください。

外部エンコーダとして標準入力からデータを渡す事が出来るもの を使用します。その様なエンコーダとしては

午後のこ〜だ

LAME

SCMPX

等があります。

・LAME を用いて録音する例

(1) lame.exe を lockon.exe と同じフォルダに置く
(2)「setup」の「録音の設定」の録音モードを「PIPE」にする
(3) パイプの設定に

lame.exe -b32 - "%a"

の様に書いてラジオボタンをチェック。("%a" の前の - を忘れない様に)

(4) ファイル名(*.mp3)と録音サイズを設定して録音開始。
lame のオプションに関しては lame のヘルプを参照して下さい。

・SCMPX を用いて録音する例

(1) scmpx.exe をロック音と同じフォルダにコピーする。
(2)「setup」の「録音の設定」の録音モードを「PIPE」にする
(3) パイプの設定に

scmpx /e /b9 /f stdin "%a"

の様に書いてラジオボタンをチェック。

(4) ファイル(*.mp3)と録音時間を設定して録音開始。

SCMPX のオプションについては SCMPX のヘルプを参照してください。

・午後のこ〜だを用いて録音する例

午後のこ〜だ(gogo.dll) とロック音サービスパック内の 午後のこ〜だ DLL アダプター(gogodll.exe)を用いて録音します。

(1) gogo.dll,gogodll.exe を lockon.exe と同じフォルダに置く
(2)「setup」の「録音の設定」の録音モードを「PIPE」にする
(3) パイプの設定に

gogodll.exe -b 64 stdin "%a"

の様に書いてラジオボタンをチェック。

(4) ファイル(*.mp3)と録音時間を設定して録音開始。
午後のこ〜だ、及び午後のこ〜だ DLL アダプターの オプションに関してはそれぞれの説明書を参照して下さい。


☆ FLAC 録音

・FLAC 形式で録音する例

FLAC を使用して 可逆圧縮録音をします。

flac.exe をロック音と同じフォルダにコピーして PIPE に

flac -o "%a" -

と設定してファイル名(*.flac)を指定して録音


☆ WMA 録音

・WMA9 で録音する例

WMA9 エンコーダ(Windows Media Encoder 9 Series 内の WMCmd.vbs) を使用する例です。

(1) Windows Media Encoder 9 Series をインストールする
(2) WMCmd.vbs をロック音と同じフォルダにコピーする
(3) パイプを

wmcmd.vbs -input stdin -output "%a"

の様に設定する

(3) ファイル名(*.wma)と録音時間を設定
wmcmd.vbs のオプションについては wmcmd.vbs のヘルプを参照してください。 また出力データサイズが2Gを越えるとエラーがでるので2G未満に設定してください。

・WMA8 で録音する例

WMA8 エンコーダ(Windows Media 8 Encoding Utility 内の wm8eutil.exe) を使用する例です。

(1) wm8eutil.exe をロック音と同じフォルダにコピーする。
(2)「setup」の「録音の設定」の録音モードを「PIPE」にする
(3) パイプの設定に

wm8eutil -input stdin -output "%a"

の様に PIPE 設定をする。

(3) ファイル名(*.wma)と録音時間を設定
wm8eutil のオプションについては wm8eutil のヘルプを参照してください。 なお、wm8eutil は英語版のツール なので日本語のファイル名を使うと文字化けするので注意してください。

・WMA4 で録音する例

waveIn のソースの一部を使用させて頂いて作成したロック音サービスパック内の wmastdin.exe を使用して録音します。なお、これを 使用するためには wmaudioredist.exe を導入する必要があります。 wmaudioredist.exe は、例えば デルタソフトさんのページなどで配布されています。

(1) wmaudioredist.exe  をインストールする。
(2) PIPE の設定に

wmastdin 64 "%a" 

の様に書く。

(3) ファイル名(*.wma)と録音時間を設定


☆ ACM

付属のツール ACMCONV を使って ACM を使用する事が出来ます。 ACMCONV のマニュアルは こちらです。

(例) MP3 形式に変換(要 codec)

PIPE に

acmconv -mp3 stdin "%a"

と設定


☆ フィルタリング録音

付属の Wave フィルタツール WAVEFLT2 を用いてフィルタリングしながら 録音することが可能です。ここでは幾つかの簡単な例を示します。

WAVEFLT2 についての詳しい事は WAVEFLT2 の マニュアル を参照してください。

・ローパスフィルタ

10000 hz 以上の音をローパスフィルタにかけて取り除きつつ録音する場合は次のようにします。

(1) waveflt2.exe が lockon.exe と同じフォルダにあるのを確認する。
(2)「setup」の「録音の設定」の録音モードを「PIPE」にする。
(3) パイプの設定に

waveflt2.exe  -fir_lpf 10000 -dither 0 stdin "%a"

と書いてラジオボタンをチェックする。

(4) ファイルと録音時間を設定して録音開始

・フィルタリング+Ogg Vorbis 録音

フィルタリング(この例ではローパスフィルタ) しつつ Ogg Vorbis 形式にダイレクトエンコードする場合

(1) waveflt2.exe, oggenc.exe が lockon.exe 
と同じフォルダにあるのを確認する。
(2)「setup」の「録音の設定」の録音モードを「PIPE」にする。
(3) waveflt2.exe と同じフォルダに

# config.txt
-silent
-fir_lpf 10000
-bit32float
-noextrahdr
-pipeout "oggenc.exe -q1 - -o %^%a%^"
# config.txt ここまで

と設定ファイル(ここでは config.txt)に書いて保存する。

(4) パイプの設定に

waveflt2.exe -cfg "config.txt" stdin "%a"

と書いてラジオボタンをチェックする。

(5) ファイル(*.ogg)と録音時間を設定して録音開始。

☆ 無音部検出分割録音

付属の Wave フィルタツール WAVEFLT2 の -nosound オプションを用いて入力音声の無音部分を 検知して自動的に保存ファイルを切り替える処理が可能です。 WAVEFLT2 の各オプションについての詳しいことは WAVEFLT2 の マニュアルを参照してください。

・wave ファイルに分割する例

録音時に-60db以下の無音部分が 0.5 秒続いた場合に分割する例です。 うまく分割できない場合は -nosound オプションの数字を変えてみてください。

waveflt2.exe -tstamp -autoofs 300 -nosound 500 -60 stdin "%a"

この場合、例えばファイル名を output.wav とした場合は最初は output-0.wav にデータを出力し、 0.5 秒の無音部分を検知すると順番に output-1.wav , output-2.wav,... にデータを出力していきます。

・Ogg Vorbis 形式ファイルで分割録音する例

WAVEFLT2 の -pipeout オプションと組み合わせて Ogg Vorbis 形式で分割録音することが可能です。

(1) waveflt2.exe, oggenc.exe が lockon.exe と同じフォルダにあるのを確認する。
(2)「setup」の「録音の設定」の録音モードを「PIPE」にする。
(3) waveflt.exe と同じフォルダに

# config.txt ここから
-tstamp
-silent
-autoofs 300
-nosound 500 -60
-noextrahdr
-pipeout "oggenc.exe -q1 - -o %^%a%^"
# config.txt ここまで

と設定ファイル(ここでは config.txt)に書いて保存する。

(4) パイプの設定に

waveflt2.exe -cfg "config.txt" stdin "%a"

と書いてラジオボタンをチェック。

(5) ファイル(*.ogg)と録音時間を設定して録音開始。
すると、例えばファイル名を output.ogg とした場合は最初は output-0.ogg にデータを出力し、 0.5 秒の無音部分を検知すると順番に output-1.ogg , output-2.ogg,... にデータを出力していきます。

・ファイルを分割した後、ノーマライズして Ogg Vorbis 形式で保存する例

入力音声の無音部を判定してファイルを分割し、 さらにノーマライズして Ogg Vorbis にエンコードする例です。

WAVEFLT2 の仕様上、 -nosound オプションと -normal オプションは同時に使用できない ので一旦 -nosound で分割した中間 WAVE ファイルを作成して -exec オプションで 2 段目の WAVEFLT2 を起動して改めてノーマライズ + Ogg Vorbis 化します。

-exec オプションで起動した 2 段目の WAVEFLT では中間ファイルを作成せずに直接 Ogg Vorbis エンコードを行います。

(1) oggenc.exe を waveflt2.exe ,lockon.exe と同じフォルダに置く
(2) waveflt2.exe と同じフォルダに下の config.txt 、config2.txt 
という 2 つの設定ファイルを作成する。

--------

## config.txt ここから
## 1 段目の WAVEFLT2 の設定ファイル
## 分割を行って 2 段目の WAVEFLT2 を起動
-tstamp
-nochkhdd
-autoofs 300
-nosound 500 -60 
-exec "waveflt2 -cfg %^config2.txt%^ %^%a%^ %^%a%^"
## config.txt ここまで


--------

## config2.txt ここから
## config.txt の -exec オプションで起動する 2 段
## 目の WAVEFLT2 の設定ファイル
## ノーマライズして OGG エンコード して中間ファイル削除
-silent
-tstamp
-normal -1
-bit32float
-noextrahdr
-pipeout "oggenc -q1 - -o %^%a%^"
-del
## config2.txt  ここまで

--------

(3) パイプの設定に

waveflt2.exe -cfg "config.txt" stdin "%a"

と書いてラジオボタンをチェック。

(5) ファイル(*.ogg)と録音時間を設定して録音開始。
すると、例えばファイル名を output.ogg とした場合は最初は output-0.ogg にデータを出力し、 0.5 秒の無音部分を検知すると順番に output-1.ogg , output-2.ogg,... にデータを出力していきます。

うまく分割されない場合は config.txt の -nosound の数字を 調整してみてください。

config2.txt の -del オプションをコメントアウトすると 中間ファイルを削除しません。中間ファイルは上の例の場合は output000.bkp , output001.bkp … というファイルになります。 この中間ファイルの拡張子を .wav に変更すると(ノーマライズしていない) WAVE 形式ファイルになります。

また Ogg Vorbis 形式にエンコードしないで WAVE 形式で保存する場合は config2.txt の -pipeout オプション と -bit32float をコメントアウトし、-dither 0 を加えてください。

(詳細説明)

1 段目の WAVEFLT で -nosound オプションで無音分割されて output000.ogg , output001.ogg …という「WAVE 形式の」 中間ファイルが作成されます。ここで分割されて ファイルが切り替わる度に -exec オプションによって 2 段目の WAVEFLT が起動されるのですが、 %^%a%^ %^%a%^ の様に入力と出力ファイル名を同じに指定しているので 中間ファイルが output000.bkp , output001.bkp …とリネームされます。 後はノーマライズ + OGG 化 して -del オプションで中間ファイルが 削除されます。


☆ 時間毎に分割録音

付属の Wave フィルタツール WAVEFLT2 の -split オプションを使うと 指定した時間毎にファイルを区切って連続して録音していきます。 WAVEFLT2 の -split オプションについての詳しいことは WAVEFLT2 の マニュアルを参照してください。

・wave ファイルに分割する例

10 分(600 秒)ごとに分割する場合

waveflt2.exe -tstamp -split 600 stdin "%a"

この場合、例えばファイル名を output.wav とした場合は最初は output-0.wav にデータを出力し、 あとは 順番に output-1.wav , output-2.wav,... にデータを出力していきます。

・ Ogg Vorbis 形式に分割する例

1 時間(3600 秒)毎にファイルを分割して Ogg Vorbis 形式で録音する例です。

(1) waveflt2.exe, oggenc.exe が lockon.exe と同じフォルダにあるのを確認する。
(2)「setup」の「録音の設定」の録音モードを「PIPE」にする。
(3) waveflt2.exe と同じフォルダに

# config.txt
-tstamp
-silent
-split 3600
-noextrahdr
-pipeout "oggenc -q1 - -o %^%a%^"
# config.txt ここまで

と設定ファイル(ここでは config.txt)に書いて保存する。

(4) パイプの設定に

waveflt2.exe -cfg "config.txt" stdin "%a"

と書いてラジオボタンをチェック。

(6) ファイルと録音時間を設定して録音開始
すると、例えばファイル名を output.ogg とした場合は最初は output-0.ogg にデータを出力し、 一時間毎に output-1.ogg , output-2.ogg,... とファイルを切り替えて 出力していきます。


☆ プラグインの作成

自前でフィルタ等のプラグインを作成される方は下の資料を参考にして下さい。

PIPE 録音開始時に標準入力から送られてくるヘッダの形式は以下の通りです。この ヘッダに続いて Wave のデータが送られてきます。

4 bytes: "RIFF"
4 bytes: (データサイズ+44)-8 (DWORD)
4 bytes: "WAVE"
4 bytes: "fmt "
4 bytes: fmt のサイズ = 16 (DWORD)
2 bytes: エンコード形式(PCM) = 1 (WORD)
2 bytes: チャンネル数 1 or 2 (WORD)
4 bytes: サンプルレート 11025 or 22050 or 44100 (DWORD)
4 bytes: バイト/秒 = レート*ブロック長 (DWORD)
2 bytes: ブロック長 = チャンネル*ビット/8 (WORD)
2 bytes: ビット深度 = 8 or 16 (WORD)
4 bytes: "data"
4 bytes: データサイズ (DWORD)

以下データ列(リトルエンディアン)
ここでデータサイズは設定した録音時間に対応するサイズがダミーとして 入り、録音途中で停止ボタンを押すと EOF が送られてきます。従って ヘッダ のデータサイズと実際の録音サイズは異なる場合があるのに気をつけて下さい。 またデータサイズが 4G を越す場合は 4G がデータサイズとして送られてきます。 詳しくは
Q&Aを参照してください。

また、パイプのバッファサイズはデフォルトで 512k 取っています(設定で変更 可能です)。

詳しくはプラグインのサンプルコードを 参照して下さい。