ラベル lame の投稿を表示しています。 すべての投稿を表示
ラベル lame の投稿を表示しています。 すべての投稿を表示

2014年2月21日金曜日

  

Walkmanのギャップレス再生を検証してみた。

WalkmanにNonstopMixなCDをLAME(V0)オプションでmp3にエンコードして聴いていたら、
明らかに曲間の欠落があるCDが有った。
プツっといった音は聴こえないが、数秒間の音が抜けた形でギャップレスになった感じに聴こえた。
SONY WALKMAN ウォークマン NW-F880 Part5
NW-F880のスレッドにはEAC+LAMEでエンコードしたファイルも
ギャップレス再生出来たとの書き込みがあって、
嘘をついている様な書き込みとも思えなかった。

そこで、LAMEでエンコードする時の設定で、
ギャップレス再生の有無が変わるのではないかと考え、検証をしてみる事とした。

そもそも、ATRACファイルのギャップレス再生は、すべての曲を同じ条件でエンコード(CBR)し、
曲間のサンプル数を無理やりに合わせ、あたかも1つのファイルを再生していると
デコーダーをだますやり方で行われている。このため、X-apli等でエンコードしたファイルは
1曲1曲の長さが違ってきてしまう。(LAMEでいう所の--nogapオプション)

Walkmanがmp3再生に対応したのは、私が記憶している中では
MZ-RH10であり、mp3を再生するデコーダはWalkmanの中では結構長く、
レガシーな物なのではないかと想像した。
なおかつ、ISO基準で本来はLAMEタグには対応しない方が自然である。

そこで、LAMEオプションでVBR、ABR、CBRをそれぞれエンコードして聴いてみた。
すると、CBRでエンコードしたファイルでは、確かに曲間の欠落が気にならないレベルになった。
LAMEでエンコードしてギャップレス再生が出来ている人は、CBRオプションでエンコード
している人だというのが分かった。

しかし、私はLAMEの良さはVオプションによるVBRエンコードだと思っているので、
BオプションのCBRエンコードは使いたくない。
実際にVBRエンコードの音質は高いことが知られており、OGGやACCではVBRが標準となっている。
そこで、AACでエンコードした場合のギャップレスエンコードも検証してみる事とした。

私が、AACを使ってこなかった理由はギャップレス再生の実装が不鮮明だったからである。
NEROのエンコーダが独自に実装したり、AppleがITunes(QuickTime)で実装したり(iTunSMPB)
ISO標準の方式になったりと、二転三転しているなと印象を持っていた。
NEROのエンコーダーのギャップレス方式がISO標準方式になったという情報と、
QuickTimeのエンコーダーがfoobar2000から利用出来、ギャップレス方式を選択できる事が分かったので、この2つを試してみた。
結果を表にまとめてみる。





NW-A867 NW-F807 NW-ZX1
ATRAC
MP3 LAME CBR × ×
VBR × ×
ABR × ×
AACーLC NERO VBR × ×
QT VBR × ×
ALAC VBR - -
FLAC Flaccl VBR -

×→プツっと音が鳴り明らかに曲間が切れている形式
△→一見ギャップレスの様に聞こえるが実際には数サンプル(数秒??)スキップしている形式
○→ギャップレス再生できているか、あるいは、ほとんど曲間が気にならない形式

オプション
lame.exe
-S --noreplaygain -V 0 -h - %d
neroAacEnc.exe
-lc -ignorelength -q 0.65  -if - -of %d
qaac.exe
--ignorelength --tvbr 122 -q 2  --threading --gapless-mode 2 - -o %d


結果、LAME(MP3)は CBRでエンコードすればギャップが気にならなくなる事がわかった。
AACはVBRが基本なので、1つのオプションしか試していません。

2013年10月9日水曜日

  

Media Go 2.5a のギャップレスエンコードを調べてみた。

Media Goがバージョンアップして2.5aになったらしい。
バージョンアップ内容にmp3のギャップレスエンコードがあったので、
どのような実装方式なのか調べてみた。

夏に買ったS2TB RecordingのHardcore United Tokyoが
ノンストップミックスだったのでエンコードを試してみる事にした。

結果
NOTittleFLACLAME MP3Media Go
01intro1:13.9461:13.9461:14.031
02Tranny Stream3:09.7733:09.7733:09.988
03Skorpion EVO2:36.2802:36.2802:36.264
04Look up in the Sky3:20.9333:20.9333:20.933
05Shout2:34.8802:34.8802:34.880
06See It Coming3:09.7603:09.7603:09.779
07The Haunted!3:05.5863:05.5863:05.573
08Odessey3:00.0003:00.0003:00.009
09As One feat. Yukacco [RoughSketch Remix]3:16.7603:16.7603:16.754
10KILLER MACHINE4:50.2403:54.3863:54.396
11Soul Of Noise4:50.2404:50.2404:50.194
12Oyasumi [TANUKI vs. Dil Remix]4:05.6004:05.6004:05.603
13Protorusion3:20.9063:20.9063:20.907
14Magic Rave Night4:05.5864:05.5864:05.603
15Are You Ready [DJ SHIMAMURA Remix]4:41.8534:41.8534:41.808
16Starlit Sky4:26.2804:26.2804:26.344

54:5254:5254:53

LAMEで取り込んだ曲もMedia Goで取り込んだ曲もFoobar2000では、
mp3_accurate_length = yesとなっていてギャップレス再生は出来た。
しかし、 Media Goで取り込んだ方はパディング等の情報が表示されなかった。

Flacで取り込んだ曲と、lameを使って作成した曲は長さが一致しているが、
Media Goで取り込んだ曲は長さが違う結果となった。
これはMedia Goが--nogapオプションでmp3をエンコードしていると見て間違いなさそうだ。
現状では、Media Goで不可逆圧縮を利用すると曲の長さが改変されてしまう。
Atrac時代から、なぜこの仕様を引きずっているのか理解に苦しむ。
mp3エンコードでVBRが選べないのもこの仕様によるのだと思う。
個人的に、mp3の優れている所はLAMEを使ったVBRエンコードだと思っているので、
Media GoでのMP3のCBRエンコードはあまり意味がないように思う。
曲間情報を正しく保ったままWalkmanでギャップレス再生しようとすると、
Media Goで可逆圧縮形式を使うしか道は無さそうである。

2013年9月26日木曜日

  

LAMEでmp3エンコード

LAME 3.99.5 32bit/64bit
公式ソースからビルドされたバイナリ。

AltiVec/SSE Optimized LAME Encoder
AltiVec/SSEを使って高速化したエンコーダらしい。

LAME 64bitにパスを通すとEACがエラーで起動しなくなる。
EAC本体は32bitなのだがLAME 64bitのパスが通っていると
その機能を内包した状態で起動しようとするからである。

foobar2000は本体は32bitで動いているが
コンソールアプリには純粋にコマンドラインを投げるだけなので
64bitエンコーダが利用できた。

LAMEの強みはLAMEタグによるギャップレスエンコードと
VBRの最適化にあると思うので-Vオプションを使うことにした。
-V 0 ~ -V9
←高音質 低音質→

EAC
-S --noreplaygain -V 0 -h %s %d
foobar2000



Encoder file:任意LAMEを置いたディレクトリを選ぶ
Extension:mp3
Prameters:-S --noreplaygain -V 0 -h - %d
Format is:lossy
Highest BPS mode supported:24
Encoder name:MP3 (tmkk-LAME)分かり易い名称。
Bitrate (kbps):245VBR(V0)オプションなので、245ぐらい。
Settings:V0VBR V0オプションを使用するので。