図1は、本実施形態に係るカラオケ装置1の構成を示す図である。本実施形態のカラオケ装置1は、CPU14、RAM15、ROM16等を有して構成される制御部を中心として、ハードディスク13、音声処理部18、映像処理部11、操作パネル10、通信インタフェイス17などを備えて構成されている。
CPU14、RAM15、ROM16は、コンピュータにおいて一般的に使用される構成であって、CPU14は、プログラムの実行などに基づく各種制御を、RAM15、ROM16、ハードディスク13などに記憶する各種プログラム、各種データに基づいて行う。本実施形態においては、ハードディスク13に楽曲情報を記憶する。楽曲情報には、演奏情報、歌詞情報等が含まれる。CPU14は、演奏情報を再生する処理を行うことで楽曲の演奏制御を行う。
カラオケ装置1における音声処理部18は、主として演奏情報の再生処理を実行することにより楽曲を演奏する手段である。演奏情報はMIDI規格に基づいて作成されるMIDI情報や、コーラスなどを担当する音声データなどを含んで構成される場合もある。音声処理部18では、ユーザーが操作パネル10や図示外のリモコンにより指定した楽曲に対応する演奏情報に基づいて再生処理を実行することで、所望の楽曲の演奏が行われる。具体的には、音声処理部18は、MIDI情報を用いて楽音を奏でる。また、オーディオ入力端子に接続されたマイクから入力された音声と、演奏情報に基づく演奏音をミキシングしてアンプに出力し、アンプに接続されているスピーカーから放音する。なお、マイクロホンから入力される音声に対しては、エコーなどの効果を付加することも可能としている。
映像処理部11は、歌詞表示処理、並びに、背景映像表示処理など、カラオケ装置1に接続されるディスプレイ12を介してユーザーに視覚的情報を提供する処理を実行する。歌詞表示処理は、楽曲情報に含まれる歌詞情報に基づいて歌詞をディスプレイ12に表示させる処理であって、演奏情報の再生処理に同期して実行される。ディスプレイ12に表示された歌詞は、楽曲の演奏に同期して歌唱すべき箇所が色変え表示され、歌唱者に歌唱箇所を教示する。また、背景映像表示処理は、楽曲の演奏されるときにディスプレイ12に各種映像を表示することで、歌唱の雰囲気を盛り上げる処理である。そのため、ハードディスク13には、MPEG形式などによる圧縮が施された背景映像情報が記憶されており、映像処理部11では、この背景映像情報をデコードしてディスプレイ12に映像を表示させる。
通信インタフェイス17は、ネットワーク接続端子を介してインターネットに接続され、図示しないサーバー装置から、新しくリリースされた楽曲情報や、背景映像情報、プログラムなどを受信する。
ハードディスク13には、楽曲情報と、背景映像情報と、カラオケ装置1において再生処理などの各種処理を実行するためのプログラムとを記憶している。また、サーバー装置から各種データを受信することで、記憶しているデータの追加、更新が実行される。本実施形態で説明する歌詞表示処理についても、プログラムを予めROM16に記憶させておく方法のほか、サーバー装置から配信プログラムを受信して既存のカラオケ装置1に機能追加させることが可能である。
図2は、本発明の実施形態に係る楽曲情報のデータ構成を示した図である。本実施形態の楽曲情報は、既存のものを利用することが可能である。すなわち、本実施形態では、楽曲情報に対して予め何ら加工、改変を行うことなく、歌唱補助機能であるとして、ディスプレイ12にローマ字ルビを表示させることが可能とする。このように、カラオケ装置1にて実行されるプログラムにてローマ字ルビの表示を行うこととしているため、楽曲情報の加工、改変に手間、コストを要することを抑えることが可能である。また、ローマ字ルビを表示のためのデータ量の増加がハードディスク13に伴うこともなく、カラオケ装置1の記憶容量を増加させる必要がない。
図2に示されるように楽曲情報は、楽曲情報の各種属性を示すメタ情報、演奏のために使用される演奏情報、歌詞表示のために使用される歌詞情報(テロップ情報とも呼ばれる)を含んで構成されている。本実施形態では、メタ情報として曲名、作曲者名、楽曲ID、ジャンル、個別素材画像の有無などを含んで構成されている。曲名、作曲者名、楽曲ID、ジャンルは、楽曲を検索および指定するための情報として用いられる。個別素材画像は、背景映像として当該楽曲に特化したものを有しているか否かを示す情報であって、有りの場合には、アーティストのライブ映像など当該楽曲に特化した映像が、対応する楽曲の再生時にディスプレイ12に表示可能である。
歌詞情報(テロップ情報)は、演奏情報による楽曲の再生に同期してディスプレイ12に1曲の歌詞の一部を順に表示させるためのデータである。本実施形態では、1曲の歌詞は、1つのタイミングで1度に表示させる1または複数の文字を1単位の歌詞ブロックとした複数の歌詞ブロックで構成されている。歌詞ブロックの文字に漢字が含まれる場合、漢字の読み方を規定するルビが付与される。歌詞ブロックは、1曲の歌詞の全文字について、一文字あるいは複数文字ずつを1単位の歌詞ブロックとして定めてもよい。歌詞ブロックは、本発明の歌詞文字の一例である。ハードディスク13に記憶される楽曲情報の歌詞情報には、1単位の歌詞ブロックそれぞれに対応して、後述する1つの歌詞ブロック情報が定められる。歌詞表示処理では、演奏情報の再生処理に同期して出力されるステップ値に基づいて、この歌詞ブロックに対応する歌詞ブロック情報を読み出し、表示制御をすることで、楽曲の再生に同期した歌詞表示が実行される。なお、1画面内に表示させる歌詞ブロックは、複数設けることが可能であって、歌唱終了した箇所の歌詞ブロックの歌詞文字を消去し、新たな歌詞ブロックの歌詞文字を表示させることで、スムースな歌唱を行わせることが可能である。
歌詞ブロックを示す歌詞情報として、歌詞の文字を示す歌詞ブロック情報と、歌詞の文字が漢字である場合の読み方を規定するルビブロック情報とがある。1曲につき、複数の歌詞ブロックに対応して、複数の歌詞ブロック情報と複数のルビブロック情報とが定められている。ルビブロック情報は、1曲の歌詞に漢字が含まれている場合に、漢字の読み方を示すルビの情報として定められる。歌詞ブロック情報は、歌詞ブロックID、歌詞文字ブロック、表示段、表示基準位置、表示開始時間、表示終了時間、変化開始時間、変化速度が、歌詞ブロックIDごとに対応付けられて構成されている。本実施形態の歌詞ブロック情報の表示基準位置が、本発明の基準位置の一例である。本実施形態の歌詞ブロック情報の表示基準位置が、本発明の歌詞位置の一例である。本実施形態の歌詞ブロック情報の変化開始時間が、本発明の歌詞色変え時間情報の一例である。本実施形態の歌詞ブロック情報の変化速度が、本発明の歌詞色変え時間情報の一例である。本実施形態の歌詞ブロックIDごとに歌詞ブロック情報で定められる歌詞ブロックのひとかたまりが、本発明の所定単位の一例である。なお、本発明の所定単位は、歌詞ブロックのうちの一文字としてもよい。ルビブロック情報は、ルビブロックID、かな文字ルビブロック、表示段、表示基準位置、表示開始時間、表示終了時間、変化開始時間、変化速度が、ルビブロックIDごとに対応づけられて構成されている。本実施形態のルビブロック情報の表示基準位置が、本発明のルビ位置の一例である。本実施形態のルビブロック情報の変化開始時間が、本発明のルビ色変え時間情報の一例である。本実施形態のルビブロック情報の変化速度が、本発明のルビ色変え速度情報の一例である。歌詞ブロック情報の歌詞文字ブロックは、漢字、平仮名、片仮名、英字の少なくともいずれかを含む1または複数の文字で構成される文字のかたまりである。ルビブロック情報のルビ文字ブロックは、1または複数の平仮名または片仮名から構成される文字のかたまりである。本実施形態では、かな文字ルビブロックには、漢字の読みを規定する平仮名を使用している。
なお、本実施形態では、変化開始時間と変化速度とによって、描画された歌詞文字の色を変化させる色変え情報を生成している。色変え情報の形態は、このような形態に限られるものではなく、各種形態を採用することが可能である。歌詞ブロックIDは、歌詞ブロックを識別するための情報であり、ルビブロックIDは、ルビブロックを識別するための情報である。本実施形態では、歌詞ブロックIDと、ルビブロックIDとにより、演奏の順に沿って文字をディスプレイ12に表示するために読み出す順番が付されている。この歌詞ブロックIDとルビブロックIDとを使用することで、歌詞情報中、次にどのブロックを読み出すべきかを判定することが可能である。歌詞文字およびかな文字ルビは、ディスプレイ12に表示させる文字を規定した情報であり、テキストベースのデータ等が使用される。この歌詞文字およびかな文字ルビのディスプレイ12上での表示位置を規定するのが、表示段、表示基準位置である。本実施形態では、ディスプレイ12上において歌詞文字およびかな文字ルビが表示された領域の左上を基準座標として、基準座標のX座標を表示基準位置に規定し、基準座標のY座標を表示段で規定している。
表示開始時間は、歌詞文字とかな文字ルビとをそれぞれディスプレイ12に表示開始する情報である。表示終了時間は、ディスプレイ12に表示された歌詞文字とかな文字ルビとを消去する情報である。変化開始時間は、ディスプレイ12に表示された歌詞文字とかな文字ルビとを、変化速度にしたがって色変えする情報である。本実施形態では、歌詞ブロック情報およびルビブロック情報中の時間に関する情報(表示開始時間、表示終了時間、変化開始時間)を、演奏情報の演奏開始からカウントされるステップ値で規定している。演奏処理に同期して出力されるステップ値を使用して、歌詞文字およびかな文字ルビの表示開始、色変え開始、表示終了を実行することで、楽曲の再生と歌詞表示の同期を取ることが可能となっている。なお、同期の取り方は、ステップ値で規定する形態に限られるものではなく、各種形態を採用することが可能である。なお、歌詞文字とかな文字ルビを同時にディスプレイ12に表示させる場合、ルビブロック情報の表示開始時間、表示終了時間は、歌詞ブロック情報の表示開始時間、表示終了時間と兼用することとしてもよい。
以上が本実施形態の楽曲情報のデータ構成であるが、データ構成については、本発明の趣旨を変更しない限り適宜の形態を採用することができる。では、本実施形態の歌詞情報とその描画結果の例について図3を用いて説明する。図3(a)は、本実施形態の歌詞ブロック情報およびルビブロック情報を示した例である。なお、この例では、表示開始時間などタイミングを示す各種データは省略して記載している。この例は、「志を抱いて」「明日へ向かって飛べ」という歌詞文字をそれぞれ有する2つの歌詞ブロック情報と、2つの歌詞ブロック情報から対応関係が求められる「こころざし」「いだ」「あす」「む」「と」というルビ文字をそれぞれ有する5つのルビブロック情報が設けられている例である。歌詞ブロック情報からルビブロック情報の対応関係を求める方法は、後述により説明する。なお、図3(a)中の歌詞文字、かな文字ルビの上部に示す数値は、表示段、表示基準位置によって規定される基準座標である。
図3(b)は、図3(a)に示される2つの歌詞ブロック情報に基づいて歌詞文字とルビ文字とをディスプレイ12に描画された状態を示した図である。本実施形態において、歌詞文字、かな文字ルビを位置づけるための基準座標は、左上の基準座標で示される。図に示すように、ディスプレイ12の横方向をX軸、縦方向をY軸にとり、歌詞文字、かな文字ルビの基準座標中、X軸方向の位置を表示基準位置で規定し、Y軸方向の位置を表示段で規定している。なお、表示基準位置は、ディスプレイ12におけるドット数で示しているが、表示段は、図3(b)に示されるよう、歌詞文字、かな文字ルビ、それぞれの表示段毎にドット数が割り当てられている。したがって、歌詞文字、かな文字ルビについては、表示段を指定することで、Y軸方向におけるドット数を指定することが可能である。
図4は、本実施形態に係る歌唱補助機能を備える楽曲情報再生処理を示すフロー図である。カラオケ装置1を操作するユーザーは、図1の操作パネル10、あるいは、ネットワークに接続されたリモコン装置などの指定手段を利用して歌唱したい楽曲を指定する。楽曲の指定は通常、予約という形態で行うことが可能となっており、予約された楽曲は、その識別子(例えば、曲番号)をRAM15内の予約テーブルに記録し、予約テーブルから識別子を順次、読み出して楽曲情報の再生が実行される。
操作パネル10などから指定された楽曲について、楽曲情報の再生が開始されると、まず、S101にてハードディスク13に格納されている楽曲情報が読み出される。S102では、読み出された楽曲情報に基づいて楽曲の再生が行われることになるが、本実施形態では、楽曲の再生に先駆けて、ローマ字ルビ準備処理(S200)を実行する。本実施形態のカラオケ装置1は、外国人ユーザーに対する歌唱補助機能として、ローマ字によるルビ表記を行うことが可能である。この歌唱補助機能を使用した場合、表示する歌詞文字の上方にローマ字ルビが描画される。本実施形態の歌詞情報中には、ローマ字ルビは用意されておらず、ルビブロック情報に含まれるかな文字ルビ、歌詞文字の平仮名、あるいは、片仮名部分から生成される。
なお、ローマ字ルビ準備処理(S200)は、歌詞再生処理(S300)で描画対象となる歌詞ブロック情報よりも先行して先読み処理される。例えば、歌詞再生処理(S300)で描画対象となる歌詞ブロック情報よりも歌詞ブロックIDの昇順に所定ブロック数(例えば、20ブロック)までの歌詞ブロック情報について先行して処理される。ローマ字ルビ準備処理(S200)を実行開始した後、演奏処理(S400)と、歌詞再生処理(S300)と、が並列実行される。演奏処理(S400)は、読み出された楽曲情報内に含まれる演奏情報を、音声処理部18に演奏させることで実行される。この演奏処理(S400)は、カラオケ装置1ではよく知られる処理であるため、ここでの説明は省略する。演奏処理(S400)では、演奏情報の進行を示すステップ値が順次出力されており(S103)、歌詞再生処理(S300)では、このステップ値に基づいて歌詞の描画、消去、色変えが実行される。楽曲情報の再生は、これら演奏処理(S400)、歌詞再生処理(S300)が終了する(S104)まで実行されることとなる。なお、ローマ字ルビ準備処理(S200)は、本実施形態では、常時実行されることとしているが、ユーザーにより歌唱補助機能が選択された場合に実行されることとしてもよい。
図5は、ローマ字ルビ準備処理(S200)を示すフロー図である。ローマ字ルビ準備処理では、再生対象となっている楽曲情報の歌詞情報を参照し、全歌詞ブロック情報の数TBNを取得する(S201)。そして、処理対象の歌詞ブロックIDを示すiを初期値(i=1)に設定(S202)し、歌詞ブロックIDの昇順に各歌詞ブロック情報に対してS203〜S206、S210およびS207の処理を実行していく。まず、処理対象に定められた歌詞ブロックIDを示すiが、全歌詞ブロック情報の数TBN以下であるか否かが判断される(S203)。iが全歌詞ブロック情報の数TBN以下であると判断されたとき、処理対象となるi番目が歌詞ブロックIDに定められた歌詞ブロック情報が取得される(S204)。続くS205では、歌詞ブロック情報中、歌詞文字の段数をチェックし、処理対象であるiに定められた歌詞ブロックより1つ前に処理した歌詞ブロックの歌詞ブロック情報に定められていた表示段の段数から変化したか否かを確認する(S205)。変化した場合には、ローマ字ルビブロックの終端位置FRXを初期値0にリセットする(S206)。そして、処理対象となっているi番目の歌詞ブロック情報について、歌詞ブロック処理(S210)を実行する。i=1の歌詞ブロック情報について歌詞ブロック処理(S210)が完了すると、処理対象を、次の歌詞ブロック情報(i=2)に変更し(S207)、S204〜S210の処理が実行される。以上の処理を、全歌詞ブロック情報の数TBNを超える(S203:No)まで実行することで、ローマ字ルビの描画に必要な情報が生成される。
図6は、歌詞ブロック処理(S210)を示すフロー図である。歌詞ブロック処理(S210)では、まず、S204において取得されたi番目の歌詞ブロック情報の歌詞文字の全ての文字が英字であるか否かが判定される(S201)。歌唱補助機能は、日本語の判読が困難であって、英字を判読できる外国人ユーザーを対象としているため、英字の歌詞文字に対しては、ローマ字ルビを描画しないこととしている。外国人ユーザーは、英字で表記された歌詞文字を見て歌唱を行う。なお、歌詞表示を行う場合、日本人等、英字の判読が困難なユーザーを対象として、英字の歌詞文字に対して、片仮名等で表記されたルビを描画するように歌詞テロップが規定されている場合がある。ローマ字ルビの描画を行うときは、この英字の歌詞文字に対するルビは描画しないことが好ましい。
S204において取得されたi番目の歌詞ブロック情報の歌詞文字の全てが英字で無い場合(S211:Yes)には、対象となるi番目の歌詞ブロック情報に含まれる歌詞文字から求められる歌詞文字の全文字数TCNを取得する(S212)。そして、処理対象の歌詞ブロック情報の歌詞文字のうち何番目の文字であるかを示すjを初期値(j=1)に設定(S213)し、歌詞文字を示すjが、i番目の歌詞ブロック情報の歌詞文字の全数TCNを超えたか否かが判断される(S214)。jがi番目の歌詞ブロック情報の歌詞文字の全数TCNを超えないと判断されたとき、歌詞ブロック情報中の各文字に対してS215、S220の処理を実行する。S215では、処理対象となるj番目の歌詞文字を取得し、当該歌詞文字に対して歌詞文字処理(S220)を実行する。j=1の歌詞文字について歌詞文字処理(S210)が完了すると、処理対象jを、次の歌詞文字を示すj=2に変更し(S216)、S215、S220の処理が実行される。以上の処理を、全歌詞文字数TCNを超える(S214:No)まで実行することで、1の歌詞ブロック情報の歌詞文字について、後述する歌詞文字処理が行われ、ローマ字ルビの描画に必要な情報が生成される。
図7は、歌詞文字処理(S220)のフロー図を示す図である。歌詞文字処理(S220)は、ローマ字ルビ生成・仮決処理(S230)と、重複判断・確定処理(S240)を有して実行される。ローマ字ルビ生成・仮決定処理(S230)は、処理対象となっている歌詞ブロック情報の歌詞文字について、ローマ字ルビを生成し、その描画位置を仮決定する処理である。重複判断・確定処理(S240)は、仮決定したローマ字ルビの描画位置を読み進める方向(読み方向)における重複状況を判断し、重複する場合には描画位置を調整して確定する処理である。図10は、図3で説明した歌詞文字「志を抱いて」を有する歌詞ブロック情報について、図10(a)通常の描画形態、図10(b)、(c)ローマ字ルビによる描画形態を示した図である。本実施形態では、図10(b)、(c)に示されるように、読み進める方向に歌詞文字すべてに対応するローマ字ルビを並べた読みやすい形態で表記することが可能となる。
では、ローマ字ルビブロック情報の生成手順について、図3で説明した「志を抱いて」という歌詞文字を有する歌詞文字ブロックを使用して説明する。図11は、歌詞ブロック情報とルビブロック情報に基づく歌詞表示の生成を説明するための図である。図12、図13は、ローマ字ルビの生成手順を説明するための図である。図14、図15は、ローマ字ルビが表示される場合の表示位置の補正を説明する図である。
図11に示されるように歌詞ブロック情報とルビブロック情報とに基づいて、5文字の歌詞文字21a〜21eで構成された歌詞文字ブロック20a「志を抱いて」と、歌詞文字21a「志」に対応するかな文字ルビブロック22a「こころざし」と、歌詞文字21c「抱」に対応するかな文字ルビブロック22c「いだ」が描画されることになる。歌詞文字ブロック20aは、歌詞ブロック情報中に規定されている表示基準位置をX座標、表示段をY座標として規定されている基準座標Saを左上の基準位置として描画される。一方、かな文字ルビブロック22a、22bは、各ルビブロック情報中に規定されている表示基準位置にX座標が規定され、表示段にY座標が規定されている基準座標Ta、Tcを左上の表示基準位置として描画される。
このように本実施形態では、歌詞文字、かな文字ルビは、それぞれ独立して表示基準位置が定められており、それぞれの表示基準位置に描画されることとしている。各歌詞文字21a〜21eには、文字幅Wa〜Weが定められる。この文字幅Wa〜Weは、等幅フォントを使用して文字を描画する場合は一律の所定幅に定められた文字幅を取得し、文字によって文字幅が異なるプロポーショナルフォントの場合には、描画するフォントの種類および文字を参照して文字幅を取得することが可能である。したがって、各歌詞文字21a〜21eは、歌詞文字ブロックの基準座標Saと歌詞文字ブロック内の各歌詞文字の文字幅に基づいて、それぞれ基準位置(この場合、各歌詞文字の左上の座標)を算出することが可能である。また、この文字幅Wa〜Weは、ハードディスク13等にあらかじめ記憶された文字幅を読み出すことにより取得して定める方法のほか、各歌詞文字21a〜21eについて、それぞれ各歌詞文字の基準先頭位置と基準終端位置とを歌詞ブロック情報に付加し、その基準終端位置と基準先頭位置との差を算出することにより、各文字幅を取得して定める方法であってもよい。なお、かな文字ルビについても、歌詞文字と同様の方法で文字幅を定めることが可能である。
そして、本実施形態では、各歌詞文字について、その歌詞文字が含まれる範囲内であって、ディスプレイ12の左端座標X0またはその歌詞文字の基準位置の座標から、右側に隣り合う歌詞文字の基準位置の座標またはディスプレイ12の右端座標Xeまでの範囲内に、基準位置が含まれるかな文字ルビブロックが存在するとき、歌詞文字ブロック中のその歌詞文字に対応するかな文字ルビブロックがあることが判断される。例えば、ディスプレイ12の左端座標X0および右端座標Xeと、算出された各歌詞文字の基準位置のX座標とに基づいて求めることができる各歌詞文字のX座標の描画範囲内に、例えば、図11に示すように、歌詞文字ブロック20a「志を抱いて」の各歌詞文字21a〜21eの描画範囲内のいずれかに、かな文字ルビブロック22a、22cの各表示基準位置である基準座標TaのX座標、基準座標TcのX座標が含まれるとき、歌詞文字ブロック20aの歌詞文字に対応するかな文字ルビブロック22a、22cがあることが判断される。
具体的には、図11に示すように、歌詞文字21a「志」の場合、ディスプレイ12の左端座標X0から、X軸方向における歌詞文字21aの描画範囲である表示基準座標Sa+文字幅Waまでの判断対象範囲内に、かな文字ルビの基準座標Taが位置している。このため、歌詞文字21a「志」に対応するかな文字ルビブロック22a「こころざし」があると判定される。また、歌詞文字21b「を」については、歌詞文字21a「志」の終端位置である歌詞文字21bの描画範囲の基準座標Sa+文字幅Waから、基準座標Sa+文字幅Wa+文字幅Wbまでの判断対象範囲内に、かな文字ルビの基準座標は存在していない。したがって、歌詞文字21b「を」に対応するかな文字ルビは無いと判定される。そして、歌詞文字21c「抱」の場合、歌詞文字21cの基準座標は、基準座標Sa+文字幅Wa+文字幅Wbの座標となる。X軸方向における歌詞文字21cの描画範囲である歌詞文字21b「を」の終端位置である基準座標Sa+文字幅Wa+文字幅Wbから、基準座標Sa+文字幅Wa+文字幅Wb+文字幅Wcの判断対象範囲内に、かな文字ルビの基準座標Tbが位置しているため、歌詞文字21c「抱」に対応するかな文字ルビブロック22c「いだ」があると判定される。歌詞文字21d「い」、歌詞文字21e「て」についても同様の方法で判定が行われ、歌詞文字21b「を」と同様に、対応するかな文字ルビは無いと判定される。
図8は、ローマ字ルビ生成・仮決定処理(S230)を示すフロー図である。まず、図5のローマ字ルビ準備処理のS204において取得されたi番目の歌詞ブロック情報の歌詞文字ブロック中の歌詞文字であって、図6の歌詞ブロック処理(S210)のS215において判断の対象とされたj番目の歌詞文字の判断対象範囲内に、対応するルビブロック情報があるか否かが判定される(S231)。ルビブロック情報がある場合(S232:Yes)には、判断の対象とされた歌詞文字に対応するルビブロック情報に基づいて、ローマ字ルビブロック情報が作成される(S233)。次に、j番目の歌詞文字が平仮名もしくは片仮名であるかが判定される(S234)。j番目の歌詞文字が平仮名もしくは片仮名の場合(S234:Yes)、平仮名もしくは片仮名からローマ字ルビブロックが作成される(S235)。
このローマ字ルビ生成・仮決定処理では、1つの歌詞文字に対して、S233の処理とS235の処理の両方を実行する場合がある。S233の処理は、主に漢字に対して実行される処理である。一方、S235の処理は、平仮名もしくは片仮名に対して実行される処理である。通常、両処理は重複されることはないが、歌詞情報では、描画レイアウトの都合上、平仮名もしくは片仮名に対してもルビブロック情報を対応付けることがある。例えば、歌詞文字ブロック「志を抱いて」について、1つの歌詞文字「志」のかな文字ルビ「こころざし」が読み方向に長いことを理由として、漢字の歌詞文字「志」に「こころざ」を割り当て、歌詞文字「志」に続く平仮名の歌詞文字「を」にかな文字ルビ「し」を割り当てることで、描画レイアウト上、歌詞文字「志」のかな文字ルビである「こころざし」をバランスよく配置されることがある。このようなレイアウトがされる場合、歌詞文字「志」について、ローマ字ルビ生成・仮決定処理が行われるとき、S233において、かな文字ルビ「こころざ」のローマ字ルビブロック情報が作成される、そして、歌詞文字「を」について、ローマ字ルビ生成・仮決定処理が行われるとき、S233において、かな文字ルビ「し」のローマ字ルビブロック情報が作成され、S235において、かな文字ルビ「を」のローマ字ルビブロック情報が作成される。このように、S233の処理とS235の処理の両方は、このような状況を鑑みたものであって、たとえ、平仮名あるいは片仮名であっても、本来は対応していないかな文字ルビが対応付けられている場合は、かな文字ルビと歌詞文字(平仮名または片仮名)の両方からローマ字ルビブロック情報を生成することで、ローマ字ルビを不足なく適切な位置に描画することが可能となっている。
ローマ字ルビ生成・仮決定処理の手順を、図8および図12(a)〜図12(c)、図13(d)、(e)を用いて詳細に説明する。図12(a)は、図11で説明した歌詞文字ブロック20a「志を抱いて」について、歌詞文字21a「志」を処理の対象文字としている場合である。この場合、まず、歌詞文字21aに対応するルビブロック情報の有無が探索される(S231)。図11で説明したように、歌詞文字21a「志」については、歌詞文字21aの判断対象範囲内にかな文字ルビブロック22a「こころざし」があり、歌詞文字21a「志」に対応するかな文字ルビブロック22a「こころざし」の表示基準位置Uaがあるため、かな文字ルビブロック22aのルビブロック情報があると判断される(S232:Yes)。そして、かな文字ルビブロック22a「こころざし」のルビブロック情報から、ローマ字ルビブロック情報が作成される(S233)。
この場合、ローマ字ルビブロック情報は、図2で説明したルビブロック情報から生成される。まず、かな文字ルビ「こころざし」から、ローマ字ルビ「KoKoRoZaShi」が生成される。平仮名からローマ字のへの変換は、漢字から変換する場合と異なって、変換後のローマ字は変換元の平仮名から一意に定められ、歌詞の読みを正確に反映したものとすることが可能である。本実施形態では、かな文字ルビからローマ字ルビが生成される場合、新たに作成するローマ字ルビブロック情報の表示段、表示基準位置、表示開始時間、表示終了時間、変化開始時間、変化速度には、かな文字ルビのルビブロック情報の値が適用される。新たに作成されるローマ字ルビブロック情報は、かな文字ルビのルビブロック情報が利用されることにより、ローマ字ルビブロックの作成に必要な処理工数の削減を図ることができるうえ、ローマ字ルビを表示する場合であっても適切な位置を定めることができる。なお、S233において定められるローマ字ルビブロック情報の表示基準位置は、仮決定された値である。
ローマ字ルビ生成・仮決定処理(S230)では、次に、歌詞文字21a「志」が平仮名もしくは片仮名であるかが判定される(S234)。歌詞文字21a「志」は漢字である(S234:No)ため、S235の処理はスキップされる。S236では、処理対象のj番目の歌詞文字について作成されたローマ字ルビブロックが2つ以上である場合に、並び替えが行われる。歌詞文字21a「志」のローマ字ルビブロックが作成された時点では、作成されたローマ字ルビブロックは1つであるため、S236の並べ替えは実行されない。なお、S236で実行される並べ替えは、S233、S235の両方においてルビブロック情報が作成された場合に実行される処理である。S316における並び替えは、例えば、漢字の歌詞文字「志」にかな文字ルビ「こころざ」が割り当てられ、歌詞文字「志」に続く平仮名の歌詞文字「を」にかな文字ルビ「し」が割り当てられている場合において、平仮名「を」について、「し」と「を」に対応するルビブロック情報が作成される場合に行われる。この場合、「し」のルビブロック情報の後に「を」のルビブロック情報が配置される並べ替えが行われる。
次に、歌詞文字21a「志」に対応して新たに生成されたローマ字ルビブロック情報については、S313において仮決定された描画位置を確定するための重複判断・確定処理(S240)が実行される。まず、ローマ字ルビブロック情報は、先頭か否か、すなわち、歌詞ブロック情報中で初回に生成されたローマ字ルビブロック情報であるか否かが判定される(S241)。この場合、例えば、処理の対象となる歌詞文字21a「志」では、対応して生成されたローマ字ルビブロック24aは、歌詞文字ブロック「志を抱いて」の先頭であると判断されるため、ローマ字ルビブロック24aの終端位置がFRXに設定され(S326)、重複判断・確定処理(S240)は終了する。S246において、ローマ字ルビブロック24aの終端位置は、例えば、アルファベットごとに定められた文字幅をハードディスク等により記憶しておき、記憶された各字の文字幅を用いて算出される。本実施形態の終端位置が、本発明の他端の一例である。図12(a)は、歌詞文字21a「志」に対する歌詞文字処理(S220)が完了した際の、ローマ字ルビブロック24aの位置を示す図となっている。
次に、歌詞文字ブロック20a中の歌詞文字21b「を」に対して歌詞文字処理(S220)が実行される。歌詞文字21b「を」に対して実行されるローマ字ルビ生成・仮決定処理(S230)では、まず、処理の対象となる歌詞文字に対応するかな文字ルビのルビブロック情報の探索(S231)が実行されるが、歌詞文字21b「を」に対応するかな文字ルビのルビブロック情報は無い(S232:No)ため、S233の処理はスキップされる。次に、歌詞文字21b「を」は平仮名であると判断され(S234:Yes)、歌詞文字21b「を」から、歌詞ブロック情報を用いてローマ字ルビブロック情報が作成される(S235)。
歌詞文字から作成されるローマ字ルビブロック情報は、図2で説明した歌詞ブロック情報から生成される。まず、歌詞文字21a「を」から、ローマ字ルビブロック24b「Wo」が生成される。平仮名(あるいは片仮名)からローマ字のへの変換は、変換後のローマ字が変換元の平仮名から一意に定めることが可能であるため、歌詞の読みを正確に反映したものとすることが可能である。本実施形態では、新たに作成するローマ字ルビブロック情報の表示段、表示開始時間、表示終了時間、変化速度には、歌詞文字の歌詞ブロック情報中のものが適用される。また、ローマ字ルビブロック情報中、ローマ字ルビブロック24bの表示基準位置、変化開始時間は、歌詞文字21aの左上の座標を使用して算出される。あるいは、ローマ字ルビブロックの表示基準位置は、変換元の歌詞文字の基準位置と文字幅とから、変換元の歌詞文字ブロックの左右方向の中心位置を導出し、且つ、ローマ字ルビブロックの文字幅からローマ字ルビブロックの左右方向の中心位置を導出し、ローマ字ルビブロックの左右方向の中心位置が、変換元の歌詞文字の基準位置から文字幅である終端位置までの左右方向の中心位置と同じX座標となるように、ローマ字ルビブロックの表示基準位置を定めるものであってもよい。なお、ローマ字ルビブロックの文字幅は、ハードディスク等により記憶されたアルファベットごとに定められた文字幅をから算出が可能である。
歌詞文字21a「を」を変換したローマ字ルビブロック24b「Wo」のX軸方向の位置を示す表示基準位置は、歌詞文字21a「を」の基準座標を用いて、歌詞文字Sa+文字幅Waの座標となる。Y軸方向の位置は、歌詞文字ブロック20aと同じ表示段が使用される。そして、ローマ字ルビブロック24bの変化開始時間は、ローマ字ルビブロック24bの表示基準位置と、歌詞ブロック情報の変化速度を使用して算出される。図14は、ローマ字ルビ変化における変化開始時間の算出を説明する図である。ローマ字ルビブロック24b「Wo」の色変化は、歌詞文字21b「を」の色変化に同期して行うことが好ましい。なお、歌詞ブロック情報中には、歌詞文字ブロック20aに対する変化開始時間しか規定されていない。このため、ローマ字ルビブロック24bの変化開始時間は、歌詞ブロックの文字幅と歌詞ブロック情報に定められる変化速度とを使用して歌詞文字21b「を」の変化開始時間を算出し、ローマ字ルビブロック24bの変化開始時間に適用する。具体的には、ローマ字ルビブロック24bの変化開始時間は、歌詞文字ブロック20a「志を抱いて」の変化開始時間Haと、歌詞文字21a「志」の文字幅Waを歌詞文字ブロック20a「志を抱いて」の変化速度で割った値Wa/Vの和で算出される。
図12(b)は、歌詞文字21b「を」に対する歌詞文字処理(S220)が完了した際の、ローマ字ルビブロック24aの位置を示す図となっている。歌詞文字21b「を」から生成されたローマ字ルビブロック24bは、ローマ字ルビブロック24aと同じY座標に位置するが、説明上、重なって見づらくなることを理由として便宜的に、ローマ字ルビブロック24aの上方に位置させている。ローマ字ルビブロック24b「Wo」に対して仮決定された位置について、図9に示す重複判断・確定処理(S240)が実行される。まず、ローマ字ルビブロック24bは歌詞文字ブロックの先頭ではない(S241:No)ため、ローマ字ルビブロック24bの開始位置RXが設定される(S242)。S242では、ローマ字ルビブロック24bの開始位置RXは、歌詞文字21b「を」の基準位置と同じX座標が設定される。あるいは、ローマ字ルビブロック24b「Wo」の左右方向の中心位置が、変換元の歌詞文字21b「を」の左右方向の中心位置と同じX座標となるように、ローマ字ルビブロックの開始位置を定めるものであってもよい。なお、S242において設定される開始位置RXは、仮決めの位置である。本実施形態の開始位置が、本発明の一端の一例である。そして、S242において定められたローマ字ルビブロック24bの開始位置RXは、先に設定されているローマ字ルビブロック24aの終端位置FRXよりも小さいか否か、すなわち、ローマ字ルビブロック24aとローマ字ルビブロック24bのX軸の方向における重複状態が判定される(S243)。図12(b)から分かるように、X軸方向においてローマ字ルビブロック24aとローマ字ルビブロック24bは、重複している(S243:Yes)ため、重複状態を解消するようにローマ字ルビブロック24aの開始位置RXは、ローマ字ルビブロック24aの終端位置FRXに変更される(S244)。
図12(c)は、ローマ字ルビブロック24bの開始位置が変更された状態を示した図である。このように、S242において仮決めしたローマ字ルビブロック24bの開始位置を、S244において変更することで、ローマ字ルビブロック24aとローマ字ルビブロック24bの重複状態を解消し、読みやすいローマ字ルビの描画を実現している。そして、終端位置FRXをローマ字ルビブロック24aの終端位置からローマ字ルビブロック24bの終端位置に更新し(S245)、一連の重複判断・確定処理(S240)が終了する。
歌詞文字21c「抱」に対しては、歌詞文字21a「志」と同様に、歌詞文字21c「抱」に対応するルビブロック情報を使用して、ローマ字ルビブロック情報が生成される。図12(c)には、歌詞文字21c「抱」について生成されたローマ字ルビブロック24c「IDa」が示されている。ローマ字ルビブロック24cは、ローマ字ルビブロック24a、24bと同じY座標に位置するが、説明上、ローマ字ルビブロック24bと重なって見づらくなることを理由として便宜的に、ローマ字ルビブロック24bの上方に位置させている。ローマ字ルビブロック24c「IDa」に対して仮決定された開始位置について、図9に示す重複判断・確定処理(S240)が実行される。
図12(c)から分かるように、X軸方向においてローマ字ルビブロック24bとローマ字ルビブロック24cは、重複している(S243:Yes)ため、重複状態を解消するようにローマ字ルビブロック24cの開始位置RXは、ローマ字ルビブロック24bの終端位置FRXに変更される(S244)。図13(d)は、ローマ字ルビブロック24cの開始位置が変更された状態を示した図である。
歌詞文字21d「い」に対しては、歌詞文字21b「を」と同様に、歌詞文字21d「い」に対応する歌詞ブロック情報を使用して、ローマ字ルビブロック情報が生成される。図13(d)には、歌詞文字21d「い」について生成されたローマ字ルビブロック24d「I」が示されている。重複判断・確定処理(S240)では、X軸方向においてローマ字ルビブロック24cとローマ字ルビブロック24dは、重複していない(S243:No)ため、ローマ字ルビブロック24d「I」に対して仮決めした開始位置は、変更することなくそのまま確定される。
歌詞文字21e「て」に対しては、歌詞文字21b「を」、歌詞文字21d「い」と同様に、歌詞文字21e「て」に対応する歌詞ブロック情報を使用して、ローマ字ルビブロック情報が生成される。図13(e)には、歌詞文字21e「て」について形成生成されたローマ字ルビブロック24e「Te」が示されている。重複判断・確定処理(S240)では、X軸方向においてローマ字ルビブロック24dとローマ字ルビブロック24eは、重複していない(S243:No)ため、ローマ字ルビブロック24e「Te」に対して仮決めした開始位置は、変更することなくそのまま確定される。
なお、平仮名または片仮名など、かな文字ルビブロックからではなく、歌詞文字から生成されたローマ字ルビブロックに対して仮決めする開始位置は、図13(d)に示すように、変換元の歌詞文字の左端ではなく、変換元の歌詞文字の中央にする等、適宜形態を採用することができる。図13(f)には、歌詞文字21d「い」および歌詞文字21e「て」について生成されたローマ字ルビブロック24d「I」およびローマ字ルビブロック24e「Te」が、左右方向の中心位置が、変換元の歌詞文字の左右方向の中心位置と同じX座標となるように、それぞれの開始位置が定められた例が示されている。なお、図示はしないが、生成されたローマ字ルビブロックは、その先頭位置が、変換元の歌詞文字の左右方向の中心位置と同じX座標となるように、それぞれの開始位置が定められてもよい。
以上、説明したように、歌詞文字ブロック20aの各歌詞文字21a〜21eに対して、ローマ字ルビ生成・仮決処理(S230)と、重複判断・確定処理(S240)を実行することで、図10(b)に示されるローマ字ルビによる描画形態に必要なローマ字ルビブロック情報が生成される。なお、図10(c)は、図13(f)によるローマ字ルビブロックの左右方向の中心位置が、変換元の歌詞文字の左右方向の中心位置と同じX座標となるように、それぞれの開始位置が定められた例における描画形態を示している。
なお、本実施形態では、ローマ字ルビブロック24a〜24eの変化速度は、歌詞文字ブロック20aの変化速度を利用しているが、色の変化開始から終了までのタイミングが合うように、ローマ字ルビブロック24a〜24eについて、歌詞ブロック情報内に規定されている変化速度、あるいは、ルビブロック情報内に規定されている変化速度を補正して算出することとしてもよい。
例えば、図15は、ルビブロック情報によって規定されるかな文字ルビブロック22aが存在するときの例である。この場合、前述の実施形態では、ルビブロック情報内の変化速度を利用することとしていたが、図15(a)のかな文字ルビブロック22a「こころざし」のブロック幅Xaと、新たに生成されたローマ字ルビブロック24a「KoKoRoZaShi」のブロック幅Xa’は異なることが考えられる。同じ変化速度で色変えを行った場合には、ローマ字ルビブロック24aの色変化が、再生される楽曲の進行とうまく同期しないことになる。そのため、本実施形態では、かな文字ルビブロック22aの変化速度Vaを、ブロック幅Xa、ブロック幅Xa’で補正して、ローマ字ルビブロック24aの変化速度Va’を算出している。補正後の変化速度Va’は、Xa’/Xaにかな文字ルビブロック22aの変化速度Vaを乗算することで算出することが可能である。このように、ローマ字ルビブロック24aの変化速度を補正して算出することで、再生される楽曲の進行に同期してローマ字ルビブロック24aを色変化させることが可能となる。
あるいは、図16は、歌詞ブロック情報中の歌詞文字21bによってローマ字ルビブロック情報が生成されるときの例である。この場合、前述の実施形態では、歌詞ブロック情報内の変化速度を利用することとしていたが、図16(a)の歌詞文字21b「を」の文字幅Xbと、新たに生成されたローマ字ルビブロック24b「Wo」のブロック幅Xb’は異なることが考えられる。そのため、本実施形態では、歌詞文字21bの変化速度Vbを、文字幅Xb、ブロック幅Xb’で補正して、ローマ字ルビブロック24bの変化速度Vb’を算出している。補正後の変化速度Vb’は、Xb’/Xbに歌詞文字21bの変化速度Vb(歌詞ブロック情報中の変化速度)を乗算することで算出することが可能である。
図17は、本実施形態に係る歌詞再生処理(S300)を示すフロー図である。歌詞再生処理(S300)は、楽曲情報内の歌詞情報、歌詞文字を描画するためのフォント情報、演奏処理に伴って出力されるステップ値に基づいて実行される処理であり、描画を行う描画処理、色変えを行う色変え処理を含んでいる。なお、フォント情報には、フォント種別、フォントサイズ等が含まれる。
歌詞情報に含まれる各ブロック情報に対して、S301〜S312のブロック情報処理ループが順次実行される。S302では、演奏処理で出力されるMIDIのステップ値と、読み出されている歌詞ブロック情報中の各歌詞ブロックIDに対応づけられている表示開始時間、変化開始時間、表示終了時間とが比較される。S303、S306、S309ではこの比較に基づいて後続の各処理に進むこととなる。
S302におけるステップ値との比較の結果、表示開始時間であることを示す表示ステップであることが判定された場合(S303:Yes)には、ローマ字機能操作チェック、すなわち、現在、ローマ字による描画を行う設定となっているか否かのチェックが実行される(S304)。ローマ字による描画を行う設定は、操作パネル10などの各種入力手段からユーザーの操作によって行われる。この設定は、楽曲再生中においてもローマ字による描画の要否を切り替えることが可能である。判定の結果、ローマ字描画機能を使用している場合(S305:Yes)には、ルビブロック情報を使用することに代えて、ローマ字ルビ準備処理(S200)で新たに生成したローマ字ルビブロック情報を使用して歌詞の描画が実行される。一方、機能を使用していない場合(S305:No)には、ハードディスク13に記憶される楽曲情報の歌詞情報に規定される歌詞ブロック情報とルビブロック情報とを使用した通常ブロック描画処理が実行される。
S302におけるステップ値との比較の結果、変化ステップのタイミングであると判定された場合(S306:Yes)には、当該ブロックの文字列(歌詞文字、かな文字ルビ、ローマ字ルビ)に対して色変えが実行される。この色変えは、ローマ字変換ブロック処理S500あるいは通常ブロック描画処理S600にて、画面に表示された文字列について、指定されている変化速度にて、左端から順に色変えを行い、歌唱者に対して歌唱位置を通知する処理である。この処理は、歌詞ブロック情報中の変化開始時間、変化速度と、ルビブロック情報中の変化開始時間、変化速度(あるいは、ローマ字ルビブロック情報中の変化開始時間、変化速度)に基づいて行われ、演奏の進行に同期して色変化による歌唱指示が行われる。
S302におけるステップ値との比較の結果、消去ステップであることが判定された場合(S309:Yes)には、当該ブロックの文字列(歌詞文字、ルビ)の消去が実行される(S310)。以上の処理を演奏情報の演奏が終了するまで(S311:Yes)実行することで、演奏処理に同期した歌詞表示が実行される。
以上、本実施形態のカラオケ装置1において、ローマ字ルビを表示させる機能について説明したが、この実施形態に限られるものではなく、例えば、他の機能を付加することも可能である。カラオケ装置1では、歌唱を練習する際などに使用する巻き戻し機能が設けられている場合がある。巻き戻し機能を使用する際においても、ローマ字ルビを適切に表示する機能を設けることが考えられる。
図12および図13では、通常の楽曲再生においてローマ字ルビブロック24a〜24cを配置していくことを説明した。この場合、ローマ字ルビブロック24a〜24cの順に配置している。楽曲の巻き戻しを行う場合には、ローマ字ルビブロック24a〜24cを逆に取り扱うこととしてもよい。すなわち、まず歌詞文字21e「て」について、ローマ字ルビブロック24e「Te」を生成して、その位置を確定させる。次に、歌詞文字21d「い」について、ローマ字ルビブロック24d「I」を生成して、その位置を仮決めする。そして、先に生成したローマ字ルビブロック24e「Te」と今回生成したローマ字ルビブロック「I」のX軸方向での重複関係を判断する。重複している場合には、今回生成したローマ字ルビブロック24d「I」の描画範囲の後端が、ローマ字ルビブロック24eの前端に位置するように、ローマ字ルビブロック24d「I」の位置を変更し、確定させる。一方、重複していない場合には、ローマ字ルビブロック24d「I」の位置を変更せずにそのまま確定させる。
歌詞文字21c「抱」、歌詞文字21b「を」、歌詞文字21a「志」の順にローマ字ルビブロック24c、24b、24aを生成し、位置を仮決めした後、重複関係に基づいて位置を変更、あるいはそのまま確定することで、読み方向(X軸方向)において重複していないローマ字ルビブロック24a〜24eを生成することが可能となる。
なお、本実施形態において、演奏情報に基づいて再生される楽曲の進行に応じて、予め記憶されている歌詞文字の漢字およびかな文字と、生成されたローマ字ルビとが表示されていたがこれに限らない。例えば、予め記憶されている歌詞文字の漢字およびかな文字は表示させず、生成されたローマ字ルビのみが表示される構成であってもよい。
また、本実施形態において、歌詞ブロック情報に定められる表示基準位置には、その表示基準位置が対応付けられる歌詞ブロックのうち、ディスプレイ12の左端座標X0から最も近いX座標が定められていたがこれに限らない。例えば、表示基準位置には、歌詞ブロックのX座標方向の描画幅の真ん中のX座標、歌詞ブロックのディスプレイ12の左端座標X0から最も近いX座標から所定幅の座標分が異なる位置の座標、あるいは歌詞ブロックのX座標方向におけるディスプレイ12の左端座標X0から最も遠いX座標などが定められていてもよい。
また、本実施形態においては、生成されたローマ字ルビは、ローマ字ルビの読み方向において、仮決定された表示基準位置が、前に位置するローマ字ルビの後端位置と重複した場合に、表示基準位置を後ろ方向へ移動させる処理が行われていたがこれに限らない。例えば、生成されたローマ字ルビは、ローマ字ルビの読み方向において、仮決定された表示基準位置が、後ろに位置するローマ字ルビの前端位置と重複した場合に、表示基準位置を後ろ方向へ移動させる処理が行われてもよい。また、生成されるローマ字ルビの表示基準位置の仮決定または確定を行う順番および表示基準位置の仮決定または確定を行う順番は、ローマ字ルビの読み方向や楽曲の再生に従ってローマ字ルビが表示される方向に沿う順番に限らない。生成されるローマ字ルビの表示基準位置の仮決定を行う順番および表示基準位置の仮決定を行う順番は、ランダムやローマ字ルビの読み方向や楽曲の再生に従ってローマ字ルビが表示される方向に逆行する順番であってもよい。また、例えば、生成されたローマ字ルビのX軸方向の描画幅の長さに応じて、描画幅が短いローマ字ルビから順に、あるいは描画幅が長いローマ字ルビから順に定められるものであってもよい。
なお、現在、スマートフォン、パーソナルコンピュータ、ゲーム装置等の情報処理装置において、カラオケ用プログラムを実行することでカラオケを行うことが一般的である。このような各種情報処理装置において実行され、上述するようなローマ字ルビ表示機能を実現するカラオケ用プログラムについても本発明の範疇に属するものである。