
        午後のこ〜だ ver. 2.26
                     for x86-CPUを搭載した殆んどのOS

                                                updated '00/02/29
 ◆ 概要

  wavデータを[ISO/IEC 11172]MPEG規格にて定められた音声データに変換します。

  いわゆるmp3エンコーダです。

  LAME 3.29β(一部3.55β)を元にx86-CPU向けに高度に最適化されています。
  3D Now!, SSE等最新のCPU命令やマルチCPUに対応していて、高速なエンコードが
  可能です。(SSE, SMPはOSが対応している必要があります)

 ◆ ver. 2.25との違い

  ・5%〜15% 高速化 by 酒居
  ・コンソールで使いやすいようにいくつかのオプションを追加
  ・VBR ヘッダが変になることの修正
  ・wav型mp3出力対応

 ◆ 使い方

  コンソール上で使用します。

  gogo [options] input [output]      `[]'は省略可能の意味

  `input'は入力ファイル名、`output'は出力ファイル名を指定して下さい。

  出力ファイル名を省略した場合は、入力ファイル名の拡張子を`mp3'に変更した
  名前が指定されたものとして処理されます。
  (拡張子が4文字以上の場合は入力ファイル名に`.mp3'が加えられます)

  オプションはファイル名の後ろにつけることも可能です。

  オプション無しで起動すると使い方が表示されます。

  入力ファイル名を`stdin'にすることで標準入力モードになります。
  この時は出力ファイル名を明記する必要があります。

 ◆ 主なオプション解説

  -b kbps   kbps単位でのビットレート指定
            省略時は128[kbps]です。
            値が大きいほど高音質になりますが、圧縮率は下がります。

  -m {m,s,j,f} mp3の圧縮形式
            m : モノラル(ステレオPCMを強制的にモノラルにしたい時)
            s : ステレオ
            j : ジョイントステレオ(省略時)
            f : M/Sステレオ

  -nopsy    心理解析を行いません。その分速くなります(2〜3倍の高速化)。

  (例)
    gogo eki.wav -br 112000
    eki.wav を 112kbps j-stereo 心理解析有効でエンコードし eki.mp3 に保存。

    gogo eki.wav -m s -nopsy
    128kbps stereo 心理解析無効でエンコード。

    cat sample.wav | gogo stdin a.mp3
    sample.wav を標準入力モードでエンコードし a.mp3 に保存。

 ◆主な設定

  -nopsyをつけるかつけないかは個人の好みや用途しだいです。
 「私は違いが分からないなあ」という方は-nopsyをつければよいと思います。

  128kbps以下でエンコードするときは-lpfは有効にしておくべきです。
  単に波形解析で16kHz以上が現れるからという理由で-lpf offとするのは
  勧められません。
  faq.txtも参照してください。

 ◆ 新設されたオプション(コンソールのみ)

  -delete エンコード終了後 wav ファイルを削除します。

  -i      出力ファイルが既に存在するとき上書きするかを確認します。

  -o path 出力ディレクトリを path に変更します。
          出力ファイル名も同時に指定した場合は -o の path を使います。

        (例1) gogo wav/test.wav -o sample
          ./wav/test.wav ファイルから ./sample/test.mp3 ファイルを生成します。

        (例2) gogo wav/test.wav data/qqq.mp3 -o sample
          ./wav/test.wav ファイルから ./sample/qqq.mp3 ファイルを生成します。
          gogo wav/test.wav sample/qqq.mp3 と等価です。

  -riff {wave, rmp} RIFF/{WAVE,RMP}形式出力

 ◆ より細かいオプション解説

  -b      で使える数値は以下の通りです。
          入力PCMが32KHz,44.1KHz,48KHzの場合、
          [ 32,40,48,56,64,80,96,112,128,160,192,224,256,320 ]

          入力PCMが16KHz,22.05KHz,24KHzの場合、
          [ 8,16,24,32,40,48,56,64,80,96,112,128,144,160 ]

          bps単位の -brオプションも使えます。

  -silent 途中経過を表示しません。
  -test   ベンチマークを行います。
          44.1kHz, 16bit stereo PCMエンコードを想定したモードです。
          空白をつけずに数字を書くとその秒数で処理します。
          benchディレクトリに様々な環境での結果報告があります。
       (例) gogo -test20 -nopsy
          nopsyモードで20秒のデータをエンコードする時間を測定

  -off {3dn,mmx,sse,kni,e3dn}
          それぞれ 3D Now!, MMX, SSE(KNI),Enhanced 3D Now!の使用を止めます。
          M2やK6等MMXがパイプライン化されていないCPUでは
          -off mmxとした方が速いことがあるようです。
          -off 3dnをつけるとEnhanced 3D Now!の使用も止めます。

  -debug  CPU情報などを出力します。
          バグ報告の時等書いてくださるとありがたいです。

  -emp {n,c,5} de-emphasis設定

  -cpu num 実装しているCPUの数の強制指定 (通常自動判別されます)

  -lpf {on,off} 16kHzのフィルタ設定
          省略時は128kbps以下なら有効 160kbps以上なら無効
          通常触る必要はありません。

  -v {0,1,..,9}
          VBRを使用します。値が小さい方が高音質、大きいと高圧縮です。
          -bオプションで最低ビットレートを指定します。
          適切なパラメータは各自お試しください。-nopsyとの併用は出来ません。

  -d freq  出力MP3のkHz単位の周波数の指定

       (例) gogo test.wav -d 22.05
            test.wavが44.1kHzの時でも22.05kHzに変換しながらmp3を生成
          但し、単なる線形補完のため音質は下がります。

  以下は通常のWAV以外のデータを入力する時に使います。

  -offset byte byte数だけデータの先頭を飛ばします。
  -mono   入力データをモノラルとして処理します。(省略時ステレオ)
  -8bit   入力データを8bitPCMとして処理します。(省略時16bit)
  -s freq 入力PCMのkHz単位の周波数を指定します。
  -bswap  16bitPCMの上位、下位バイトを入れ換えます。
  -tos    TownsOS用SNDファイルとして8bit->16bit変換を行います。

       (例) gogo test.wav a.mp3 -offset 0 -mono -s 16
            test.wavをヘッダ無しモノラル16kHz PCMとしてmp3を生成

            gogo yume.snd a.mp3 -offset 32 -mono -8bit -s 19.2 -tos
            TownsOS用SNDファイルの標準的な設定です。

  以下はBeOS MT時のみ有効です。
  
  -priority num エンコードスレッドの優先順位指定
          (省略時 10 Normal Priority)
          100を指定するとOSごと落ちることがあるようです(^^;
  -readthread num データ読込みスレッドの優先順位指定
          (省略時はreadthreadを使用しません)

 ◆ 特許と配布

  このソフトのもとになったLAMEはGPLですが、それが必要とする
  `MPEG-2 Audio Simulation Software Distribution 10'の一部は
  FhG社が特許を持っています。
  現在日本ではその特許が無効であるため公開を行っています。
  従って海外に配布することはお止め下さい。(ソースのみは可能らしい)
  また、特許が有効になると特許料を払えないため多分公開を取り止めます。

 ◆ LGPL2 (GNU Library General Public License Ver.2)

  このプログラムはフリーソフトであり、無保証です。
  LGPL2に基づいてこのプログラムを変更して配布することが出来ます。

  LGPL2に基づいてこのプログラムを商業利用することが出来ます。
  但し、もとにしたLAMEが何らかの特許を取った場合、あるいはFhG社の特許が有効
  になった場合には、その限りではありません。
  商業利用の場合、次のことに注意して下さい。

  1. gogo.dll(またはそれに準ずるもの)を添加することが出来る。
  2. gogo.dll以外には musenc.h 等のインタフェース部分を記述する目的のための
     ソースを除いてgogoに関連するソースを使うことは出来ない。
  3. gogoに関するどんな修正もLGPL2に基づいて公開されなければならない。
  4. プログラムの中で次のことを表記して下さい。
     gogoを使っていることと、gogoのバージョン。
     gogoがLGPL2に従っていること。
     LGPL2のコピー。
     gogoのソースか、ソース配布元のURL。

 ◆今後の展望

  「ほぼ最適化は終わりに近づいたと思います。」と前バージョンで書いたら
  某氏からまだまだ甘いとのご指摘が。
  頑張ろうとは思ったのですが、私はもう疲れました。というか飽きました(^^;
  心理解析有効時はちょこっと3D Now!で頑張れば1〜2割は余裕でいけるでしょう。
  要望があればするかもしれませんが、どなたか代わりにやりませんか?

  まあ、LAME が逆に午後のルーチンを組み込みだしているようなので、午後の
  役目も終わりつつあるのかも知れません。

  機能面については、もろぼし☆らむ氏のcd2wavによりWindows環境でお気軽に
  CDから直接mp3を生成できるので何も言うことはないでしょう。
  #え、あれは配布中止だって...ふふふ、実は(自粛)

 ◆謝辞

  午後の元となっているLAMEを作っている方々に感謝します。
  音質、速度共に素晴らしいソフトウェアです。

  NASMを使用することでアセンブリ言語を使いながらも様々なOS間での同時開発が
  可能になりました。NASMを作られた方々に感謝します。

 ◆最新版

  http://homepage1.nifty.com/herumi/
  http://member.nifty.ne.jp/~pen/mct_top.htm

  に置く予定です。
  バグや感想などはここの掲示板にお書きください。お待ちしています。

 ◆ 参考

  LAMEのソース( ver. 3.23〜3.5x beta ) http://www.sulaco.org/mp3/

  ISO規格書(ISO/IEC 11172-3 Part3 : Audio)
  "ISO MPEG Audio Subgroup Software Simulation Group" sources

  大浦拓哉氏が作られた『実離散Fourier変換/逆変換ルーチン』のソース

  Linux-2.2.9カーネルでPIIIのSSE命令を使用可能にするパッチ
     
  その他 Intel, AMDのCPU関連リファレンス

  ----
    (C)1992  ISO MPEG Audio Subgroup Software Simulation Group
    (C)1999  LAME に携わっている人達
    (C)1999, 2000 PEN@海猫, へるみ

    shigeo@kurims.kyoto-u.ac.jp, http://homepage1.nifty.com/herumi/
    pen@marinecat.forum.ne.jp,   http://member.nifty.ne.jp/~pen/mct_top.htm
