可逆圧縮音源 FLAC, APE, Wavpack, TTA, TAK を自分なりに比較してみた

可逆圧縮音源の中では比較的メジャー(だと俺が思っている)な FLAC, APE, Wavpack, TTA, TAK の五つのフォーマットについて自分なりに簡単にまとめてみました。
これを書くに当たって一応自分なりにいろいろ調べましたが、間違っているところもないとは言い切れないのであまり素直に信じちゃダメですよ!

圧縮率、エンコード/デコード速度の値は 5point1.net の、エンコーダーのデフォルトのプリセットでの数値を引用しています(例えば FLAC なら Level5 の値)。

Oggプロジェクトに属する音声ファイルフォーマット。デコードが非常に早く、対応ソフトも可逆フォーマットの中では非常に多い。圧縮率は低め。

圧縮率
★☆☆☆☆ (65.7%)
エンコード速度
★★★☆☆ (x53)
デコード速度
★★★★★ (x124)
対応ソフトの量
★★★★★

    • 個人的な評価

対応ソフトが多く、機能面でもマルチチャンネルやストリーミングに対応していたりと他の可逆フォーマットでできることは大抵できるので、比較的使いやすいフォーマットのように思います。
欠点はやはり圧縮率の低さ。最高圧縮の level 8 でもあまり圧縮率が上がりませんので、ファイルサイズを気にする方には不向きです*1
なお、エンコード速度を速めた Flake というエンコーダーがあるようですが、テストが不十分だという理由であまり使用は推奨されていないようです。
海外(正確に言うと HydrogenAudio Forums)ではかなり普及しているみたいですが*2、国内ではなぜかあまり人気がありません。
全体的に癖が少なく、初心者向けのフォーマットと言えるでしょう。

  • Monkey's Audio (APE)

圧縮率の高さが特徴のフォーマット。比較的古参。デコードは遅め。愛称(?)は猿。

圧縮率
★★★★★ (63.8%)
エンコード速度
★★☆☆☆ (x41)
デコード速度
★☆☆☆☆ (x38)
対応ソフトの量
★★★★☆

    • 個人的な評価

見ての通り、圧縮率の高さが魅力。また圧縮率の高さに"比べて"エンコードが速いのも特徴です。ただパイプをサポートしてないので若干遅めに感じるかも*3
デコードが遅めですが普通に再生するには困らない程度だと思います。ただ Extra High ではシークが少しもたつく場合があるようです。
マルチチャンネルやエラー訂正機能が他に比べて弱かったりと細かい点で不便であり、また下位互換性もアップデートのたびに潔く切り捨てられているあたり、漢向けのフォーマットといえるでしょう。
もしあなたが「圧縮率こそ正義じゃ。半端な機能はわしにはいらん、再生さえできればいいんじゃ」という男気あふれる性格の持ち主ならば La か Monkey's Audio Insane を使うといいかもしれません。俺は使いませんが。

エンコードやデコードが比較的速いフォーマット。不可逆圧縮ファイル + 差分ファイル に分割してエンコードもできる(ハイブリッドモード)。

圧縮率
★★☆☆☆ (65.6%)
エンコード速度
★★★★☆ (x64)
デコード速度
★★★☆☆ (x88)
対応ソフトの量
★★★★☆

    • 個人的な評価

全体的に見てバランスの取れたフォーマットといえます。
機能面でも FLAC と同等かそれ以上に充実しているので優等生的なポジションにある、と思いきや独創性あふれる一面も見せる、実はちょっとお茶目なフォーマットです。
まずはプリセットの選択の幅の広さ。プリセットは fast, normal, high, extra high の4つに加え、x 〜 x6 オプションを付けることができるのでなんと実質 4 * (1+6) = 28 種類もの中から選ぶことができます。ですが実際は x5 や x6 オプションなんてつけたらエンコードが長くなりすぎて使う機会は正直あまりないと思います。extra high x6 なんて選んだ日には数十分〜数時間プログレスバーとにらめっこする羽目になりかねません。
他にもハイブリッドモードでエンコできたり、自己解凍書庫を作れたりと面白い機能がありますが、正直使いどころが見当たりません。
こんなことばかり書いてると無駄な機能ばかりの使えないフォーマットなんだなと思われそうですが、実際は欠点らしい欠点はほとんどなく、きれいにまとまったフォーマットといえるでしょう。癖があまりなく、 FLAC より圧縮率が高くてエンコードが速いフォーマットを求めている場合はいい選択肢かもしれません。個人的には FLAC についで扱いやすいフォーマットだと思います。

  • True Audio (TTA)

エンコードが速いフォーマット。圧縮率、デコード速度もよい。対応ソフトはあまり多くない。

圧縮率
★★★☆☆ (65.2%)
エンコード速度
★★★★★ (x72)
デコード速度
★★★☆☆ (x78)
対応ソフトの量
★★☆☆☆

    • 個人的な評価

エンコードの速さが特徴のフォーマット・・・だったのですが、 TAK の登場でかなり中途半端な存在になってしまった印象を受けます。
海外ではマイナーな形式らしく、対応ソフトがあまり充実していません。エンコード形式を選択できなかったり、パイプ処理をサポートしていないなど機能面でもイマイチな感じ。
個人的には TTA を使うことはあまりおすすめしません。単に性能を求めるのなら、mka を使ったりしない限りは TAK あたりを使ったほうがいい気がします。

  • TAK

エンコード/デコード速度、圧縮率のバランスが最も優れている。対応ソフトは少ない。他にもマルチチャンネルをサポートしていなかったりと細かいところはまだ不十分な面が多い。

圧縮率
★★★★☆ (64.1%)
エンコード速度
★★★★★ (x66)
デコード速度
★★★★☆ (x126)
対応ソフトの量
★★☆☆☆

    • 個人的な評価

可逆フォーマット界の期待の新星。エンコード/デコード速度と圧縮率の総合力は他のフォーマットに比べ抜きん出ています。プリセットの選択の幅も広いです。
ただ新しいフォーマットなので対応ソフトが少なく(現時点では foobar2000Winamp 、それに KbMedia Player くらいしかない)、機能面でもマルチチャンネルに対応していなかったりとまだ発展途上なところがあります。これからのバージョンアップに期待、というところでしょうか。

総評
いろいろなフォーマットがありますが、可逆の場合は他のフォーマットに変えたくなったらエンコし直せばいいだけの話なのでどれを使うかを選ぶのにそこまで悩む必要はないと思います。
個人的にオススメなのは、異論はあるでしょうがやはり現時点では FLAC が一番無難ではないかなと思います。
そんな俺のフォーマットは APE → TTAWavPackFLAC と変遷していき、今は おTAK を使っていたりしますが。
まあこういうのは使っていくうちに自分にとって何が一番向いているかが分かるようになってくるものだと思うので、まずはどれでもいいからこれだ、と思ったものを使ってみればいいんじゃないでしょうか。

なお、可逆圧縮音源についてもっと詳しく違いを知りたい場合は Lossless comparison - Hydrogenaudio Knowledgebase (英語)などに分かりやすくまとまっています。日本語でおkって人は 音声データのつくりかた 第5回 (まとめ) あたりが参考になるかと思います。

しかし俺はどうやら TTA が嫌いなようだ。そんなに悪いフォーマットではないと思うんですがねー。まあ個人的にはパイプをサポートしてないのと foobar2000 で再生回数を自動更新するたびに曲が止まるのが嫌だったのでマイナス補正がかかったんだと思います。TTA 使いで気分を害された方、すみません。

*1:Monkey's Audio にしても 5% くらいしか縮まないので、俺はあまり気にせず使ってました。もちろんこれを大きい数字と見るかどうかは人それぞれですが

*2:http://www.hydrogenaudio.org/forums/index.php?showtopic=60145

*3:パイプ対応の非公式版もあるらしい

Playlist Tree と playback statistics custom で複数回再生に対応した再生履歴を表示する

本当は wiki とかに書こうと思ってたんだけど、ちょっとバグ?っぽいものを利用してる感があるのでここにチラ裏として書きます。

Playlist Tree で再生履歴を表示させようと思ったら %last_played% あたりを使うのがよくあるパターンだと思いますが、これだと最後に再生した日時しか表示されなくて不便なんですよね。例えば3回連続で同じ曲を再生したのに履歴に表示されるのは1回分だけとか。

まあ Navigator とか使えばすむ話かも知れませんが、普段 Playlist Tree 使ってる人には Playlist Tree で履歴を表示できるってのも便利かもしれません。

というわけで、複数回の再生も記録する方法を紹介します。ただし使うには playback statistics custom でプレイスタンプ機能を利用し、再生日時を記録していることが条件です。

Playlist Tree で新しいクエリを作り、Format 欄に

$puts(a,%%)

$left($get(a),4)|

$substr($get(a),6,7)|

$substr($get(a),9,10)|

$substr($get(a),12,19) / %title%[ @ %artist%]

と書けば表示できます。

sort by name after populating ... にはチェックを入れてください。更新するときにモッサリするので注意してください。

仕組みはいたって簡単で、%% を使って表示させようというわけです。ただそのままではうまく表示できないので $puts() をわざわざ使ってます(使わないとフリーズ)。何でこれだとうまく動作するかはよく分かりません。$puts() を使うと %play_stamp% の値が変化しないからかな?ちなみに Playlist tree mod の方でも試してみましたが、こちらでも使えるようです。Album List では %<...>% の動作の仕方が違うようで使えません。

なお、上のスクリプトではフォルダごとに分けて表示されますが、フォルダごとに分けたくない場合は

%% / %title%[ @ %artist%]

などのようにしてももちろん構いません。

私の環境では
Label

History (@format<$num(%_itemcount%,5)> count) [@format<$replace($cwb_wdhms($sum('%_length_seconds%')),d, d,wk, wk)>]

Format

$puts(a,%%)

$left($get(a),4) '('@quote<@format<$num(%_itemcount%,5)>> count')' '['@quote<@format<$replace($cwb_wdhms($sum('%_length_seconds%')),d, d,wk, wk)>>']'|

$substr($get(a),6,7) '('@quote<@format<$num(%_itemcount%,4)>> count')' @quote<@format<'['%_play_length%']'>>|

$substr($get(a),9,10) '('@quote<@format<$num(%_itemcount%,3)>> count')' @quote<@format<'['%_play_length%']'>>|

$substr($get(a),12,19) / %title%[ @ %artist%]

として、総再生数や、年、月、日ごとに合計何回再生したかを表示させています。こっちは更新時にくぁなりモッサリするのでロースペックな方は気を付けて下さい。なおこれの方では cwb_hooks が必要です。

はてなダイアリーへようこそ!

このページはあなた専用の日記(ブログ)です。*1

さっそく「日記を書く」をクリックして最初の記事を書いてみましょう。

はてなダイアリーの一番簡単な使い方を知りたい方は、以下の動画をご覧ください。

(再生ボタンをクリックすると、はてなダイアリーの使い方を音声と動画で見ることができます。)

はてなダイアリーのヘルプでは、このような動画を交えた使い方の説明や、文字の色の付け方、本やDVDを紹介する「はてな記法」の使い方を解説しています。

より詳しいはてなダイアリーの使い方を知りたい方は、以下のヘルプをご覧ください。


それでは、日々の出来事やテレビ番組の感想、普段考えていることなど、あなたならではの日記を書いて楽しんでください!

*1:この文章はサンプルです。実際に自分の記事を書くときには削除しても大丈夫です。