以前に自分はOgg Opusの音量管理の運用の問題点について、Qiitaに記事を投稿していました。
Opusの初期仕様やRGとの仕様の差異により統一化されたラウドネスの管理が困難になっていることを説明した記事ですが、その中で重要な機能に「Output gain」というものがあります。
このoutput gainですが、私の知る限りこれを自由に編集できる単独のソフトウェアはありませんでした。
- opusencはFLACファイルのReplayGainタグをoutput Gainに変換しますがそれはエンコード時の1回限りで後から編集することは出来ません。望みのoutput gainを得るにはエンコードを何度も繰り返す必要がありoutput gainの特徴を活かせているものとは到底言えません。
- foobar2000はoutput gainを何度も書き換えることが出来ますが、音量スキャンの結果をoutput gainの仕様どおりに反映させることが出来るという性質のものなので、ユーザーの意思で書き換えられるというものではありません。
ではどうやってoutput gainなどのOpusの音量周りの動作を検証して上の記事を書いていたかというと、自分用にoutput gainやタグを編集するツールを自作していたのでした。
そのOpusのメタデータを編集するツール、「opuscomment」は長らく公開してこなかったのですが、一向にそれを編集できるソフトが見つからないので、opusの隠された力をもっと知ってもらうためにも単機能なものでも公開しておくのが良かろうと、ここにリリースすることにしました。
opuscomment
2017-09-01現在masterはv1.4です。
気を付けた点は以下:
- C99やPOSIXといった標準に準拠し、どの*nixでも動くようにしたい
- Code Set Independenceなコードを心がける。猛烈な勢いでクソ化しているUnicodeやその親のASCIIが滅びてもコンパイルと実行が出来るはずである
- 書き換えが必要ない所は極力Oggのパース無しに再利用
- vorbiscommentに倣った、フィルタと組み合わせるのに明快な動作
- タグ編集様式をvorbiscommentと合わせることによりvorbisからの移行を容易にさせる
- 省メモリ。可変長となるタグの取扱いにメモリをヒープから確保することはしません。そのため不正なデータによってメモリを逼迫させるDoSが起こらないため安全に他のアプリケーションと連携を取ることが出来ます。
気になってる点:
めっちゃ日本語である。一応日本語をソースから切り離せるようにメッセージカタログを採用したので今後言語を増やせるようにはなってるけど、元が日本語じゃあねぇ…。しかし私は英語を書きたくないのだ…- カタログがない時のメッセージは英語にしました。
マニュアルがmarkdownだけ。あとでroffも追加するとして、これもやはり日本語しかないというアレが- roffで書かれたマニュアルを用意しました。これで一人前のシェルユーティリティの顔を出来る!? (日本語だけですが)
こんな出来ですが、Opusのメタデータを編集するツールとしては十分及第点を超えられているものと思っています。ホント、音声ファイルの音量をコマンド一つでパパッと変えられるのってめっちゃ便利なんですよ!? Opusのこんな便利機能を埋もれさせておくなんて勿体無いです。先日書いた記事では音楽再生のラウドネス管理を焦点に当てていましたが、例えばウェブサイトで効果音を再生したいと云う時にちょっと音が大きすぎてしまった・小さすぎてしまったという時も、他のコーデックならエンコードのやり直しが必要になる所をOpusとopuscommentを使えばコマンド一つで楽々です。
opuscomment、どうぞご利用下さい。またバグ報告や翻訳追加・標準準拠のための助言もお待ちしております。