オンライン依存性症候群

洋楽(以前は全般、次いでSmooth Jazz、最近はCafé Del Mar)とアニメが好きな人が、ネットレーベルの運営と音楽活動をしながらネットレーベルを旅していました。今はネットレーベルの運営を継続しつつアニメを観て、ここにその記録を書き記しています。

無音を加えて余分なデータを取り除く

コマンドラインエンコーダーの設定をしていたときのことです。AACエンコーダーとしてFAACを選択肢に加えるべく(音質の面でも変換速度の面でもNero AAC Encoderの方がよいと言われていますが)、FL Studioで自作曲をリニアPCM (*.wav)形式で書き出して、コマンドプロンプトから変換しておりました。それをfoobar2000 (プレーヤーソフト)で再生すると、トラックの最後に短いノイズが付加されていました。トラックの演奏時間としても、秒単位では違いが見られませんでしたが、ミリ秒単位やサンプル数などで比較すると、リニアPCMファイルよりもわずかに長くなっていました。
foobar2000は、これらコマンドラインエンコーダーに対するフロントエンドの機能「Converter」を持っていますので、コマンドを追加したのち、foobar2000のプレイリストに自作曲を置いて変換してみたところ、演奏時間はリニアPCMファイルと一致しました。「Converter」による変換では、MP3やAACVorbisFLACといった様々な形式から、foobar2000デコーダーを通してパイプ出力され、それをコマンドラインエンコーダーに渡して符号化していると考えられます。パイプ入力されればFAACでも「正しく」変換されることになります。コマンドプロンプトで直に入力するのがダメで標準入力ならOKということがわかっても、なぜそうなるかは不明でした。
どうしてもコマンドプロンプト上で完結させるための策として、「wavファイルをFLACで圧縮して、それをデコードして、パイプでFAACに渡してAAC形式にする」という強引な案を思いついたのですが、これがきっかけとなって、原因がわかりました。FLACを用いてコマンドプロンプトから変換していたとき、「warning: skipping unknown sub-chunk LIST」と表示されました。wavファイル内にアプリケーションが独自に付加した情報があり、FLACはこれをスキップして圧縮していました。FL Studioによって書き出されたファイルには、FL Studioで再利用するための情報(たとえばBPMなど)が書き込まれていたようです。
いつも自分が公開用のMP3ファイルを作っていたときの手順を思い起こしてみると、FL Studioで書き出した後、波形編集ソフトで開いて曲の始端と終端に無音を付け、それからエンコードしていました。その手順に倣って再度FAACで変換してみたところ、コマンドプロンプト上でも問題は解決しました。波形編集ソフトで改めて書き出したことで、DAWが付加した独自の情報が消えたためと思われます。
LAME、Nero AAC Encoder、oggenc (Vorbisエンコーダー)、mpcenc (Musepackエンコーダー)などでも、FL Studioで書き出したファイルをそのままコマンドプロンプトから変換してみましたら、これらが作成したファイルはすべて、リニアPCMファイルと同じサンプル数でした。FAACだけが、wavファイルに付加されたDAW独自の情報までエンコードしてしまい、ノイズが付加されるという事態になっているようです。
当ネットレーベルに送られてくるデモの中にも、トラックの最後に短いノイズがある曲があったりします。アーティストの使用しているDAWによって独自の情報が付加され、エンコーダーがその情報も音声とみなして符号化しているのかもしれません。
自分が曲の両端に無音を付加するのは、再生を開始してから音が出るまでのマージンを始端に設け、曲が終わってからの余韻を終端で調整するためです。この作業が意外なところでいい方向に働いていたことを知り、エンコード前のもう一手間が重要だったことを改めて実感しました。