以下、本発明の実施形態を図面に基づいて説明する。なお、以下に説明する実施の形態は、運動を支援するための運動コンテンツを生成する運動コンテンツ生成システムに本発明を適用した場合の実施形態である。運動コンテンツは、運動を支援するための映像及び音声を含む。
[1.第1実施形態]
[1−1.運動コンテンツ生成システム1の構成]
始めに、図1を参照して、本実施形態の運動コンテンツ生成システム1の構成について説明する。図1は、本実施形態の運動コンテンツ生成システム1の概要構成例を示す図である。図1に示すように、運動コンテンツ生成システム1は、配信サーバ2と1つ以上の出力端末5とを含んで構成されている。配信サーバ2と出力端末5とは、ネットワーク10を介して接続可能になっている。ネットワーク10は、例えば、インターネットを含む。配信サーバ2には、データベース3が接続されている。データベース3には、運動に関する情報や楽曲に関する情報が登録されている。配信サーバ2は、データベース3に登録されている情報等を、定期的に又は出力端末5からの要求に応じて出力端末5に配信する。
出力端末5は、例えば、施設4に設置される端末装置である。出力端末5は、本発明の情報処理装置の一例である。出力端末5は、施設4の利用者41により利用される。施設4は、例えば、スポーツ施設であってもよい。利用者41は、スポーツ施設において、運動レッスンを受ける。運動レッスンは、複数の運動動作と楽曲により構成されるレッスンである。この場合の出力端末5は、例えばパーソナルコンピュータであってもよい。
出力端末5は、モニタ57と接続可能である。モニタ57は、複数のスピーカ64とディスプレイ67とを備える表示装置であってもよい。この場合、出力端末5は、ディスプレイ67と接続可能である。また、出力端末5は、スピーカ64と接続可能である。出力端末5がモニタ57へ音声信号を出力することにより、スピーカ64により楽曲等が出力される。出力端末5がモニタ57へ映像信号を出力することにより、ディスプレイ67に運動映像等が表示される。運動映像は、動作を行うフィギュア83を映し出した動画である。フィギュア83は、例えば、人、動物、仮想上の生き物、ロボット等のかたちをした仮想物である。フィギュア83は、三次元仮想空間に配置される。出力端末5は、スピーカ64から出力される楽曲と、ディスプレイ67に表示されるフィギュア83の動きとが同期するように、信号を出力する。楽曲と運動映像とを出力することは、運動コンテンツを出力することの一例である。利用者41は、楽曲を聴きながら、ディスプレイ67に表示されるフィギュア83を見て、運動を行うことができる。操作者42は、リモコン66等を用いて出力端末5を操作することができる。利用者41と操作者42とは同一人物であってもよい。施設4がスポーツ施設である場合、操作者42は、例えば、インストラクターであってもよい。
[1−2.演奏パートに対する運動動作の割り当て]
運動レッスンが行われるときにモニタ57が出力する運動コンテンツは、楽曲と運動映像とを含む。楽曲は、複数の演奏パートで構成される。スピーカ64から、楽曲の構成に従った演奏パートの順で楽曲が出力される。演奏パートが出力される順序を演奏順という。各演奏パートは、例えば、前奏、Aメロ、Bメロ、サビ、間奏又は後奏等であってもよい。なお、1つの運動レッスンで複数の楽曲が順次スピーカ64から出力されてもよい。楽曲を構成する各演奏パートに、それぞれ運動動作が割り当てられる。運動動作は、例えば、身体を鍛えるための動作である。運動動作として、例えば、体操の動作と踊りの動作とがある。体操は、例えば、健康の増進、体力の増強、筋力の強化等のために行われる運動である。体操の種類として、例えば、有酸素運動、無酸素運動、ストレッチ等がある。踊りの動作は、楽曲に合わせて踊るために楽曲に対して振り付けられた動作である。出力端末5は、運動コンテンツを出力するとき、楽曲のオリジナルのテンポに従って、楽曲をスピーカ64により出力させる。そして、出力端末5は、スピーカ64により出力されている演奏パートに割り当てられた運動動作をフィギュア83が行う運動映像をディスプレイ67に表示させる。
図1に示すように、データベース3には、モーションデータが登録されている。モーションデータは、三次元仮想空間におけるフィギュア83の運動動作を定義するデータである。また、モーションデータは、ディスプレイ67に表示されるフィギュア83に運動動作をさせるためのデータである。モーションデータは、運動動作の進行に応じたフィギュア83の身体の各部の座標を含む。具体的には、モーションデータには、時系列に沿って、運動動作の進行に応じたフィギュア83の身体部位の座標が含まれる。時系列に沿って、フィギュア83の身体部位が、モーションデータに従って表示されることで、所定の運動動作を実行するフィギュア83の映像が、ディスプレイ67に表示される。本実施形態において、出力端末5は、運動映像としてフィギュア83の三次元画像をディスプレイ67に表示させる。しかしながら、出力端末5は、フィギュア83の二次元画像を表示させてもよい。各モーションデータは、例えば汎用性がある。例えば、各モーションデータは、様々な楽曲に利用可能なように予め作成されてもよい。出力端末5は、データベース3に登録されている複数のモーションデータを識別可能なモーションIDの中から、各演奏パートに割り当てるモーションIDを自動的に決定する。なお、モーションIDには、所定の属性を示す属性情報が対応付けられて、所定の記憶手段に記憶される。
モーションIDの属性と、演奏パートの属性とが合えば、基本的にはモーションIDをその演奏パートに割り当てることができる。モーションIDの属性として、例えば、運動動作の長さを示す拍数、割り当て可能な演奏パートの種別等がある。演奏パートの属性として、例えば拍数、演奏パートの種別等がある。しかしながら、上述したように、モーションデータは、様々な楽曲に利用可能なように作成される。そのため、連続する運動動作同士の繋がりが考慮されていないと、運動動作の繋がりに違和感のある運動コンテンツが生成される。例えば、前奏にマーチのモーションIDが割り当てられ、前奏の次に演奏されるAメロに、スクワットのモーションIDが割り当てられたとする。この場合、ディスプレイ67に表示されるフィギュア83は、前奏でマーチの動作を行う。その後、前奏からAメロに演奏が切り替わると、フィギュア83の動作がマーチから急にスクワットに切り替わる。表示されるフィギュア83を見ながら運動する利用者41は、マーチからスクワットへ運動動作を自然に移行させることが難しい場合がある。
そこで、本実施形態では、運動動作が自然に繋がるように、各モーションデータを示すモーションIDに対して繋ぎ属性が定義される。なお、本実施形態は、モーションIDと対応付けられた部品IDに対して繋ぎ属性が定義された例を用いて説明する。なお、部品IDではなく、モーションIDに対して繋ぎ属性が定義されていてもよい。例えば、前繋ぎ動作、メイン動作及び後繋ぎ動作を順次実行するフィギュア83の映像が表示されるように、各モーションデータが予め作成されてもよい。メイン動作は、モーションデータの中で主に行われる動作である。例えば、メイン動作の拍数は、前繋ぎ動作及び後繋ぎ動作の拍数よりも長い。前繋ぎ動作は、モーションデータを示す部品IDまたはモーションIDが割り当てられた演奏パートの前の演奏順の演奏パートが出力されているときの最後の部分で行われる運動動作である。後繋ぎ動作は、モーションデータを示す部品IDまたはモーションIDが割り当てられた演奏パートの最後の部分で行われる運動動作である。メイン動作の拍数と後繋ぎ動作の拍数の合計は、部品IDを割り当て可能な演奏パートの拍数に一致する。
繋ぎ属性は、部品IDの属性の一種である。また、繋ぎ属性はモーションIDの属性の一種であってもよい。繋ぎ属性として、前繋ぎ属性と後繋ぎ属性とがある。前繋ぎ属性は、前繋ぎ動作の内容を示す。後繋ぎ属性は、後繋ぎ動作の内容を示す。例えば、前繋ぎ動作がマーチであり、メイン動作がフロントランジであり、後繋ぎ動作がステップであるとする。この場合、前繋ぎ属性はマーチを示し、後繋ぎ属性はステップを示す。
前繋ぎ動作とメイン動作とが自然に繋がるように、且つ、メイン動作と後繋ぎ動作とが自然に繋がるように、モーションデータが作成される。例えば、インストラクター等の体に、三次元空間における身体部位の座標を取得するための加速度センサを装着させる。例えば、手首、肘、肩、足の付け根、膝、足首等に加速度センサが装着される。インストラクター等は、前繋ぎ動作、メイン動作及び後繋ぎ動作で構成される運動動作を行う。加速度センサが検出する加速度の情報に基づいて、例えば所定の装置が、運動動作が行われるときの各身体部位の座標を所定時間間隔で取得する。そして、取得された座標に基づいて、モーションデータが作成される。所定の装置は、例えば、出力端末5や配信サーバ2等であってもよい。
図2(A)は、フロントランジAという運動動作の構成例を示す図である。フロントランジAの前繋ぎ動作、メイン動作及び後繋ぎ動作は、それぞれマーチ、フロントランジ及びステップである。フロントランジAは、64拍の演奏パート用の運動動作である。図2(A)の例では、メイン動作のフロントランジの拍数は60であり、前繋ぎ動作のマーチ及び後繋ぎ動作のステップの拍数はそれぞれ4である。なお、前繋ぎ動作及び後繋ぎ動作の拍数は何拍であってもよい。また、前繋ぎ動作、メイン動作及び後繋ぎ動作は互いに異なる運動動作であってもよい。また、前繋ぎ動作、メイン動作及び後繋ぎ動作のうち少なくとも2つの運動動作が同一の運動動作であってもよい。楽曲を構成する複数の演奏パートのうち演奏順が1番目の演奏パートに割り当てられる部品IDが示すモーションデータは、メイン動作と後繋ぎ動作のみの映像が表示されるように作成されてもよい。また、最後に演奏される演奏パートに割り当てられる部品IDが示すモーションデータは、前繋ぎ動作とメイン動作のみの映像が表示されるように作成されてもよい。
出力端末5は、先ず演奏順が1番目の演奏パートに割り当て可能な部品IDを検索する。具体的に、出力端末5は、1番目の演奏パートの属性に一致する属性を有する部品IDを検索する。次いで、出力端末5は、2番目の演奏パートに割り当て可能な部品IDを検索する。このとき、出力端末5は、繋ぎ属性を考慮する。具体的に、出力端末5は、1番目の演奏パートに割り当て可能な部品IDの後繋ぎ属性と一致する前繋ぎ属性を有する部品IDであって、且つ、2番目の演奏パートの属性に一致する属性を有する部品IDを検索する。次いで、出力端末5は、3番目の演奏パートに割り当て可能な部品IDを検索する。具体的に、出力端末5は、2番目の演奏パートに割り当て可能な部品IDの後繋ぎ属性と一致する前繋ぎ属性を有する部品IDであって、且つ、3番目の演奏パートの属性に一致する属性を有する部品IDを検索する。出力端末5は、4番目以降の演奏パートについても、同様に部品IDを検索する。
出力端末5は、各演奏パートに対する部品IDの検索結果に基づいて、部品リストを生成する。部品リストは、運動レッスンの構成を定めた情報である。部品リストは、本発明のリスト情報の一例である。具体的に、部品リストは、楽曲を構成する複数の演奏パートに合う複数の部品IDを示す。部品リストには、演奏パートごとに、演奏パートID及び部品ID等が格納される。演奏パートIDは、演奏パートの識別情報である。例えば、演奏パートIDは、楽曲を構成する複数の演奏パートの中から識別する演奏パートの演奏順を示してもよい。部品IDは、モーションデータを識別する識別情報である。例えば、部品IDにより運動動作が識別される。部品IDと、部品IDが割り当てられた演奏パートの演奏パートIDとが対応付けられて部品リストに格納される。部品IDは、本発明における動作情報の一例である。例えば部品IDの代わりに、モーションIDまたはモーションデータが本発明の動作情報として用いられてもよい。
図2(B)は、部品IDの割り当て例を示す図である。図2(B)において、或る楽曲は、演奏パート1〜3を含む。演奏パート1は演奏順が1番目の演奏パートであり、演奏パート2は演奏順が2番目の演奏パートであり、演奏パート3は演奏順が3番目の演奏パートである。演奏パート1の拍数は32拍である。出力端末5は、演奏パート1に対して、例えばマーチBのモーションIDと対応付けられた部品IDを割り当てる。マーチBは32拍の運動動作である。マーチBのメイン動作及び後繋ぎ動作は何れもマーチである。従って、マーチBの後繋ぎ属性はマーチを示す。演奏パート2の拍数は64拍である。出力端末5は、64拍の運動動作を示すモーションIDと対応付けられた部品IDのうち前繋ぎ属性がマーチを示す部品IDを演奏パート2に割り当てる。例えば、図2(A)に示すフロントランジAの部品IDが割り当てられる。マーチBの後繋ぎ動作であるマーチと、フロントランジAの前繋ぎ動作であるマーチとは基本的に同一の動作である。演奏パート3の拍数は32拍である。フロントランジAの後繋ぎ属性はステップを示す。出力端末5は、32拍の運動動作を示すモーションIDと対応付けられた部品IDのうち前繋ぎ属性がステップを示す部品IDを演奏パート2に割り当てる。例えば、スクワットCのモーションIDと対応付けられた部品IDが割り当てられる。スクワットCの前繋ぎ動作及びメイン動作はそれぞれステップ及びスクワットである。フロントランジAの後繋ぎ動作であるステップと、スクワットCの前繋ぎ動作であるステップとは基本的に同一の動作である。
図2(B)が示す割り当て結果に基づいて運動コンテンツが生成されたとする。この場合、運動コンテンツの出力中、演奏パート1の32拍が出力されている間、出力端末5は、マーチBのモーションデータに基づいて、フィギュア83がマーチを行う映像をディスプレイ67に表示させる。なお、演奏パート1の最後の4拍の間、出力端末5は、フロントランジAのモーションデータに基づいて、マーチを行う映像をディスプレイ67に表示させてもよい。また、加速度センサを用いる等により人間の実際の動作からモーションデータを生成した場合、マーチBの後繋ぎ動作のマーチと、フロントランジAの前繋ぎ動作のマーチとにずれが生じる場合がある。そこで、出力端末5は、両方のモーションデータを用いて、マーチBの後繋ぎ動作のマーチとフロントランジAの前繋ぎ動作のマーチとの中間的な動作を行う映像をディスプレイ67に表示させてもよい。
次いで、演奏パート2の最初の60拍が出力されているとき、出力端末5は、フロントランジAのモーションデータに基づいて、フロントランジを行う映像を表示させる。演奏パート1から演奏パート2に切り替わるとき、マーチからフロントランジに自然に繋がるように、フィギュア83が表示される。その理由は、マーチBの部品IDの後繋ぎ属性とフロントランジAの部品IDの前繋ぎ属性とが同じマーチを示すからである。フロントランジAのメイン動作であるフロントランジをフィギュア83が開始するとき、前繋ぎ動作であるマーチからメイン動作であるフロントランジに自然に繋がるように、フロントランジAのモーションデータが予め作成されている。演奏パート2の最後の4拍が出力されているとき、出力端末5は、例えばフロントランジAのモーションデータに基づいて、ステップを行う映像を表示させる。次いで、演奏パート3が出力されているとき、出力端末5は、スクワットCのモーションデータに基づいて、スクワットを行う映像を表示させる。フロントランジからステップに切り替わるとき、及び、ステップからスクワットに切り替わるとき、自然に繋がるようにフィギュア83が表示される。こうして、フロントランジAからスクワットCへ運動動作が自然に繋がる。
[1−3.運動強度]
本実施形態においては、演奏パートの属性として、更に割り当て運動強度を設定することができる。割り当て運動強度とは、演奏パートに割り当て可能な運動動作の運動強度である。運動強度とは、例えば、運動動作を行う利用者41の身体にかかる負担の大きさ、運動動作の激しさ等を示す。運動強度が高いほど、身体にかかる負担が大きくなり、又は、運動動作の激しくなる。運動強度が高い運動動作であるほど、その運動動作を行う利用者41の心拍数が高くなる傾向がある。例えば、インストラクター等が、予め各演奏パートに対して割り当て運動強度を設定してもよい。このとき、インストラクターは、例えばサビ部分の割り当て運動強度を、サビ部分以外の演奏パートの運動強度よりも高くしてもよい。運動レッスンにおいて、楽曲のサビ部分が出力されているときに運動強度が高い運動動作を行うと、利用者41は、運動の充実感や爽快感を得られやすくなる。
出力端末5が、演奏パートの割り当て運動強度と一致する運動強度の運動動作の部品IDをその演奏パートに割り当てることができれば、設定された割り当て運動強度で利用者41は運動動作を行うことができる。しかしながら、出力端末5は、楽曲のオリジナルのテンポに従って楽曲をスピーカ64により出力させる。そのため、利用者41は、楽曲のオリジナルのテンポに従って運動動作を行う。その一方で、所定の運動強度で運動動作を行うためのテンポは、運動動作によって異なる場合がある。そのため、楽曲のオリジナルのテンポが、設定された運動強度で運動動作を行うためのテンポと合わない場合がある。この場合、利用者41は、設定された運動強度で運動動作を行うことができない。
そこで、出力端末5は、各演奏パートについて、演奏パートの割り当て運動強度に対応する運動テンポ範囲を特定する。運動テンポ範囲は、割り当て運動強度で運動動作が可能な運動テンポの範囲である。運動テンポは、運動動作を行うテンポである。出力端末5は、特定した運動テンポ範囲内において、割り当て運動強度で運動動作が可能な部品IDを検索する。そして、出力端末5は、検索された部品IDの中から、前の演奏順の演奏パートの割り当て候補の部品IDの後繋ぎ属性と一致する前繋ぎ属性を有する部品IDを検索する。これにより、設定された割り当て運動強度で利用者41は運動動作を行うことができる。
例えば、各部品IDに対して運動テンポ範囲が予め定義されてもよい。例えば、運動テンポ範囲が運動強度に対応付けて定義されてもよい。この場合、運動テンポ範囲は、対応付けられた運動強度で運動動作が可能な運動テンポの範囲である。この場合、出力端末5は、部品IDごとに、演奏パートの割り当て運動強度に対応する運動テンポ範囲を特定する。そして、出力端末5は、特定した運動テンポ範囲に対応する部品IDのうち、楽曲のオリジナルのテンポが運動テンポ範囲内である部品IDを検索する。1つの部品IDに対して、互いに異なる複数の運動強度に対応する複数の運動テンポ範囲が定義されてもよい。なお、出力端末5は、演奏パートの割り当て運動強度に対して一意の運動テンポ範囲を特定してもよい。
[1−4.部品IDの割り当て、部品リストの生成の詳細]
次に、部品IDの割り当て及び部品リストの生成に用いられる情報について説明する。部品リストを生成するため、出力端末5のHDD(ハードディスクドライブ)7には、部品テーブル、繋ぎ動作テーブル、運動ジャンルテーブル等が記憶される。図3(A)は、部品テーブルの構成例を示す図である。部品テーブルは、部品の属性及び繋ぎ属性等を定義するテーブル情報である。部品テーブルには、部品ID、部品名、演奏パート種別、拍数、複数の運動テンポ範囲、前繋ぎ属性ID、後繋ぎ属性ID、ジャンルID、モーションID等が、部品IDごとに格納される。
部品IDは、モーションデータを識別可能な識別情報である。部品名は、モーションデータが示す運動動作の名称である。演奏パート種別は、部品IDを割り当て可能な演奏パートの種類である。演奏パート種別は、本発明の第2パート情報の一例である。図3(A)の例では、演奏パート種別として例えばptype1〜5等が格納される。例えば、ptype1は前奏、ptype2はAメロ+サビ、ptype3は間奏、ptype4はAメロ+Bメロ、ptype5は後奏であってもよい。拍数は、運動動作の長さを示す。
運動テンポ範囲は、本発明の範囲情報の一例である。運動テンポ範囲は、運動強度に対応付けて格納される。図3(A)の例では、1つの部品IDにつき、3個の運動テンポ範囲が格納されている。3個の運動テンポ範囲のそれぞれが運動強度1〜3の何れかに対応している。例えば、運動動作2−1において、運動強度3に対応する運動テンポ範囲は、115〜130BPMである。運動強度2に対応する運動テンポ範囲は、110〜120BPMである。運動強度1に対応する運動テンポ範囲は、100〜115BPMである。この場合、楽曲のテンポが115〜130BPMの範囲内にあり、演奏パートの割り当て運動強度が3である場合、運動動作2−1の部品IDを割り当てることができる。また、楽曲のテンポが110〜120BPMの範囲内にあり、演奏パートの割り当て運動強度が2である場合、運動動作2−1の部品IDを割り当てることができる。また、楽曲のテンポが100〜115BPMの範囲内にあり、演奏パートの割り当て運動強度が1である場合、運動動作2−1の部品IDを割り当てることができる。なお、異なる運動強度の間で、運動テンポ範囲が一部重なってもよいし、重なっていなくてもよい。また、本実施形態においては、運動強度は3段階あるが、2段階であってもよいし、4段階以上であってもよい。そして、運動強度の段階の数に応じた複数の運動テンポ範囲が部品テーブルに格納されてもよい。
前繋ぎ属性IDは、前繋ぎ属性を示す識別情報である。後繋ぎ属性IDは、後繋ぎ属性を示す識別情報である。図3(B)は、繋ぎ動作テーブルの構成例を示す図である。繋ぎ動作テーブルは、繋ぎ属性を定義するテーブル情報である。繋ぎ動作テーブルには、繋ぎ動作IDが格納される。図3(B)では、繋ぎ動作IDとして例えばc1〜c5等が格納される。例えば、c1はマーチであり、c2はステップであり、c3は構えであり、c4はスクワットであり、c5は直立である。前繋ぎ属性ID及び後繋ぎ属性IDは、それぞれ本発明における繋ぎ属性情報の一例である。なお、1つの部品IDに対して、例えば複数の前繋ぎ属性ID又は複数の後繋ぎ属性IDが対応付けて格納されてもよい。
ジャンルIDは、運動動作が属する運動のジャンルの識別情報である。図3(C)は、運動ジャンルテーブルの構成例を示す図である。運動ジャンルテーブルは、運動ジャンルを定義するテーブル情報である。運動ジャンルテーブルには、ジャンルIDが格納される。図3(C)では、ジャンルIDとして例えばj1、j2等が格納される。例えば、j1は有酸素運動であり、j2は調整運動である。モーションIDは、モーションデータの識別情報である。部品IDとモーションIDは基本的に一対一で対応する。部品テーブルには、例えば、部品IDとモーションIDのうち何れか一方のみが格納されてもよい。
次に、図3(A)に示す部品テーブルを用いた場合の部品リストの生成方法について説明する。図4(A)は、楽曲の構成例を示す図である。図4(A)に示すように、楽曲Xは演奏パート1〜8で構成されている。図4(A)の例では、演奏パート種別が同一である複数の演奏パートに対して、同一の割り当て運動強度が設定されている。例えば、演奏パート2と5の演奏パート種別及び割り当て運動強度は、ptype2及び運動強度3である。また、楽曲Xのオリジナルのテンポは120BPMである。
図4(B)〜図4(H)は、部品リスト表の更新過程の一例を示す図である。部品リスト表は、生成中の部品リストを1又は複数格納するテーブル情報である。部品リスト表の各行の情報が部品リストに相当する。部品リスト表の各列は演奏パートに対応する。出力端末5は、部品テーブルから、演奏パート1の属性及び楽曲Xの属性に一致する属性に対応する部品IDを検索する。部品テーブルから部品IDを検索することは、部品IDに対応するモーションID及びモーションデータをHDD7から検索することである。演奏パートの属性は演奏パート種別、拍数及び割り当て運動強度であり、演奏パート1の演奏パート種別、拍数及び割り当て運動強度は、ptype1、32拍及び運動強度2である。また、楽曲の属性は運動ジャンルであり、楽曲Xの運動ジャンルは有酸素運動である。従って、出力端末5は、部品テーブルから、ptype1、32拍及び有酸素運動に対応する部品IDを割り当て候補の部品IDとして検索する。このとき、出力端末5は、運動強度2に対応する運動テンポ範囲を部品テーブルから特定する。そして、出力端末5は、特定した運動テンポ範囲が、楽曲Xのテンポである120BPMを含む部品IDを検索する。部品テーブルにおいて、運動動作1−1及び1−2の部品IDが、ptype1、32拍及び有酸素運動に対応する。運動動作1−1の運動強度2に対応する運動テンポ範囲は115〜130である。運動動作1−2の運動強度2に対応する運動テンポ範囲は125〜135である。従って、運動動作1−1が検索される。出力端末5は、演奏パート1と検索された部品IDとを対応付けた部品リスト表を生成する。図4(B)は、演奏パート1の割り当て候補の部品IDを格納した部品リスト表の一例である。図4(B)に示すように、部品リスト表の1行目の1番目の列に、運動動作1−1の部品IDが格納される。
演奏パート2の演奏パート種別、拍数及び運動強度は、ptype2、64拍及び運動強度3である。従って、出力端末5は、部品テーブルから、ptype2、64拍及び有酸素運動に対応する部品IDを割り当て候補の部品IDとして検索する。このとき、出力端末5は、運動強度3に対応する運動テンポ範囲を部品テーブルから特定する。そして、出力端末5は、特定した運動テンポ範囲が120BPMを含む部品IDを検索する。部品テーブルにおいて、運動動作2−2及び2−3の部品IDが、ptype2、64拍及び有酸素運動に対応する。運動動作2−2の運動強度3に対応する運動テンポ範囲は120〜140である。運動動作2−3の運動強度3に対応する運動テンポ範囲は125〜135である。従って、運動動作2−2が検索される。次いで、出力端末5は、検索された部品IDの中から、運動動作1−1の後繋ぎ属性IDと一致する前繋ぎ属性IDに対応する部品IDを検索する。運動動作1−1の後繋ぎ属性IDと、運動動作2−2の前繋ぎ属性IDは一致しない。その結果、運動強度3で実行可能な運動動作の部品IDとして、演奏パート2の割り当て候補が存在しないことになる(図4(C))。
この場合、出力端末5は、演奏パートの割り当て運動強度に対応する運動テンポ範囲を特定せずに、部品IDを検索する。すなわち、出力端末5は、部品テーブルから、ptype2、64拍及び有酸素運動に対応する部品IDを割り当て候補の部品IDとして検索する。この場合、出力端末5は、楽曲のオリジナルのテンポで利用者41が運動動作を実行した場合、演奏パート2の割り当て運動強度とは異なる運動強度で実行される運動動作の部品IDを検索することになる。そして、出力端末5は、検索された部品IDの中から、運動動作1−1の後繋ぎ属性IDと一致する前繋ぎ属性IDに対応する部品IDを検索する。運動動作1−1の後繋ぎ属性IDと、運動動作2−3の前繋ぎ属性IDが一致する。そこで、部品リスト表の2番目の列に、運動動作2−3の部品IDを格納する。すると、図4(D)に示すように部品リスト表が更新される。部品テーブルにおいて、運動動作2−3の部品IDに対応する複数の運動テンポ範囲のうち、運動強度2に対応する運動テンポ範囲が、楽曲のオリジナルのテンポを含んでいる。そのため、演奏パート2がスピーカ64から出力されているとき、利用者41は運動強度2で運動動作2−3を行うことになる。なお、出力端末5は、運動強度1〜3に対応する全ての運動テンポ範囲のうち、少なくとも何れかの運動テンポ範囲が、楽曲のオリジナルのテンポを含む部品IDを検索してもよい。その理由は、運動強度1〜3の何れかで運動動作が行えるようにするためである。例えば、楽曲のオリジナルのテンポが140BPMであるとする。運動動作2−3の複数の運動テンポ範囲は、125〜135、115〜130、110〜120である。従って、何れの運動テンポ範囲も、140BPMを含まない。そのため、利用者41が140BPMで運動動作2−3を実行すると、運動強度1〜3の何れとも異なる運動強度で運動動作2−3を行うことになる。
演奏パート3の演奏パート種別、拍数及び運動強度は、ptype3、32拍及び運動強度2である。従って、出力端末5は、部品テーブルから、ptype3、32拍及び有酸素運動に対応する部品IDを割り当て候補の部品IDとして検索する。このとき、出力端末5は、運動強度2に対応する運動テンポ範囲を部品テーブルから特定する。そして、出力端末5は、特定した運動テンポ範囲が120BPMを含む部品IDを検索する。運動動作3−1の部品IDが、ptype3、32拍及び有酸素運動に対応する。運動動作3−1の運動強度2に対応する運動テンポ範囲は115〜125である。従って、運動動作3−1が検索される。次いで、出力端末5は、検索された部品IDの中から、運動動作2−3の後繋ぎ属性IDと一致する前繋ぎ属性IDに対応する部品IDをそれぞれ部品テーブルから検索する。運動動作2−3の後繋ぎ属性IDと、運動動作3−1の前繋ぎ属性IDが一致する。そこで、部品リスト表の3番目の列に、運動動作3−1の部品IDを格納する。すると、図4(E)に示すように部品リスト表が更新される。
演奏パート4の演奏パート種別、拍数及び運動強度は、ptype4、32拍及び運動強度1である。従って、出力端末5は、部品テーブルから、ptype4、32拍及び有酸素運動に対応する部品IDを検索する。このとき、出力端末5は、運動強度1に対応する運動テンポ範囲を部品テーブルから特定する。そして、出力端末5は、特定した運動テンポ範囲が120BPMを含む部品IDを検索する。運動動作4−1〜4−3の部品IDが、ptype4、32拍及び有酸素運動に対応する。運動動作4−1の運動強度1に対応する運動テンポ範囲は125〜135である。運動動作4−2及び4−3の運動強度1に対応する運動テンポ範囲はそれぞれ105〜125である。従って、運動動作4−2及び4−3が検索される。次いで、出力端末5は、検索された部品IDの中から、運動動作3−1の後繋ぎ属性IDと一致する前繋ぎ属性IDに対応する部品IDを部品テーブルから検索する。運動動作3−1の後繋ぎ属性IDと、運動動作4−2及び4−3の前繋ぎ属性IDが一致する。そこで、出力端末5は、運動動作1−1、2−3及び3−1の部品IDを格納する行を部品リスト表に1つ追加する。出力端末5は、2つの行のうち一方の行の4番目の列に、運動動作4−2の部品IDを格納する。また、出力端末5は、2つの行のうち他方の行の4番目の列に、運動動作4−3の部品IDを格納する。すると、図4(F)に示すように部品リスト表が更新される。
演奏パート5の演奏パート種別、拍数及び運動強度は、ptype2、32拍及び運動強度3である。ptype2は、演奏パート2の演奏パート種別でもある。つまり、演奏パート5と演奏パート種別が同一である演奏パートに対して、割り当て候補の部品IDが既に検索済みである。この場合、出力端末5は、検索済みの部品IDのみが割り当て候補に決定されるようにする。つまり、出力端末5は、種別が同じ演奏パートが出力されているとき、同じ運動動作が行われるようにする。その理由は、利用者41に同じ運動動作を繰り返し行わせることにより、運動動作の上達を促進するためである。具体的に、演奏パート2の割り当て候補の前繋ぎ属性IDが、演奏パート4の割り当て候補の後繋ぎ属性IDと一致する場合にのみ、出力端末5は、演奏パート2の割り当て候補を、演奏パート5の割り当て候補に決定する。演奏パート2の割り当て候補は運動動作2−3の部品IDである。運動動作4−2の後繋ぎ属性IDと、運動動作2−2の前繋ぎ属性IDは一致する。そこで、出力端末5は、部品リスト表の1行目の5番目の列に、運動動作2−3の部品IDを格納する。一方、運動動作4−3の後繋ぎ属性IDと、運動動作2−3の前繋ぎ属性IDは一致しない。そのため、出力端末5は、運動動作1−1、2−3、3−1及び4−3の部品IDを格納する行を部品リスト表から削除する。すると、図4(G)に示すように部品リスト表が更新される。
出力端末5は、演奏パート6〜8についても、これまでに説明した方法と同様の方法で、部品リスト表を更新する。すると、図4(H)に示すように部品リスト表が更新される。こうして、楽曲Xを構成する複数の演奏パートに合う複数の運動動作を示す部品リストが生成される。図4(H)に示す部品リスト表の行数は1行である。従って、1つの部品リストが生成されたことになる。部品リスト表の行数が複数行である場合、複数の部品リストが生成されたことになる。この場合、例えば、運動コンテンツの再生に用いる部品リストをユーザが選択してもよいし、出力端末5が自動的に決定してもよい。
[1−5.運動強度の選択画面]
演奏パート2の割り当て候補の検索の例で説明したように、出力端末5は、楽曲のオリジナルのテンポで利用者41が運動動作を実行した場合に、演奏パートの割り当て運動強度で運動動作が可能な部品IDを検索することができない場合がある。この場合、出力端末5は、割り当て運動強度とは異なる運動強度で実行されることになる運動動作の部品IDを割り当て候補として検索する。このとき、割り当て候補として複数の部品IDが検索される場合がある。この場合、出力端末5は、検索された部品IDごとに、部品リストを生成する場合がある。そのため、部品リストによって、運動強度パターンが異なる場合がある。運動強度パターンは、楽曲を構成する複数の演奏パートの割り当て候補の複数の運動動作に対応する複数の運動強度を組み合わせたものである。これらの運動強度は、楽曲のオリジナルのテンポに従って運動動作を実行した場合の運動強度である。1つの部品リストが1つの運動強度パターンに対応する。そこで、出力端末5は、複数の運動強度パターンから所望のパターンを利用者41が選択することができるように制御する。
具体的に、出力端末5は、ディスプレイ67に選択画面を表示させる。図5は、選択画面の表示例を示す図である。図5に示すように、選択画面には、複数の運動強度グラフ110が表示される。運動強度グラフ110は、運動強度パターンを示すグラフである。具体的に、楽曲を構成する各演奏パートに対応付けて、運動強度を示す棒が表示される。ここで、出力端末5は、楽曲を構成する演奏パートのうちサビ部分に対応する運動強度が高い運動強度パターンに対応する運動強度グラフ110であるほど優先的に表示してもよい。その理由は、上述したように、楽曲のサビ部分が出力されているときに運動強度が高い運動動作を行うと、利用者41は、運動の充実感や爽快感を得られやすくなるからである。例えば、出力端末5は、サビ部分に対応する運動強度が高い順に、運動強度グラフ110を上から下に向かって並べて表示させる。なお、出力端末5は、各棒に、例えば割り当て候補の部品IDに対応する運動動作を行うフィギュア83の動画又は静止画を表示させてもよい。また、出力端末5は、例えば割り当て候補の部品IDに対応する部品名を表示させてもよい。また、運動強度グラフ110は、例えば折れ線グラフ等であってもよい。また、出力端末5は、各運動強度を、例えばグラフではなく数値等で表示させてもよい。また、出力端末5は、楽曲を構成する全ての演奏パートに対応する全ての運動強度を表示させなくてもよい。例えば、出力端末5は、割り当て運動強度とは異なる運動強度の部品IDが検索された演奏パートについてのみ、運動強度を表示させてもよい。
選択画面には、更に選択強度グラフ110ごとに、ラジオボタン120が表示される。利用者41は、ラジオボタン120を操作することにより、何れかの運動強度グラフ110が示す運動強度パターンを選択することができる。また、選択画面には、決定ボタン130が表示される。利用者41が決定ボタン130を操作することにより、出力端末5は、選択された運動強度パターンに対応する部品リストを、運動コンテンツの再生に用いる部品リストに決定する。
[1−6.各装置の構成]
次に、図1を参照して、運動コンテンツ生成システムに含まれる各装置の構成について説明する。
[1−6−1.配信サーバ2の構成]
図1に示すように、配信サーバ2は、CPU21、ROM22、RAM23、バス24、I/Oインタフェイス25、表示制御部26、ディスクドライブ28、ネットワーク通信部30及びHDD37を備える。CPU21は、バス24を介して、ROM22、RAM23及びI/Oインタフェイス25に接続されている。CPU21は、ROM22やHDD37に記憶されプログラムを実行することにより、配信サーバ2の各部を制御する。I/Oインタフェイス25には、データベース3、表示制御部26、ディスクドライブ28、ネットワーク通信部30、キーボード31、マウス32及びHDD37が接続されている。CPU21は、I/Oインタフェイス25を介してデータベース3にアクセスする。表示制御部26は、CPU21の制御に基づいて映像信号をモニタ27に出力する。ディスクドライブ28は、記録媒体29に対するデータの書き込み及び読み出しを行う。ネットワーク通信部30は、配信サーバ2がネットワーク10に接続するための制御を行う。HDD37には、OSや各種制御プログラム等が記憶されている。
データベース3には、楽曲データ、モーションデータ、部品テーブル、繋ぎ動作テーブル、運動ジャンルテーブル、運動強度設定情報等のデータが登録されている。運動強度設定情報は、楽曲の各演奏パートの割り当て運動強度を示す。運動強度設定情報は、楽曲ごとに、楽曲IDに対応付けて登録される。運動強度設定情報には、演奏パートごとに、演奏パートID及び割り当て運動強度が対応付けて格納される。割り当て運動強度は、本発明の強度情報の一例である。
楽曲データは、スピーカ64により楽曲を出力するための演奏データである。楽曲データは、例えば、MIDI(Musical Instrument Digital Interface)形式のデータであってもよい。楽曲データは、楽曲ID、楽曲名、アーティスト名、オリジナルのテンポ、楽曲の演奏パートの構成等の情報を含む。楽曲IDは、楽曲の識別情報である。オリジナルのテンポは、本発明のテンポ情報の一例である。また、楽曲データは、演奏パートの切り替わりのタイミング等を規定する。例えば、楽曲データがMIDI形式のデータである場合、楽曲データには、実際の演奏データとしてのMIDIイベントに加えて、メタイベントを含めることができる。メタイベントとしては、例えば、演奏パート開始イベント等がある。演奏パート開始イベントは、演奏パートの演奏開始を通知するイベントである。演奏パート開始イベントは、演奏パートのパートID、演奏パート種別、拍数等を含む。演奏パート開始イベントに含まれる演奏パート種別は、本発明におけるパート情報の一例である。モーションデータは、モーションIDと対応付けて登録される。なお、モーションデータは、例えば部品IDと対応付けて登録されてもよい。
[1−6−2.出力端末5の構成]
図1に示すように、出力端末5は、CPU51、ROM52、RAM53、バス54、I/Oインタフェイス55、表示制御部56、ディスクドライブ58、ネットワーク通信部60、音声出力部63、信号受信部65、及びHDD7を備える。CPU51は、バス54を介して、ROM52、RAM53及びI/Oインタフェイス55に接続されている。CPU51は、時計機能及びタイマー機能を有する。CPU51は、ROM52やHDD7に記憶されプログラムを実行することにより、出力端末5の各部を制御する。I/Oインタフェイス55には、HDD7、表示制御部56、音声出力部63、ディスクドライブ58、ネットワーク通信部60、キーボード61、マウス62、及び信号受信部65が接続されている。表示制御部56は、CPU51の制御に基づいて映像信号をモニタ57に出力する。音声出力部63は、CPU51の制御に基づいて音声信号をモニタ57に出力する。ディスクドライブ58は、記録媒体59に対するデータの書き込み及び読み出しを行う。信号受信部65は、リモコン66から出力される信号を受信する。リモコン66は、操作者42が出力端末5を操作するためのものである。
HDD7は、本発明の第1記憶手段及び第2記憶手段の一例である。なお、第1記憶手段及び第2記憶手段が同一の記憶デバイスであってもよいし、互いに異なる記憶デバイスであってもよい。HDD7には、配信サーバ2から配信された楽曲データ、モーションデータ、部品テーブル、繋ぎ動作テーブル、運動ジャンルテーブル、運動強度設定情報等のデータが記憶される。また、HDD7には、生成された部品リストが記憶される。
HDD7には、更に、OS、運動支援プログラム、3Dエンジン、ミュージックシーケンサ等の各種プログラム等が記憶されている。運動支援プログラムは、利用者41の運動を支援するためのプログラムである。運動支援プログラムは、コンピュータとしてのCPU51に、第1特定ステップ、第1検索ステップ、第2特定ステップ、第2検索ステップ、及び第3検索ステップを少なくとも実行させる。3Dエンジンは、モーションデータに基づいて、三次元仮想空間で運動動作するフィギュア83を二次元平面に投影した画像を生成するためのプログラムである。画像を生成する処理は、射影変換、クリッピング、隠面消去、シェーディング、テクスチャマッピング等を含む。CPU51は、3Dエンジンを実行して、静止画像を順次生成する。生成された静止画像をCPU51が表示制御部56へ順次出力することで、ディスプレイ67には、運動映像が表示される。
ミュージックシーケンサは、楽曲データを再生するためのプログラムである。CPU51は、ミュージックシーケンサを実行することにより、楽曲データに対応する音声信号を生成する。また、CPU51は、ミュージックシーケンサを実行することにより、各種のイベントを発生させる。イベントとして、例えば、テンポに応じて所定時間間隔で発生するイベントがある。このイベントは、MIDIクロックや同期イベントと呼ばれる。また、イベントとして、例えば、演奏パート開始イベントがある。
各種プログラムは、例えば、配信サーバ2等のサーバからネットワーク10を介してダウンロードされるようにしてもよい。また、各種プログラムは、記録媒体59に記録されてディスクドライブ58を介して読み込まれるようにしてもよい。なお、3Dエンジンやミュージックシーケンサは、プログラムではなく、専用のハードウェアであってもよい。そして、出力端末5は、ハードウェアとしての3Dエンジンやミュージックシーケンサを備えてもよい。
CPU51は、設定されたテンポに従って、楽曲データに対応する音声信号を音声出力部63へ出力させるとともに、生成した画像に対応する映像信号を表示制御部56から出力させる。CPU51は、同期イベントに基づいて、楽曲の音声信号の出力タイミングと運動映像の映像信号の出力タイミングとを同期させる。これにより、スピーカ64から出力される楽曲に同期して運動動作を行うフィギュア83がディスプレイ67に表示される。
[1−7.運動コンテンツ生成システム1の動作]
次に、図6を参照して、運動コンテンツ生成システム1の動作を説明する。例えば、操作者42が、リモコン66等により、運動レッスンを開始させるための操作を行う。操作者42は、例えば利用者41であってもよい。すると、CPU51は、部品リストを生成し、部品リストに応じて基づいて運動コンテンツを再生する。先ず、CPU51は、部品リストを生成するための前処理として、選択情報取得処理を実行する。選択情報取得処理において、CPU51は、部品リストの生成に必要な情報を取得する。選択情報取得処理のフローチャートの図示は省略する。具体的に選択情報取得処理において、CPU51は、運動レッスンに用いる楽曲を決定する。例えば、操作者42が楽曲を選択して、CPU51が、操作者42により入力された選択結果を受け付けてもよい。CPU51は、決定された楽曲の楽曲IDを取得する。また、CPU51は、決定された楽曲の楽曲データから、楽曲のオリジナルのテンポと、楽曲を構成する各演奏パートの演奏パート開始イベントとを取得する。また、CPU51は、楽曲IDに対応する運動強度設定情報をHDD7から取得する。次いで、CPU51は、運動ジャンルを決定する。例えば、操作者42が運動ジャンルを選択して、CPU51が選択結果を受け付けてもよい。
選択情報取得処理が終了すると、CPU51は、部品リスト生成処理を実行する。図6は、出力端末5のCPU51の部品リスト生成処理の処理例を示すフローチャートである。図6に示すように、CPU51は、演奏順Nを1に設定する(ステップS1)。次いで、CPU51は、再検索フラグをFALSEに設定する(ステップS2)。再検索フラグは、演奏パートの割り当て運動強度とは異なる運動強度で運動動作が実行される部品IDを検索したか否かを示す。次いで、CPU51は、選択情報取得処理で取得された演奏パート開始イベントに基づいて、演奏順1〜演奏順N−1の演奏パートの中に、演奏順Nの演奏パートと演奏パート種別が同一である演奏パートが出現済みであるか否かを判定する(ステップS3)。このとき、CPU51は、演奏順Nの演奏パートと演奏パート種別が同一である演奏パートが出現済みであると判定した場合には(ステップS3:YES)、ステップS16に進む。一方、CPU51は、演奏順Nの演奏パートと演奏パート種別が同一である演奏パートが出現済みではないと判定した場合には(ステップS3:NO)、ステップS4に進む。CPU51は、演奏順Nが1である場合にもステップS4に進む。
ステップS4において、CPU51は、選択情報取得処理で取得された運動強度設定情報から、演奏順Nの演奏パートの割り当て運動強度を、運動強度αとして取得する。次いで、CPU51は、決定された運動ジャンル、演奏順Nの演奏パートの演奏パート種別、及び演奏順Nの演奏パートの拍数に一致する運動ジャンル、演奏パート種別、及び拍数に対応する部品IDを、部品テーブルから検索する。このとき、CPU51は、運動強度αに対応する運動テンポ範囲を部品テーブルから特定する。そして、CPU51は、特定した運動テンポ範囲に対応する部品IDのうち、楽曲のオリジナルのテンポが運動テンポ範囲内である部品IDを検索する(ステップS5)。次いで、CPU51は、演奏順Nが1よりも大きいか否かを判定する(ステップS6)。このとき、CPU51は、演奏順Nが1よりも大きいと判定した場合には(ステップS6:YES)、ステップS7に進む。一方、CPU51は、演奏順Nが1より大きくはないと判定した場合には(ステップS6:NO)、ステップS11に進む。
ステップS7において、CPU51は、部品リスト表の行番号Kを1に設定する。次いで、CPU51は、部品テーブルに基づいて、ステップS5で検索された部品IDの中から、演奏順N−1の演奏パートの割り当て候補Kの部品IDに対応する後繋ぎ属性IDに一致する前繋ぎ属性IDに対応する部品IDを検索する(ステップS8)。演奏順N−1の演奏パートの割り当て候補Kの部品IDとは、部品リスト表において、K番目の行のN−1番目の列に格納された部品IDである。次いで、CPU51は、行番号Kに1を加算する(ステップS9)。次いで、CPU51は、行番号Kが行数R以下であるか否かを判定する(ステップS10)。行数Rは、現時点における部品リスト表の行数である。このとき、CPU51は、行番号Kが行数R以下であると判定した場合には(ステップS10:YES)、ステップS8に進む。一方、CPU51は、行番号Kが行数R以下ではないと判定した場合には(ステップS10:NO)、ステップS11に進む。
ステップS11において、CPU51は、該当する部品IDが検索されたか否かを判定する。このとき、CPU51は、演奏順Nが1であるときにステップS5で部品IDが検索されたと判定した場合には(ステップS11:YES)、ステップS15に進む。また、CPU51は、演奏順Nが2以上であるときにステップS8で部品IDが検索されたと判定した場合にも(ステップS11:YES)、ステップS15に進む。一方、CPU51は、ステップS5又はS8で部品IDが検索されなかったと判定した場合には(ステップS11:NO)、ステップS12に進む。
ステップS12において、CPU51は、再検索フラグがTRUEであるか否かを判定する。このとき、CPU51は、再検索フラグがTRUEであると判定した場合には(ステップS12:YES)、部品リスト生成処理を終了させる。この場合、演奏順がNである演奏パートに割り当て可能な部品IDが存在しない。そのため、CPU51は、例えばディスプレイ67にエラーメッセージを表示する。そして、CPU51は、運動コンテンツの再生を実行しない。一方、CPU51は、再検索フラグがTRUEではないと判定した場合には(ステップS12:NO)、ステップS13に進む。ステップS13において、CPU51は、選択された運動ジャンル、演奏順Nの演奏パートの演奏パート種別、及び演奏順Nの演奏パートの拍数に一致する運動ジャンル、演奏パート種別、及び拍数に対応する部品IDを、部品テーブルから検索する。このとき、CPU51は、楽曲のオリジナルのテンポが、運動強度1〜3に対応する全ての運動テンポ範囲のうち少なくとも何れかの運動テンポ範囲内である部品IDを検索する(ステップS13)。次いで、CPU51は、再検索フラグをTRUEに設定する(ステップS14)。次いで、CPU51は、ステップS6に進む。
ステップS15において、CPU51は、部品リスト表を更新する。演奏順Nが1である場合、CPU51は、ステップS5で検索された部品IDを格納する部品リスト表を生成する。演奏順Nが2以上である場合、CPU51は、ステップS8の検索結果に基づいて、部品リスト表を更新する。具体的に、ステップS8で部品IDが検索された場合、CPU51は、対応する行のN番目の列に、検索された部品IDを格納する。1つの行につき複数の部品IDが検索された場合、CPU51は、同一内容の行を部品リスト表に追加する。そして、CPU51は、検索された複数の部品IDを複数の行に格納する。ステップS8で部品IDが検索されなかった場合、CPU51は、対応する行を部品リストから削除する。CPU51は、ステップS15の処理を終えると、ステップS23に進む。
ステップS16において、CPU51は、行番号Kを1に設定する。次いで、CPU51は、演奏順Nの演奏パートと演奏パート種別が同一である演奏パートに割り当て候補として検索済みの部品IDに対応する情報を取得する(ステップS17)。具体的に、CPU51は、部品リスト表のK番目の行において、演奏順Nの演奏パートと演奏パート種別が同一である演奏パートに対応する列から、検索済みの部品IDを取得する。次いで、CPU51は、取得された部品IDに対応する前繋ぎ属性IDを部品テーブルから取得する。
次いで、CPU51は、演奏順N−1の演奏パートの割り当て候補Kの部品IDに対応する後繋ぎ属性IDと、検索済みの部品IDに対応する前繋ぎ属性IDとが一致するか否かを判定する(ステップS18)。このとき、CPU51は、後繋ぎ属性IDと前繋ぎ属性IDとが一致すると判定した場合には(ステップS18:YES)、ステップS19に進む。一方、CPU51は、後繋ぎ属性IDと前繋ぎ属性IDとが一致しないと判定した場合には(ステップS18:NO)、ステップS20に進む。
ステップS19において、CPU51は、部品リスト表において、K番目の行のN番目の列に、ステップS17で取得された検索済みの部品IDを格納する。次いで、CPU51は、ステップS21に進む。ステップS20において、CPU51は、K番目の行を部品リストから削除する。次いで、CPU51は、ステップS21に進む。ステップS21において、CPU51は、行番号Kに1を加算する。次いで、CPU51は、行番号Kが行数R以下であるか否かを判定する(ステップS22)。このとき、CPU51は、行番号Kが行数R以下であると判定した場合には(ステップS22:YES)、ステップS17に進む。一方、CPU51は、行番号Kが行数R以下ではないと判定した場合には(ステップS22:NO)、ステップS23に進む。
ステップS23において、CPU51は、行数Rを、更新後の部品リスト表の行数に変更する。次いで、CPU51は、演奏順Nに1を加算する(ステップS24)。次いで、CPU51は、演奏順Nが、選択された楽曲を構成する演奏パートの総数以下であるか否かを判定する(ステップS25)。このとき、CPU51は、は、演奏順Nが演奏パートの総数以下であると判定した場合には(ステップS25:YES)、ステップS2に進む。一方、CPU51は、演奏順Nが演奏パートの総数以下ではないと判定した場合には(ステップS25:NO)、ステップS26に進む。
ステップS26において、CPU51は、選択画面をディスプレイ67に表示させる。例えば、部品リストが複数生成された場合において、ステップS13の実行により、割り当て運動強度とは異なる運動強度で運動動作が行われる部品IDを検索した場合に、CPU51は、選択画面を表示させてもよい。具体的に、CPU51は、部品リストごとに運動強度パターンを特定する。より詳細に、CPU51は、部品リストから、部品IDを取得する。次いで、CPU51は、部品テーブルにおいて、部品IDに対応する運動強度1〜3の運動テンポ範囲のうち、楽曲のオリジナルのテンポを含む運動テンポ範囲を検索する。次いで、CPU51は、検索した運動テンポ範囲に対応する運動強度を特定する。CPU51は、部品リストに格納された複数の部品IDに対応する複数の運動強度を、運動強度パターンとして特定する。次いで、CPU51は、各運動強度パターンから、サビ部分に対応する運動強度を取得する。次いで、次いで、CPU51は、運動強度パターンに基づいて、運動強度グラフ110をディスプレイ67に表示させる。このとき、CPU51は、サビ部分に対応する運動強度が高い運動強度パターンの順に、運動強度グラフ110を表示させる。こうして、CPU51は、選択画面を表示させる。操作者42は、選択画面から何れかの運動強度パターンを選択する。CPU51は、選択された運動強度パターンに対応する部品リストを、運動コンテンツの再生に用いる部品リストに決定する。CPU51は、この処理を終えると、部品リスト生成処理を終了させる。
部品リスト生成処理が終了すると、CPU51は、運動情報生成処理を実行する。運動情報生成処理において、CPU51は、生成された部品リストに基づいて、運動情報を生成する。運動情報は、運動コンテンツを再生するために用いられる情報である。運動情報は、楽曲が出力されているときに、運動映像の表示を開始するタイミングを示す。表示するタイミングは、例えば、再生位置で示されてもよい。再生位置は、運動コンテンツに含まれる楽曲の再生が開始されてから経過した時間である。運動情報は、例えば複数のレコードを含む。各レコードは、パス及び再生位置を示す。パスは、運動映像の表示に用いられるモーションデータのパスである。運動情報生成処理において、CPU51は、楽曲のオリジナルのテンポと、選択情報取得処理で取得された演奏パート開始イベントに含まれる拍数とに基づいて、各演奏パートの再生が開始される再生位置を計算する。次いで、CPU51は、各演奏パートに割り当てられた部品IDを部品リストから取得する。次いで、CPU51は、取得した部品IDに対応するモーションIDを部品テーブルから取得する。次いで、CPU51は、モーションIDに対応するモーションデータのパスを取得する。次いで、CPU51は、各演奏パートについて、演奏パートの再生位置と、演奏パートに割り当てられた部品IDに対応するモーションデータのパスとを含むレコードを部品IDごとに生成する。CPU51は、生成されたレコードを含む運動情報を生成する。
運動情報生成処理が終了すると、CPU51は、再生処理を実行する。再生処理において、CPU51は、運動情報に基づいて運動コンテンツを再生する。具体的に、CPU51は、時計機能から現在時刻を取得する。CPU51は、取得した現在時刻を楽曲データの再生開始時刻とする。次いで、CPU51は、決定された楽曲の楽曲データに基づいて、ミュージックシーケンサにより楽曲データを再生する。これにより、CPU51は、スピーカ64により楽曲を出力させる。このとき、CPU51は、楽曲のオリジナルのテンポに従って楽曲を出力させる。
楽曲データの再生を開始すると、CPU51は、楽曲データの再生開始時刻から経過した時間を、楽曲の現在の再生位置として随時更新する。再生位置が更新されるごとに、CPU51は、運動情報から現在の再生位置を含むレコードを検索する。このときにレコードが検索された場合、CPU51は、検索されたレコードからモーションデータのパスを取得する。次いで、CPU51は、パスに対応するモーションデータに基づいて、運動映像の再生を開始する。このとき、CPU51は、先ずメイン動作の静止画像を順次生成し、静止画像を表示制御部56へ順次出力する。次いで、CPU51は、後繋ぎ動作の静止画像を順次生成し、静止画像を表示制御部56へ順次出力する。これにより、CPU51は、ディスプレイ67に運動映像を表示する。楽曲データの再生が終了すると、CPU51は、再生処理を終了させる。
以上説明したように、本実施形態によれば、CPU51が、演奏パートの割り当て運動強度に対応する運動テンポ範囲を特定する。また、CPU51が、特定した運動テンポ範囲内において、割り当て運動強度で運動動作が可能な部品IDを部品テーブルから検索する。また、CPU51が、検索された部品IDから、前の演奏パートの割り当て候補の部品IDの繋ぎ属性に一致する繋ぎ属性の部品IDを検索する。そのため、運動動作の繋がりが自然になるように、且つ、設定された運動強度で運動動作を行うことができるように、各演奏パートに運動動作を自動的に割り当てることができる。
[2.第2実施形態]
次に、第2実施形態について説明する。上述したように、出力端末5は、演奏パートの割り当て候補として、その演奏パートの割り当て運動強度で運動動作を実行可能な部品IDを検索することができない場合がある。この場合、第1実施形態においては、出力端末5は運動強度を考慮しないで部品IDを検索していた。第2実施形態において、出力端末5は、演奏パートの割り当て運動強度を基準として所定強度の範囲に含まれる運動強度に対応する運動テンポ範囲を特定する。そして、出力端末5は、特定した運動テンポ範囲内において、所定強度の範囲に含まれる運動強度の運動動作が可能な部品IDを検索してもよい。この場合、利用者41は、割り当て運動強度に近い運動強度で運動動作を実行することができる。また、出力端末5は、例えば演奏パートの割り当て運動強度よりも所定強度低い運動強度に対応する運動テンポ範囲を特定してもよい。そして、出力端末5は、特定した運動テンポ範囲内において、所定強度低い運動強度の運動動作が可能な部品IDを検索してもよい。この場合、運動強度が割り当て強度よりも低くなるので、利用者41は、より安全に運動動作を行うことができる。
割り当て運動強度を基準とする運動強度の範囲を定義するため、例えば出力端末5のHDD7に運動強度範囲情報が予め登録されてもよい。図3(D)は、運動強度範囲情報の構成例を示す図である。図3(D)に示すように、運動強度範囲情報は、オフセットβ及びγを含む。オフセットβは、割り当て運動強度と運動強度の範囲における上限値との差を示す。オフセットγは、割り当て運動強度と運動強度の範囲における下限値との差を示す。従って、運動強度の範囲は、割り当て運動強度−オフセットγから、割り当て運動強度+オフセットβまでの範囲となる。オフセットβ及びγはそれぞれ0以上の範囲で設定可能である。
例えば、運動強度が1から4まであるとする。また、オフセットβ及びγがそれぞれ1に設定されているとする。この条件において、割り当て運動強度が1である場合、運動強度の範囲は運動強度1から運動強度2までである。割り当て運動強度が2である場合、運動強度の範囲は運動強度1から運動強度3までである。割り当て運動強度が3である場合、運動強度の範囲は運動強度2から運動強度4までである。割り当て運動強度が4である場合、運動強度の範囲は運動強度3から運動強度4までである。
出力端末5は、運動強度範囲情報に基づいて、楽曲に対応した運動強度検索順番リストを生成する。運動強度検索順番リストは、楽曲を構成する演奏パートについて、検索する部品IDの運動強度の順番を示す情報である。出力端末5は、例えば演奏パートごとに運動強度検索順番リストを生成する。図4(I)は、運動強度検索順番リストの構成例を示す図である。図4(I)は、各演奏パートに対して図4(A)に示すように割り当て運動強度が設定されている場合の運動強度検索順番リストの例である。また、運動強度が1から4まであり、オフセットβ及びγがそれぞれ1である場合の例である。図4(I)に示すように、運動強度検索順番リストには、演奏パートの演奏パートIDに対応付けて、複数の運動強度が格納される。運動強度検索順番リストの各行が順番に対応する。具体的に、出力端末5は、1番目の行に、演奏パートの割り当て運動強度を格納する。出力端末5は、2番目以降の行に、割り当て運動強度と異なる運動強度であって、割り当て運動強度を基準とした運動強度の範囲に含まれる各運動強度を格納する。
例えば、割り当て運動強度が2である演奏パートについて、1番目の行に運動強度2が格納される。そして、2番目の行に例えば運動強度1が格納され、3番目の行に運動強度3が格納される。この場合、出力端末5は、最初に運動強度2で運動動作が実行可能な部品IDを検索する。運動強度2で運動動作が実行可能な部品IDがない場合、出力端末5は、運動強度1で運動動作が実行可能な部品IDを検索する。運動強度1で運動動作が実行可能な部品IDがない場合、出力端末5は、運動強度3で運動動作が実行可能な部品IDを検索する。出力端末5は、運動強度検索順番リストの2番目以降の行に運動強度を格納するとき、運動強度が低い順に運動強度を格納してもよい。これにより、出力端末5は、利用者41がより安全に実行することができる運動動作を優先的に検索することができる。
また例えば、オフセットβが0に設定され、且つ、オフセットγが1以上の値に設定されたとする。この場合、出力端末5は、割り当て運動強度で運動動作が実行可能な部品IDがない場合、割り当て運動強度よりも所定強度低い運動強度で運動動作が可能な部品IDのみを検索することができる。
図7は、出力端末5のCPU51の部品リスト生成処理の処理例を示すフローチャートである。図7において、図6と同様の処理については同様の符号が付されている。図7に示すように、CPU51は、ステップS1及びS3を実行する。ステップS3において、CPU51は、演奏順Nの演奏パートと演奏パート種別が同一である演奏パートが出現済みではないと判定した場合には(ステップS3:NO)、ステップS31に進む。ステップS31において、CPU51は、演奏順Nの演奏パートの運動強度検索順番リストを生成する。具体的に、CPU51は、HDD7に記憶された運動強度範囲情報から、オフセットβ及びγを取得する。次いで、CPU51は、選択情報取得処理で取得された運動強度設定情報から、演奏順Nの演奏パートの割り当て運動強度を取得する。次いで、CPU51は、割り当て運動強度−γから割り当て運動強度+βまでの範囲内にある全ての運動強度を格納する運動強度検索順番リストを生成する。このとき、CPU51は、割り当て運動強度を運動強度検索順番リストの1行目に格納し、割り当て運動強度以外の運動強度を運動強度検索順番リストの2行目以降に格納する。
次いで、CPU51は、演奏順Nの演奏パートの運動強度検索順番リストの行数を行数Sとして設定する(ステップS32)。次いで、CPU51は、検索の順番Tを1に設定する(ステップS33)。次いで、CPU51は、演奏順Nの演奏パートの運動強度検索順番リストから、T番目の行に格納されている運動強度を、運動強度αとして取得する(ステップS34)。次いで、CPU51は、ステップS5を実行する。このとき、CPU51は、運動強度検索順番リストから取得した運動強度αに対応する運動テンポ範囲を部品テーブルから特定する。そして、CPU51は、特定した運動テンポ範囲に対応する部品IDのうち、楽曲のオリジナルのテンポが運動テンポ範囲内である部品IDを検索する。次いで、CPU51は、順番Tに1を加算する(ステップS35)。次いで、CPU51は、ステップS6〜11を実行する。ステップS11において、CPU51は、該当する部品IDが検索されていないと判定した場合には(ステップS11:NO)、ステップS36に進む。ステップS36において、CPU51は、順番Tが行数S以下であるか否かを判定する。このとき、CPU51は、順番Tが行数S以下であると判定した場合には(ステップS36:YES)。ステップS34に進む。一方、CPU51は、順番Tが行数S以下ではないと判定した場合には(ステップS36:NO)、部品リスト生成処理を終了させる。ステップS11において、CPU51は、該当する部品IDが検索されたと判定した場合には(ステップS11:YES)、ステップS15、S23〜26を実行する。
なお、上記実施形態において、出力端末5は、演奏順が1番目の演奏パートに割り当て可能な部品IDを最初に検索していた。しかしながら、出力端末5は、演奏順が1番目の演奏パートとは異なる演奏パートに割り当て可能な部品IDを最初に検索してもよい。その後、出力端末5は、割り当て可能な部品IDが検索された演奏パートの次の演奏順の演奏パートから演奏順に、割り当て可能な部品IDを検索してもよい。
また、上記実施形態においては、本発明の情報処理装置が出力端末5に適用されていた。しかしながら、本発明の情報処理装置が配信サーバ2に適用されてもよい。例えば、配信サーバ2が、部品リストや運動情報を生成してもよい。また、配信サーバ2が、運動情報に基づいて、音声データ及び動画データを生成してもよい。この場合の音声データは、楽曲等を出力するためのデータである。また、動画データは、運動映像等を表示するためのデータである。運動レッスンが行われるとき、配信サーバ2は、音声データ及び動画データを、例えばストリーミング方式で出力端末5に送信する。これにより、配信サーバ2は、出力端末5により楽曲を出力させ、且つ、運動映像を表示させる。また、本発明の情報処理装置が出力端末5及び配信サーバ2に適用されてもよい。そして、出力端末5及び配信サーバ2は協働して処理を行ってもよい。