午後のこ〜だ ver. 2.39b for x86-CPUを搭載した殆んどのOS updated 2001/1/6 ◆ 概要 wavデータを[ISO/IEC 11172]MPEG規格にて定められた音声データに変換します。 いわゆるmp3エンコーダです。 LAME 3.29β(一部3.55β)を元にx86-CPU向けに高度に最適化されています。 3D Now!, SSE等最新のCPU命令やマルチCPUに対応していて、高速なエンコードが 可能です。(SSE, SMPはOSが対応している必要があります) ◆ 特許と配布 mp3の生成アルゴリズムのうち根幹の部分は、いくつかの企業によって特許 がとられています。 それらのうちFhGとThomson Multimediaはその特許使用料を要求しています。 しかし現在、日本ではプログラムは「物」として扱われないので、「方法」 の特許発明については、ソース、バイナリともに「日本国内のユーザに向け てネット上で配布」する行為は特許権侵害にはならないと考えます (将来の法改正等によりプログラムの特許発明の「実施」について明定された 場合には、その限りではありません)。 また、午後のこ〜だは、独自に開発したものであり、著作権侵害にもならない と考えます。 このような判断に基づき、ソースの配布を再開することにしました。 (2000/12/8現在) 出版社で雑誌付録のCD-ROMへ収録する場合や、企業で午後のこ〜だを使う 場合は、これらの行為が特許権侵害や著作権侵害になるか否かについて、 各社でご判断ください。私達はそれに関して何もコメントしません。 海外での配布については、各国での特許について調査の上、各自の責任に おいて行ってください。 ◆ LGPL2 (GNU Library General Public License Ver.2) このプログラムはフリーソフトであり、無保証です。 LGPL2に基づいてこのプログラムを変更して配布することが出来ます。 LGPL2に基づいてこのプログラムを商業利用することが出来ます。 但し、各自の責任において特許使用の契約を行う必要があります。 商業利用の場合、次のことに注意して下さい。 1. gogo.dll(またはそれに準ずるもの)を添加することが出来る。 2. gogo.dll以外には musenc.h 等のインタフェース部分を記述する目的 以外のgogoに関連するソースを使うことは出来ない。 3. gogoに関するどんな修正もLGPL2に基づいて公開されなければならない。 4. プログラムの中で次のことを表記して下さい。 gogoを使っていることと、gogoのバージョン。 gogoがLGPL2に従っていること。 LGPL2のコピー。 gogoのソースか、ソース配布元のURL。 ◆ サポート 掲示版によるサポートは行っておりません。 質問のある方は gogo-support@marinecat.forum.ne.jp までメールを下さい。 ただし、FAQ的な質問などの場合お返事を差し上げないことがあります。 ◆ 使い方 コンソール上で使用します。 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 に保存。 ◆主な設定 128kbps以下でエンコードするときは-lpfは有効にしておくべきです。 単に波形解析で16kHz以上が現れるからという理由で-lpf offとするのは 勧められません。 faq.txtも参照してください。 ◆ より細かいオプション解説 -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の数の強制指定 (通常自動判別されます) -v {0,1,..,9} VBRを使用します。値が小さい方が高音質、大きいと高圧縮です。 -vbオプションで最低/最大ビットレートを指定します。 適切なパラメータは各自お試しください。-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ファイルの標準的な設定です。 -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}形式出力 -lang {sjis, eucjp, eng, ger} それぞれ SJIS, 日本語EUC, 英語, ドイツ語でメッセージを出力します。 Windowsでは地域で設定された値を参照します。 UNIX系OSではLC_MESSAGES, LC_ALL, LANGの順でlocaleを参照します。 以下はBeOS MT時のみ有効です。 -priority num エンコードスレッドの優先順位指定 (省略時 10 Normal Priority) 100を指定するとOSごと落ちることがあるようです(^^; -readthread num データ読込みスレッドの優先順位指定 (省略時はreadthreadを使用しません) -br min max (min と max の間にコンマを書いてはいけません) VBR使用時の 最小, 最大 bitrate を指定します。 以下は上級者向けのオプションです。 para1, para2は100以下の整数で、間にはコンマを書いてはいけません。 パラメータの内容はソースを解読して下さい。 m(__)m #Win版helpでは多少解説されています。 -lpf {on,off} 16kHzのフィルタ設定 またはより詳しく -lpf para1 para2 値が小さい程フィルタが強い -th para1 para2 j-stereoでの stereo/ MS-stereo の切替え制御 ◆謝辞 午後の元となっているLAMEを作っている方々に感謝します。 音質、速度共に素晴らしいソフトウェアです。 NASMを使用することでアセンブリ言語を使いながらも様々なOS間での 同時開発が可能になりました。NASMを作られた方々に感謝します。 ◆ 参考 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