[2009/03/14 新規][2009/03/14最終更新]
みなさんはカラオケに行ったことがありますよね? カラオケでは、あたりまえですが、曲と同時に歌詞が表示されます。
「タイムタグ」とは MP3 などの曲を演奏するときに、歌詞を曲と同期して表示させるための時間設定のことです。歌詞にタイムタグをつけておけば、カラオケのように、曲の進行に合わせて、歌詞を表示することができるのです。
タイムタグの記述方法については、駄歌詞屋本舗さんがとりまとめて仕様書を公開されており、これが事実上の標準となっています。これをタイムタグ規格と呼びます。
再びカラオケを思い浮かべて下さい。表示されている歌詞のうち、難しい漢字や、外国語などにはルビ(読みがな)が振ってありますよね? また、例えば、「時間」を「とき」と読ませるような、特殊な読み方をする場合にもルビは必要です。
残念ながら、タイムタグ規格には現在のところ、ルビに関する定めがありません。ルビを振ることができないので、多くの場合、「薔薇(ばら)」のように、括弧付きでルビを表記するなどの代替策が取られているようです。
しかしせっかくなら、ルビはルビとして定め、カラオケのように漢字の上に表示される方が読みやすいでしょう。ルビを指定するためには、タイムタグ規格を少し拡張する必要があります。2008 年時点で私が探した限りでは、ルビに関するタイムタグ規格の拡張規格はこれまでに公開されていないようでした。そこで、ここにルビ拡張規格を定め、公開いたします。
タイムタグ規格準拠のアプリケーションを開発されており、ルビ表示機能を付けようと考えている開発者の方がいらっしゃいましたら、本拡張規格をご検討いただきますようお願いします。賛同していただけるのであれば、本拡張規格に準拠したルビ機能を開発していただくことにより、拡張規格の乱立による混乱が防げ、利用者の方々にとっても、1 つの歌詞ファイルが様々なアプリケーションで利用できるので便利になると思います。
大前提として、ルビ以外の部分についてはタイムタグ規格に準拠します。ルビの部分のみを拡張します。
ルビは @ タグで指定します。書式は次の通りです。
| 書式 | @RubyX=ルビ対象(漢字等),ルビ(読みがな)【省略可】,適用開始時刻【省略可】 |
|---|
| 例 | @Ruby1=為替,かわせ @Ruby2=為替,カワセ,[01:00:00] @Ruby3=為替,,[02:00:00] |
|---|
指定されたルビを実際にどのように表示するかは、本拡張規格では定義せずに、個々のプレーヤーに任せるものとします。
とはいえ、一般的には、通常のカラオケと同じように表示するのが自然でしょう。すなわち、漢字(などのルビ対象)の真上に、漢字よりも小さい文字でルビを振ります。ルビのワイプは、漢字と同じタイミングで行います。例として、以下の歌詞ファイルでのルビ表示を考えてみます。
| サンプル | @Ruby1=為替,かわせ [00:01:00]本日の[00:10:00]為替[00:12:00]レート[00:20:00] |
|---|
本規格では、ルビにタイムタグを埋め込むことも可能とします。これにより、より細かなワイプの制御が可能です。
ルビに埋め込まれたタイムタグは、歌詞中で指定されている時刻からの相対時刻とし、歌詞中で指定されている時刻との逆転現象を発生させないように指定するものとします。時刻の逆転現象が発生した場合のプレーヤーの動作は不定です。
例として、以下の歌詞ファイルでのルビ表示を考えてみます。先ほどの例とほとんど同じですが、ルビにタイムタグが埋め込まれています。
| サンプル | @Ruby1=為替,か[00:00:50]わ[00:01:00]せ [00:01:00]本日の[00:10:00]為替[00:12:00]レート[00:20:00] |
|---|
以上がルビ拡張規格の内容ですが、ルビ拡張規格を「必須部分」と「オプション部分」に区別することとします。
「必須部分」は、ルビ拡張規格に対応するプレーヤーを開発する際に、必ずサポートしなければならない部分です。「必須部分」は次の部分です。
ルビ拡張規格の策定に当たり、いくつかの方式を検討しましたが、最終的に上記の仕様といたしました。ここでは、備忘録の意味も込め、本拡張規格の策定経緯や、本拡張規格の利点などを記します。
まず、ルビを @ タグで指定するようにしたのは、ルビの指定による副作用を排除するためです。
一般的にルビを表記する方法として用いられている、括弧でルビを指定するという仕様も検討しました。「本日の為替(かわせ)レート」というように、歌詞に直接ルビを書き込む表記です。この方法は一般的なので、歌詞ファイルの流用がしやすい(修正しなくてもルビ表示ができる)という利点があります。しかし例えば、コーラスを括弧でくくる場合もあるなど、括弧はよく使われる文字なので、ルビ以外の文字もルビとして扱われてしまうという副作用があり、悪影響もまた大きくなります。それと、ルビ対象の文字がどこなのかが特定しづらいという問題もあります。このため、採用を見送りました。
それでは括弧よりも使用頻度の少ない文字で、ルビ対象もきちんと表記すればどうかということで、「本日の{為替|かわせ}レート」のような仕様も検討しました。しかしこの方法ですと、ルビ非対応のプレーヤーで表示した場合に、{} などがそのまま表示されてしまい、使用頻度が少ないだけに違和感のある表示となってしまいます。
@ タグで指定することにすれば、ルビ非対応プレーヤーにおいては、@ タグが無視されるだけで、悪影響はありません。また、ルビ対応プレーヤーにおいても、ルビとルビ以外を混同する恐れがありません。ルビ対応プレーヤー開発時の手間という観点から見ても、歌詞解析ルーチンについては既存のものをそのまま使用できるという利点があります。
@Ruby タグで適用開始時刻を指定できるようにしたのは、同じ漢字に複数のルビを振れるようにするためです。例えば、歌詞の 1 番では「時間」を「じかん」と読ませ、歌詞の 2 番では「時間」を「とき」と読ませるような歌詞に対応します。
適用開始時刻なんていう遠回しな指定方法ではなく、単純に、ルビが出てくる回数だけルビを指定すればよい、という考え方もあります。しかし例えば、歌詞の 1 番に「時間」が 10 回出てくる場合、@Ruby1〜@Ruby10 まで 10 回も書くのは面倒ですし、@Ruby10 から 2 番なのか @Ruby11 から 2 番なのか、そのうち数え間違えたりします。その点、適用開始時刻をタイムタグで指定する方式であれば、漢字の近くにタイムタグがあるわけですから、間違えずに済みます。
本拡張規格は、シンプルであることも利点の 1 つです。歌詞部分は通常通りで、簡単な @ タグのみでルビを指定できます。適用開始時刻はオプションなので、基本的には漢字とルビを指定するだけです。ルビの表示方法を各プレーヤーに任せることで、細かなオプションが不要となり、同時に、各プレーヤーにむやみな制約を課すことを防いでいます。
ここでは、本拡張規格に対応したソフトウェアを紹介します。本拡張規格に対応したソフトウェアを開発された方は、ご連絡を頂ければ、ここに掲載させて頂きます。
| 名称 | 作者 | OS | 概要 |
|---|---|---|---|
| waku-WAK KARAOKE Player | SHINTA | Haiku 用 | カラオケ歌詞作成・表示機能付きのメディアプレーヤー。音楽だけではなく、動画(ムービー)に歌詞を合わせることも可能。カラオケタグエディタは歌詞のワイプ(色替え)をマウスで指定でき、タイミングを取りやすい。 |
最後までお読みいただきありがとうございました。ご不明な点などございましたら、お気軽にご連絡ください。
また、よりよい規格のご提案や、実装時のテクニックなどございましたら、こちらもお寄せいただければと思います。
| PR |
|---|
【 更新履歴 】
2009/03/14 初版。
※ このページへのリンクはご自由にどうぞ。URL は http://www2u.biglobe.ne.jp/~shinta/be/_BL_FE_RubyTag.htm?DefaultStyle です。
タイムタグ カラオケタグ