以下、本発明の実施形態を図面に基づいて説明する。なお、以下に説明する実施の形態は、運動を支援するための運動コンテンツを生成する運動コンテンツ生成システムに本発明を適用した場合の実施形態である。運動コンテンツは、運動を支援するための映像及び音声を含む。
[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と接続可能である。スピーカ64は、本発明の出力手段の一例である。出力端末5がモニタ57へ音声信号を出力することにより、スピーカ64により楽曲等が出力される。出力端末5がモニタ57へ映像信号を出力することにより、ディスプレイ67に運動映像等が表示される。運動映像は、動作を行うフィギュア83を映し出した動画である。フィギュア83は、例えば、人、動物、仮想上の生き物、ロボット等のかたちをした仮想物である。フィギュア83は、三次元仮想空間に配置される。出力端末5は、スピーカ64から出力される楽曲と、ディスプレイ67に表示されるフィギュア83の動きとが同期するように、信号を出力する。楽曲と運動映像とを出力することは、運動コンテンツを出力することの一例である。利用者41は、楽曲を聴きながら、ディスプレイ67に表示されるフィギュア83を見て、運動を行うことができる。操作者42は、リモコン66等を用いて出力端末5を操作することができる。利用者41と操作者42とは同一人物であってもよい。施設4がスポーツ施設である場合、操作者42は、例えば、インストラクターであってもよい。
[2.演奏パートに対する運動動作の割り当て]
運動レッスンが行われるときにモニタ57が出力する運動コンテンツは、楽曲と運動映像とを含む。楽曲は、複数の演奏パートで構成される。スピーカ64から、楽曲の構成に従った演奏パートの順で楽曲が出力される。演奏パートが出力される順序を演奏順という。各演奏パートは、例えば、前奏、Aメロ、Bメロ、サビ、間奏又は後奏等であってもよい。なお、1つの運動レッスンで複数の楽曲が順次スピーカ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へ運動動作が自然に繋がる。
[3.運動強度の切り替え]
本実施形態において、出力端末5は、利用者41が運動レッスンで運動を行っている途中で、運動強度を切り替えることを可能とする。運動強度とは、例えば、運動動作を行う利用者41の身体にかかる負担の大きさ、運動動作の激しさ等を示す。運動強度が高いほど、身体にかかる負担が大きくなり、又は、運動動作の激しくなる。運動強度が高い運動動作であるほど、その運動動作を行う利用者41の心拍数が高くなる傾向がある。各部品IDの属性として、部品IDに対応する運動動作の運動強度が定義されている。運動強度の切り替えを可能とするため、出力端末5は、部品リストを生成するとき、楽曲を構成する各演奏パートに対して、運動強度が互いに異なる複数の部品IDを割り当てる。
運動強度を切り替えるタイミングは、例えば、演奏パートが切り替わるタイミングであってもよい。出力端末5が演奏パートに割り当てる部品IDを決定するとき、運動動作の繋がりを考慮しないと、運動強度を切り替えた場合に運動動作の繋がりに違和感のある運動コンテンツが生成されてしまう。例えば、運動強度として、弱レベルと強レベルがあるとする。例えば、演奏パート1に弱レベルの運動動作Dの部品IDが割り当てられ、演奏パート2に弱レベルの運動動作Eの部品IDが割り当てられるとする。ここで、運動強度の切り替えがないと仮定すれば、運動動作Dの後ろ繋ぎ属性と運動動作Eの前繋ぎ属性とが一致すればよい。しかしながら、演奏パート2には、運動動作Eに加えて、強レベルの運動動作Fの部品IDが割り当てられるとする。このとき、運動動作Dの後ろ繋ぎ属性と運動動作Fの前繋ぎ属性とが一致しないとする。演奏パート1から演奏パート2に切り替わるときに、運動強度が弱レベルから強レベルに切り替えられた場合、運動動作が運動動作Dが運動動作Fに切り替わる。この場合、運動動作が自然に繋がらない。
そこで、出力端末5は、最初に、楽曲を構成する各演奏パートに割り当てる部品IDとして、複数の運動強度のうち所定の運動強度の部品IDを決定する。このとき、出力端末5は、前の演奏パートに割り当てられる部品IDの後繋ぎ属性と一致する前繋ぎ属性を有する部品IDを、次の演奏パートに割り当てる部品IDに決定する。次に、出力端末5は、各演奏パートに割り当てる部品IDとして、複数の運動強度のうち所定の運動強度と異なる運動強度の部品IDを決定する。このとき、出力端末5は、前の演奏パートに割り当てられる部品IDのうち所定の運動強度の部品IDの後繋ぎ属性と一致する前繋ぎ属性を有する部品IDを、次の演奏パートに割り当てる部品IDに決定する。これにより、或る演奏パートに割り当てられる複数の部品IDの後繋ぎ属性と、或る演奏パートの次の演奏パートに割り当てられる複数の部品IDの前繋ぎ属性とが一致する。そのため、運動強度が切り替えられた場合でも、運動動作の繋がりが自然になるように、各演奏パートに運動動作を自動的に割り当てることができる。
[4.部品IDの割り当て、部品リストの生成の詳細]
次に、部品IDの割り当て及び部品リストの生成に用いられる情報について説明する。部品リストを生成するため、出力端末5のHDD(ハードディスクドライブ)7には、部品テーブル、繋ぎ動作テーブル、運動ジャンルテーブル等が記憶される。図3(A)は、部品テーブルの構成例を示す図である。部品テーブルは、部品の属性及び繋ぎ属性等を定義するテーブル情報である。部品テーブルには、部品ID、部品名、演奏パート種別、拍数、運動テンポ、前繋ぎ属性ID、後繋ぎ属性ID、ジャンルID、モーションID、運動強度等が、部品IDごとに格納される。
部品IDは、モーションデータを識別可能な識別情報である。部品名は、モーションデータが示す運動動作の名称である。演奏パート種別は、部品IDを割り当て可能な演奏パートの種類である。演奏パート種別は、本発明のパート情報の一例である。図3(A)では、演奏パート種別として例えばptype1〜5等が格納される。例えば、ptype1は前奏、ptype2はAメロ+サビ、ptype3は間奏、ptype4はAメロ+Bメロ、ptype5は後奏であってもよい。拍数は、運動動作の長さを示す。
運動テンポは、運動動作を行うテンポである。例えば、運動テンポは予め複数定められている。例えば、所定の拍数の間隔で運動テンポが定められてもよい。図3(A)の例では、128BPMに対応するモーションデータ、140BPMに対応するモーションデータ等が登録されていることが、部品テーブルにより示されている。複数の運動テンポのうち何れかの運動テンポでフィギュア83が運動動作する映像が表示されるように、各モーションデータは予め作成される。データベース3には、複数の運動テンポのそれぞれに対応するモーションデータが演奏パート種別ごとに登録される。部品テーブルには、モーションデータに対応する運動テンポが格納される。部品テーブルに格納されるテンポは、本発明における第2テンポ情報の一例である。
前繋ぎ属性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のうち何れか一方のみが格納されてもよい。
運動強度は、対応するモーションIDが示す運動動作の運動強度である。図3(A)の例では、運動強度として、強レベル、中レベル、弱レベルの何れかが格納される。強レベルは、本発明の第3強度情報の一例であり、中レベルは、本発明の第2強度情報の一例であり、弱レベルは、本発明の第4強度情報の一例である。本実施形態においては、運動強度は3段階あるが、2段階であってもよいし、4段階以上であってもよい。
次に、図3(A)に示す部品テーブルを用いた場合の部品リストの生成方法について説明する。図4(A)は、楽曲の構成例を示す図である。図4(A)に示すように、楽曲Xは演奏パート1〜8で構成されている。出力端末5は、楽曲のテンポに基づいて、運動コンテンツを再生するときの運動テンポを決定する。楽曲は運動テンポに従って出力され、ディスプレイ67には、運動テンポに従って運動動作するフィギュア83が表示される。上述したように、予め定められた複数の運動テンポのそれぞれに対応するモーションデータが登録されている。出力端末5は、複数の運動テンポのうち楽曲のテンポに最も近いテンポを、運動コンテンツの再生に用いる運動テンポに決定する。例えば16BPMの倍数で運動テンポが定義されており、楽曲Xのテンポが125BPMであるとする。この場合、128BPMが、運動コンテンツの再生に用いられる運動テンポとして決定される。また、運動ジャンルが決定される。例えば、操作者42が運動ジャンルを選択してもよいし、出力端末5が運動ジャンルを決定してもよい。運動ジャンルとして、例えば有酸素運動が選択されたとする。出力端末5は、例えば、中レベルの運動強度から、各演奏パートに割り当てる部品IDを検索する。
図4(B)〜図4(G)は、部品リスト表の更新過程の一例を示す図である。部品リスト表は、生成中の部品リストを1又は複数格納するテーブル情報である。部品リスト表の各行の情報が部品リストに相当する。部品リスト表の各列は演奏パートに対応する。出力端末5は、部品テーブルから、演奏パート1の属性及び楽曲Xの属性に一致する属性に対応する部品IDを検索する。部品テーブルから部品IDを検索することは、部品IDが示すモーションデータをHDD7から検索することである。演奏パートの属性は演奏パート種別及び拍数であり、演奏パート1の演奏パート種別及び拍数は、ptype1及び32拍である。また、楽曲の属性はテンポ及び運動ジャンルであり、楽曲Xのテンポ及び運動ジャンルは、128BPM及び有酸素運動である。従って、出力端末5は、部品テーブルから、ptype1、32拍、128BPM、有酸素運動に対応する部品IDであって、且つ運動強度が中レベルに対応する部品IDを、割り当て候補の部品IDとして検索する。部品テーブルにおいて、運動動作1−1b及び1−2bの部品IDが、ptype1、32拍、128BPM、有酸素運動及び中レベルに対応する。出力端末5は、部品リスト表の1及び2行目の1番目の列に、運動動作1−1b及び1−2bの部品IDを格納した部品リスト表を生成する。
演奏パート2の演奏パート種別及び拍数は、ptype2及び64拍である。従って、出力端末5は、部品テーブルから、ptype2、64拍、128BPM、有酸素運動及び中レベルに対応する部品IDを割り当て候補の部品IDとして検索する。部品テーブルにおいて、運動動作2−1b〜2−3b、2−5b、2−6bの部品IDが、ptype2、64拍、128BPM、有酸素運動及び中レベルに対応する。このとき、出力端末5は、運動動作1−1b及び1−2bの後繋ぎ属性IDと一致する前繋ぎ属性IDに対応する部品IDを、それぞれ部品テーブルから検索する。運動動作1−1bの後繋ぎ属性IDと、運動動作2−1bの前繋ぎ属性IDが一致する。そこで、出力端末5は、部品リスト表の1番目の行の2番目の列に、運動動作2−1bの部品IDを格納する。運動動作1−2bの後繋ぎ属性IDと、運動動作2−2bの前繋ぎ属性IDが一致する。そこで、出力端末5は、部品リスト表の2番目の行の2番目の列に、運動動作2−2bの部品IDを格納する。すると、図4(B)に示すように部品リスト表が更新される。
演奏パート3の演奏パート種別及び拍数は、ptype3及び32拍である。従って、出力端末5は、部品テーブルから、ptype3、32拍、128BPM、有酸素運動及び中レベルに対応する部品IDを割り当て候補の部品IDとして検索する。運動動作3−1b及び3−2bの部品IDが、ptype3、32拍、128BPM、有酸素運動及び中レベルに対応する。このとき、出力端末5は、運動動作2−1b及び2−2bの後繋ぎ属性IDと一致する前繋ぎ属性IDに対応する部品IDを、それぞれ部品テーブルから検索する。運動動作2−1bの後繋ぎ属性IDと、運動動作3−2bの前繋ぎ属性IDが一致する。そこで、出力端末5は、1番の行の3番目の列に、運動動作3−2bの部品IDを格納する。運動動作1−2bの後繋ぎ属性IDは、運動動作2−1b及び2−2bの何れの前繋ぎ属性IDとも一致しない。そこで、出力端末5は、部品リスト表から2番目の行を削除する。すると、図4(C)に示すように部品リスト表が更新される。このときの部品リスト表の行数は1行となる。
演奏パート4の演奏パート種別及び拍数は、ptype4及び32拍である。従って、出力端末5は、部品テーブルから、ptype4、32拍、128BPM、有酸素運動及び中レベルに対応する部品IDを検索する。運動動作4−1bの部品IDが、ptype4、32拍、128BPM、有酸素運動及び中レベルに対応する。このとき、出力端末5は、運動動作3−2bの後繋ぎ属性IDと一致する前繋ぎ属性IDに対応する部品IDを部品テーブルから検索する。運動動作3−2bの後繋ぎ属性IDと、運動動作4−1bの前繋ぎ属性IDは一致しない。その結果、演奏パート4の割り当て候補が存在しないことになる。この場合、出力端末5は、演奏パート種別の条件を、演奏パート4の割り当て候補の条件から除外して、部品IDを検索する。すなわち、出力端末5は、部品テーブルから、32拍、128BPM、有酸素運動及び中レベルに対応する部品IDであって、前繋ぎ属性IDが運動動作3−2bの後繋ぎ属性IDと一致する部品IDを検索する。運動動作3−2b及び運動動作2−4bが、32拍、128BPM、有酸素運動及び中レベルに対応し、運動動作3−2b及び運動動作2−4bの前繋ぎ属性IDが、運動動作3−2bの後繋ぎ属性IDと一致する。そこで、出力端末5は、運動動作1−1b、2−1b及び3−2bの部品IDを格納する行を部品リスト表に1つ追加する。出力端末5は、部品リスト表の1番目の行の4番目の列に、運動動作3−2bの部品IDを格納し、2番目の行の4番目の列に、運動動作2−4bの部品IDを格納する。すると、図4(D)に示すように部品リスト表が更新される。このときの部品リスト表の行数は2行となる。
出力端末5は、演奏パート5〜8についても、これまでに説明した方法と同様の方法で、部品リスト表を更新する。これにより、図4(E)〜図4(G)に示すように部品リスト表が更新されていく。こうして、楽曲Xを構成する複数の演奏パートに合う複数の運動動作として、運動強度が中レベルである運動動作を示す部品リストが生成される。このときの部品リストに含まれる各部品IDは、中レベルの運動強度に対応付けられている。図4(G)に示す部品リスト表の行数は1行である。従って、1つの部品リストが生成されたことになる。部品リスト表の行数が複数行である場合、複数の部品リストが生成されたことになる。この場合、例えば、運動コンテンツの再生に用いる部品リストをユーザが選択してもよいし、出力端末5が自動的に決定してもよい。
次に、出力端末5は、弱レベル及び強レベルの運動強度について、各演奏パートに割り当てる部品IDを検索する。このとき、出力端末5は、或る演奏パートに割り当てられた中レベルの部品IDの前繋ぎ属性ID及び後繋ぎ属性IDと一致する前繋ぎ属性ID及び後繋ぎ属性IDに対応する部品IDを、その演奏パートの割り当て候補として検索する。例えば、出力端末5は、演奏パート1の割り当て候補として、動作1−1bの部品IDの前繋ぎ属性IDと一致する前繋ぎ属性IDに対応する部品IDを検索する。また、出力端末5は、演奏パート2の割り当て候補として、動作2−1bの部品IDの前繋ぎ属性及び後繋ぎ属性IDと一致する前繋ぎ属性及び後繋ぎ属性IDに対応する部品IDを検索する。
このような条件で部品IDを検索するため、出力端末5は、割り当て候補を検索することができない場合がある。その場合、割り当て候補となる条件を緩和する必要がある。割り当て候補となる条件として、前繋ぎ属性ID、後繋ぎ属性ID、運動テンポ、演奏パート種別、運動強度、出現済みか否か等がある。出現済みとは、これまでに割り当て候補として検索された部品IDの中に、部品IDが含まれていることを示す。これらの条件の中でどの条件が優先するかが、例えば予め定められている。
図5は、割り当て候補の条件と優先度との関係の一例を示す図である。図5において、丸印は、条件を満たすことを示し、ばつ印は、条件を満たさないことを示す。前述の条件の中で、運動強度が最も優先される。その理由は、弱レベル又は強レベルの部品IDを確実に検索するためである。部品IDの運動強度が弱レベル又は強レベルである場合、運動強度の条件を満たす。運動強度は、割り当て候補の条件から除外されない。次に、前繋ぎ属性ID及び後繋ぎ属性IDが優先される。その理由は、運度動作を自然に繋げるためである。部品IDの前繋ぎ属性IDが、前の演奏パートに割り当てられた部品IDの後繋ぎ属性と一致する場合、前繋ぎ属性IDの条件を満たす。部品IDの後繋ぎ属性IDが、次の演奏パートに割り当てられた部品IDの前繋ぎ属性IDと一致する場合、後繋ぎ属性IDの条件を満たす。図5では、前繋ぎ属性IDの条件の方が後繋ぎ属性IDの条件よりも優先されている。しかしながら、後繋ぎ属性IDの条件の方が前繋ぎ属性IDの条件よりも優先されてもよい。次に、運動テンポが優先される。その理由は、各演奏パートに、弱レベルの運動強度の部品ID及び強レベルの運動強度の部品IDをそれぞれ確実に割り当てるためである。同じ運動動作であっても、運動テンポが速くなるほど運動強度が高くなる。例えば、図3(A)に示すように、運動動作1−1aの運動テンポは128BPMであり、運動強度は弱レベルである。これは、128BPMで利用者41が運動動作1−1bを実行した場合、運動強度が弱レベルになることを示す。運動テンポが128BPMより或る程度以上速くなると、利用者41が運動動作1−1bを実行した場合、運動強度が中レベル又は強レベルになる。運動動作1−1cの運動テンポは128BPMであり、運動強度は強レベルである。これは、128BPMで利用者41が運動動作1−1cを実行した場合、運動強度が強レベルになることを示す。運動テンポが128BPMより或る程度以上遅くなると、利用者41が運動動作1−1cを実行した場合、運動強度が中レベル又は弱レベルになる。次に、演奏パート種別が優先される。演奏パート種別よりも運動テンポが優先される理由は、部品IDの演奏パート種別が、演奏パートの演奏パート種別と一致しなくても、部品IDに対応する運動強度で運動動作を行うことができるからである。部品IDが、前繋ぎ属性ID、後繋ぎ属性ID、運動テンポ及び演奏パート種別の少なくとも何れかの条件を満たす場合、出現済みか否かは問われない。部品IDがこれらの条件の何れも満たさない場合、出現済みではない部品IDが優先される。
出力端末5は、運動強度が弱レベルである部品IDを検索する。そして、出力端末5は、検索された各部品IDに対して、優先度を決定するためのスコアを計算する。スコアが高いほど、優先度が高い。例えば、前繋ぎ属性IDの条件を満たす場合、スコアに9が加算される。後繋ぎ属性IDの条件を満たす場合、スコアに8が加算される。運動テンポの条件を満たす場合、スコアに4が加算される。演奏パート種別の条件を満たす場合、スコアに2が加算される。出力端末5は、スコアが最も高い部品IDを、演奏パートに割り当てる部品IDとして決定する。出力端末5は、決定した部品IDを、演奏パートのパートID及び弱レベルの運動強度に対応付けて、生成された部品リスト中に追加する。また、出力端末5は、強レベルについても同様に処理する。これにより、出力端末5は、各演奏パートについて、弱レベル、中レベル、強レベルのそれぞれに対応付けられた部品IDを含む部品リストを最終的に生成する。図4(H)は、最終的な部品リストの構成例を示す図である。なお、出力端末5は、弱レベル及び強レベルのうち何れかの一方の運動強度のみについて、部品IDを検索してもよい。そして、出力端末5は、中レベルに対応付けられた部品IDと、弱レベル又は強レベルに対応付けられた部品IDとを含む部品リストを生成してもよい。
[5.運動強度の切り替えの詳細]
運動レッスンにおいて、出力端末5は、運動強度に応じた運動動作の運動映像をディスプレイ67に表示させる。楽曲の再生の開始時、出力端末5は、例えば弱レベルの部品IDに対応する運動動作の運動映像を表示させてもよい。そして、出力端末5は、所定の条件に基づいて、運動強度を切り替える。そして、出力端末5は、切り替えた運動強度の部品IDに対応する運動動作の運動映像を表示させる。例えば、出力端末5は、運動を行っている利用者41の心拍数に基づいて、運動強度を切り替えてもよい。例えば、利用者41は、心拍数測定器68を装着する。出力端末5は、心拍数測定器68から、心拍数を示す心拍数情報を受信する。出力端末5は、適性心拍数範囲を決定する。適性心拍数範囲は、運動している利用者41に適した心拍数の範囲である。例えば、出力端末5は、利用者41の年齢、運動の目的に応じて、適性心拍数範囲を決定してもよい。利用者41の心拍数が、適性心拍数範囲内である場合、出力端末5は運動強度を切り替えない。利用者41の心拍数が適性心拍数範囲よりも低い場合、出力端末5は、運動強度を、現在の運動強度よりも高い運動強度に切り替える。利用者41の心拍数が適性心拍数範囲よりも高い場合、出力端末5は、運動強度を、現在の運動強度よりも低い運動強度に切り替える。出力端末5は、或る演奏順の演奏パートが出力されているときの心拍数に基づいて、次の演奏順の演奏パートにおける運動強度を決定する。例えば、出力端末5は、演奏パートが出力されている期間の中で所定のタイミングで取得された心拍数を用いてもよい。また、出力端末5は、例えば演奏パートが出力されている期間の中で所定の期間の心拍数を用いてもよい。
ところで、出力端末5は、1回の運動レッスンにおいて、複数の楽曲を順次スピーカ64から出力させて、各楽曲に応じた運動映像をディスプレイ67に表示させることができる。このときに、或る楽曲の出力が終了した後、次の演奏順の楽曲の出力を開始する前に、休憩時間を入れるか否かを利用者41が指定可能になっていてもよい。例えば、出力端末5を操作することにより、利用者41は、運動レッスンを構成する複数の楽曲、楽曲の演奏順、楽曲間に運動の休憩時間を入れるか否か等を指定することができる。休憩時間の間、出力端末5は、例えば休憩曲をスピーカ64により出力さてもよい。休憩曲は、予め定められた休憩用の楽曲である。休憩曲は、例えば1つの演奏パートで構成される。休憩曲が出力されているとき、出力端末5は、例えばフィギュア83が休憩している動作をしている運動映像をディスプレイ67に表示させてもよい。また、出力端末5は、運動レッスンの最後に、終了曲をスピーカ64により出力さてもよい。終了曲は、運動レッスンの修了を示す予め定められた楽曲である。終了曲は、例えば1つの演奏パートで構成される。終了曲が出力されているとき、出力端末5は、例えばフィギュア83が深呼吸等の動作をしている運動映像をディスプレイ67に表示させてもよい。
出力端末5は、或る演奏順の楽曲と次の演奏順の楽曲との間に休憩時間があるか否かに応じて、運動強度を制御する。具体的に、休憩時間がない場合、出力端末5は、前の演奏順の最後の演奏パートが出力されているときの心拍数に基づいて、次の演奏順の最初の演奏パートが出力されるときの運動強度を決定する。一方、休憩時間がある場合、出力端末5は、次の演奏順の最初の演奏パートが出力されるときの運動強度を弱レベルに決定する。その理由は、休憩時間の間に、利用者41の心拍数が運動していないときの心拍数に戻るからである。次の楽曲の出力が開始されるとき、運動強度が低い方が、利用者41の体に急な負担がかからない。出力端末5は、例えば楽曲リストに基づいて、休憩時間があるか否かを判定することができる。楽曲リストは、複数の楽曲の演奏順を示すとともに、楽曲間に休憩時間が有るか否かを示す情報である。楽曲リストは、本発明の順序リストの一例である。例えば、楽曲リストには、演奏順と楽曲IDとが対応付けて複数格納される。楽曲IDは、楽曲を識別可能な識別情報である。例えば、出力端末5は、次の演奏順の楽曲IDが休憩曲の楽曲IDである場合、休憩時間があると判定する。出力端末5は、例えば利用者41の操作に基づいて、楽曲リストを生成する。
なお、楽曲間に限らず、楽曲に含まれる演奏パートと演奏パートの間に、休憩時間を入れるか否かを指定可能になっていてもよい。そして、出力端末5は、演奏パートごとに、休憩時間があるか否かを判定してもよい。この場合、楽曲リストは、例えば複数の演奏パートの演奏順を示すとともに、演奏パート間に休憩時間が有るか否かを示す。例えば、楽曲リストには、演奏順と楽曲ID及び演奏パートIDとが対応付けて複数格納される。なお、例えば、運動レッスンの間に、利用者41がリモコン66等により運動強度を選択してもよい。そして、出力端末5は、利用者41が選択した運動強度に切り替えてもよい。
[6.各装置の構成]
次に、図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には、楽曲データ、モーションデータ、部品テーブル、繋ぎ動作テーブル、運動ジャンルテーブル等のデータが登録されている。楽曲データは、スピーカ64により楽曲を出力するための演奏データである。楽曲データは、例えば、MIDI(Musical Instrument Digital Interface)形式のデータであってもよい。楽曲データは、楽曲ID、楽曲名、アーティスト名、オリジナルのテンポ、楽曲の演奏パートの構成等の情報を含む。楽曲IDは、楽曲の識別情報である。オリジナルのテンポは、本発明における第1テンポ情報の一例である。また、楽曲データは、演奏パートの切り替わりのタイミング等を規定する。例えば、楽曲データがMIDI形式のデータである場合、楽曲データには、実際の演奏データとしてのMIDIイベントに加えて、メタイベントを含めることができる。メタイベントとしては、例えば、演奏パート開始イベント等がある。演奏パート開始イベントは、演奏パートの演奏開始を通知するイベントである。演奏パート開始イベントは、演奏パートのパートID、演奏パート種別、拍数等を含む。楽曲データは、本発明における楽曲情報の一例である。モーションデータは、モーションIDと対応付けて登録される。また、休憩曲に対応するモーションデータが、モーションID及び休憩曲の楽曲IDに対応付けて記憶される。また、終了曲に対応するモーションデータが、モーションID及び終了曲の楽曲IDに対応付けて記憶される。なお、モーションデータは、例えば部品IDと対応付けて登録されてもよい。
[6−2.出力端末5の構成]
図1に示すように、出力端末5は、CPU51、ROM52、RAM53、バス54、I/Oインタフェイス55、表示制御部56、ディスクドライブ58、ネットワーク通信部60、音声出力部63、信号受信部65、心拍数情報受信部69及び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を操作するためのものである。心拍数情報受信部69は、心拍数測定器68から送信される心拍数情報を受信する。
HDD7は、本発明の第1記憶手段及び第2記憶手段の一例である。なお、第1記憶手段及び第2記憶手段が同一の記憶デバイスであってもよいし、互いに異なる記憶デバイスであってもよい。HDD7には、配信サーバ2から配信された楽曲データ、モーションデータ、部品テーブル、繋ぎ動作テーブル、運動ジャンルテーブル等のデータが記憶される。また、HDD7には、生成された部品リスト及び楽曲リストが記憶される。
HDD7には、更に、OS、運動支援プログラム、3Dエンジン、ミュージックシーケンサ等の各種プログラム等が記憶されている。運動支援プログラムは、利用者41の運動を支援するためのプログラムである。運動支援プログラムは、コンピュータとしてのCPU51に、第1検索ステップ、第2検索ステップ、及び生成ステップを少なくとも実行させる。3Dエンジンは、モーションデータに基づいて、三次元仮想空間で運動動作するフィギュア83を二次元平面に投影した画像を生成するためのプログラムである。画像を生成する処理は、射影変換、クリッピング、隠面消去、シェーディング、テクスチャマッピング等を含む。CPU51は、3Dエンジンを実行して、静止画像を順次生成する。生成された静止画像をCPU51が表示制御部56へ順次出力することで、ディスプレイ67には、運動映像が表示される。
ミュージックシーケンサは、楽曲データを再生するためのプログラムである。CPU51は、ミュージックシーケンサを実行することにより、楽曲データに対応する音声信号を生成する。また、CPU51は、ミュージックシーケンサを実行することにより、各種のイベントを発生させる。イベントとして、例えば、テンポに応じて所定時間間隔で発生するイベントがある。このイベントは、MIDIクロックや同期イベントと呼ばれる。また、イベントとして、例えば、演奏パート開始イベントがある。
各種プログラムは、例えば、配信サーバ2等のサーバからネットワーク10を介してダウンロードされるようにしてもよい。また、各種プログラムは、記録媒体59に記録されてディスクドライブ58を介して読み込まれるようにしてもよい。なお、3Dエンジンやミュージックシーケンサは、プログラムではなく、専用のハードウェアであってもよい。そして、出力端末5は、ハードウェアとしての3Dエンジンやミュージックシーケンサを備えてもよい。
CPU51は、設定されたテンポに従って、楽曲データに対応する音声信号を音声出力部63へ出力させるとともに、生成した画像に対応する映像信号を表示制御部56から出力させる。CPU51は、同期イベントに基づいて、楽曲の音声信号の出力タイミングと運動映像の映像信号の出力タイミングとを同期させる。これにより、スピーカ64から出力される楽曲に同期して運動動作を行うフィギュア83がディスプレイ67に表示される。
[7.運動コンテンツ生成システム1の動作]
次に、図6乃至図9を参照して、運動コンテンツ生成システム1の動作を説明する。例えば、操作者42が、リモコン66等により、運動レッスンを開始させるための操作を行う。操作者42は、例えば利用者41であってもよい。すると、CPU51は、部品リスト及び楽曲リストを生成し、部品リスト及び楽曲リストに基づいて運動コンテンツを再生する。先ず、CPU51は、部品リストを生成するための前処理として、選択情報取得処理を実行する。選択情報取得処理において、CPU51は、部品リストの生成に必要な情報を取得する。選択情報取得処理のフローチャートの図示は省略する。具体的に選択情報取得処理において、CPU51は、運動レッスンに用いる楽曲を決定する。例えば、操作者42が楽曲を選択して、CPU51が、操作者42により入力された選択結果を受け付けてもよい。CPU51は、決定された楽曲の楽曲IDを取得する。また、CPU51は、決定された楽曲の楽曲データから、楽曲のオリジナルのテンポと、楽曲を構成する各演奏パートの演奏パート開始イベントとを取得する。また、CPU51は、楽曲IDに対応する運動強度設定情報をHDD7から取得する。次いで、CPU51は、運動コンテンツの再生に用いる運動テンポを決定する。例えば、複数の運動テンポがHDD7に記憶されているとする。CPU51は、HDD7から各運動テンポを取得する。CPU51は、取得した運動テンポごとに、運動テンポと楽曲のオリジナルのテンポとの差を計算する。そして、CPU51は、差が最も小さい運動テンポを、運動コンテンツの再生に用いる運動テンポに決定する。次いで、CPU51は、運動ジャンルを決定する。例えば、操作者42が運動ジャンルを選択して、CPU51が選択結果を受け付けてもよい。
選択情報取得処理が終了すると、CPU51は、部品リスト生成処理を実行する。部品リスト生成処理において、CPU51は、運動強度が中レベルの部品IDの中から、決定された楽曲の各演奏パートに割り当てる部品IDを検索する。そして、CPU51は、部品リストを生成する。図6(A)は、出力端末5のCPU51の部品リスト生成処理の処理例を示すフローチャートである。図6(A)に示すように、CPU51は、演奏順Nを1に設定する(ステップS1)。次いで、CPU51は、決定された運動ジャンル、演奏順Nの演奏パートの拍数及び決定された運動テンポ、及び中レベルの運動強度に一致する運動ジャンル、拍数、テンポ及び運動強度に対応する部品IDを、部品テーブルから検索する(ステップS2)。次いで、CPU51は、演奏順Nが1よりも大きいか否かを判定する(ステップS3)。このとき、CPU51は、演奏順Nが1よりも大きいと判定した場合には(ステップS3:YES)、ステップS5に進む。一方、CPU51は、演奏順Nが1より大きくはないと判定した場合には(ステップS3:NO)、ステップS4に進む。
ステップS4において、CPU51は、部品テーブルに基づいて、ステップS2で検索された部品IDの中から、演奏パートNの演奏パート種別と一致する演奏パート種別に対応する部品IDを検索する。そして、CPU51は、検索された部品IDを格納する部品リスト表を生成する。次いで、CPU51は、ステップS14に進む。
ステップS5において、CPU51は、部品リスト表の行番号Kを1に設定する。次いで、CPU51は、部品テーブルに基づいて、ステップS2で検索された部品IDの中から、演奏パートNの演奏パート種別と一致する演奏パート種別に対応する部品IDであって、且つ、演奏順N−1の演奏パートの割り当て候補Kの部品IDに対応する後繋ぎ属性IDに一致する前繋ぎ属性IDに対応する部品IDを検索する(ステップS6)。演奏順N−1の演奏パートの割り当て候補Kの部品IDとは、部品リスト表において、K番目の行のN−1番目の列に格納された部品IDである。次いで、CPU51は、該当する部品IDが検索されたか否かを判定する(ステップS7)。このとき、CPU51は、部品IDが検索されたと判定した場合には(ステップS7:YES)、ステップS11に進む。一方、CPU51は、部品IDが検索されなかったと判定した場合には(ステップS7:NO)、ステップS8に進む。
ステップS8において、CPU51は、部品テーブルに基づいて、ステップS2で検索された部品IDの中から、演奏順N−1の演奏パートの割り当て候補Kの部品IDに対応する後繋ぎ属性IDに一致する前繋ぎ属性IDに対応する部品IDを検索する。次いで、CPU51は、該当する部品IDが検索されたか否かを判定する(ステップS9)。このとき、CPU51は、部品IDが検索されたと判定した場合には(ステップS9:YES)、ステップS11に進む。一方、CPU51は、部品IDが検索されなかったと判定した場合には(ステップS9:NO)、ステップS10に進む。ステップS10において、CPU51は、K番目の行を部品リスト表から削除する。次いで、CPU51は、ステップS12に進む。
ステップS11において、CPU51は、ステップS6又は8の検索結果に基づいて、部部品リスト表を更新する。具体的に、CPU51は、対応する行のN番目の列に、検索された部品IDを格納する。1つの行につき複数の部品IDが検索された場合、CPU51は、同一内容の行を部品リスト表に追加する。そして、CPU51は、検索された複数の部品IDを複数の行に格納する。次いで、CPU51は、行番号Kに1を加算する(ステップS12)。次いで、CPU51は、行番号Kが行数R以下であるか否かを判定する(ステップS13)。行数Rは、更新前の部品リスト表の行数である。このとき、CPU51は、行番号Kが行数R以下であると判定した場合には(ステップS13:YES)、ステップS6に進む。一方、CPU51は、行番号Kが行数R以下でないと判定した場合には(ステップS13:NO)、ステップS14に進む。
ステップS14において、CPU51は、行数Rを、更新後の部品リスト表の行数に変更する。次いで、CPU51は、演奏順Nに1を加算する(ステップS15)。次いで、CPU51は、演奏順Nが、選択された楽曲を構成する演奏パートの総数以下であるか否かを判定する(ステップS16)。このとき、CPU51は、は、演奏順Nが演奏パートの総数以下であると判定した場合には(ステップS16:YES)、ステップS2に進む。一方、CPU51は、演奏順Nが演奏パートの総数以下でないと判定した場合には(ステップS16:NO)、ステップS17に進む。ステップS17において、CPU51は、部品リスト表内に生成された部品リストの中から、運動コンテンツの再生に用いられる部品リストを決定する。例えば、操作者42が選択してもよい。そして、CPU51は、操作者42により入力された選択結果に基づいて、部品リストを決定してもよい。CPU51は、ステップS17の処理を終えると、部品リスト生成処理を終了させる。
部品リスト生成処理が終了すると、CPU51は、候補生成処理を実行する。候補生成処理において、CPU51は、運動強度が弱レベル及び強レベルの部品IDの中からそれぞれ、決定された楽曲の各演奏パートに割り当てる部品IDを検索する。そして、CPU51は、検索した部品IDを、生成された部品リストに追加する。図6(B)は、出力端末5のCPU51の候補生成処理の処理例を示すフローチャートである。図6(B)に示すように、CPU51は、運動強度を弱レベルに設定する(ステップS21)。次いで、CPU51は、部品候補決定処理を実行する(ステップS22)。部品候補決定処理において、CPU51は、設定された運動強度の部品IDの中から、各演奏パートに割り当てる部品IDを検索する。そして、CPU51は、検索した部品IDを、決定した部品リストに追加する。次いで、CPU51は、運動強度を強レベルに設定する(ステップS23)。次いで、CPU51は、部品候補決定処理を実行する(ステップS24)。CPU51は、ステップS24を終えると、候補生成処理を終了させる。
図7は、出力端末5のCPU51の部品候補決定処理の処理例を示すフローチャートである。図7に示すように、CPU51は、演奏順Nを1に設定する(ステップS31)。次いで、CPU51は、設定された運動強度が弱レベルであるか否かを判定する(ステップS32)。このとき、CPU51は、運動強度が弱レベルであると判定した場合には(ステップS32:YES)、ステップS33に進む。一方、CPU51は、運動強度が弱レベルではないと判定した場合には(ステップS32:NO)、ステップS34に進む。ステップS33において、CPU51は、決定された運動ジャンル、演奏順Nの演奏パートの拍数、及び弱レベルの運動強度に一致する運動ジャンル、拍数、及び運動強度に対応する部品IDを部品テーブルから検索する。次いで、CPU51は、検索された部品IDの中から、決定された運動テンポ以上のテンポに対応する部品IDを検索する。そして、CPU51は、検索された部品IDを割り当て候補として含む候補リストを生成する。検索する部品IDのテンポを運動テンポ以下に限定する理由は、実際の運動強度が中レベル以上にならないようにするためである。運動強度が弱レベルの部品IDに対応するテンポよりも高い運動テンポに従って、利用者41が部品IDに対応する運動動作を行うと、運動強度が弱レベルよりも高くなる場合がある。次いで、CPU51は、ステップS35に進む。
ステップS34において、CPU51は、決定された運動ジャンル、演奏順Nの演奏パートの拍数、及び強レベルの運動強度に一致する運動ジャンル、拍数、及び運動強度に対応する部品IDを、部品テーブルから検索する。次いで、CPU51は、検索された部品IDの中から、決定された運動テンポ以下のテンポに対応する部品IDを検索する。そして、CPU51は、検索された部品IDを割り当て候補として含む候補リストを生成する。検索する部品IDのテンポを運動テンポ以下に限定する理由は、実際の運動強度が中レベル以下にならないようにするためである。次いで、CPU51は、ステップS35に進む。
ステップS35において、CPU51は、優先度を決定するためのスコアの最大値Maxを0に設定する。また、CPU51は、候補リストにおける割り当て候補の順番iを0に設定する。また、CPU51は、部品リストから、演奏順がN番目の演奏パートに割り当てられた部品IDとして、中レベルの運動強度に対応する部品IDを取得する。次いで、CPU51は、部品テーブルから、部品IDに対応する前繋ぎ属性IDを、前繋ぎ属性IDαとして取得する。また、CPU51は、部品テーブルから、部品IDに対応する後繋ぎ属性IDを、後繋ぎ属性IDβとして取得する。
次いで、CPU51は、スコアγを0に設定する(ステップS36)。次いで、CPU51は、i番目の割り当て候補の部品IDに対応する前繋ぎ属性IDを部品テーブルから取得する。そして、CPU51は、取得した前繋ぎ属性IDが前繋ぎ属性IDαと一致するか否かを判定する(ステップS37)。このとき、CPU51は、取得した前繋ぎ属性IDが前繋ぎ属性IDαと一致すると判定した場合には(ステップS37:YES)、ステップS38に進む。ステップS38において、CPU51は、スコアγに9を加算する。次いで、CPU51は、ステップS39に進む。一方、CPU51は、取得した前繋ぎ属性IDが前繋ぎ属性IDαと一致しないと判定した場合には(ステップS37:NO)、ステップS39に進む。
ステップS39において、CPU51は、i番目の割り当て候補の部品IDに対応する後繋ぎ属性IDを部品テーブルから取得する。そして、CPU51は、取得した後繋ぎ属性IDが後繋ぎ属性IDβと一致するか否かを判定する。このとき、CPU51は、取得した後繋ぎ属性IDが後繋ぎ属性IDβと一致すると判定した場合には(ステップS39:YES)、ステップS40に進む。ステップS40において、CPU51は、スコアγに8を加算する。次いで、CPU51は、ステップS41に進む。一方、CPU51は、取得した後繋ぎ属性IDが後繋ぎ属性IDβと一致しないと判定した場合には(ステップS39:NO)、ステップS41に進む。
ステップS41において、CPU51は、i番目の割り当て候補の部品IDに対応するテンポを部品テーブルから取得する。そして、CPU51は、取得したテンポが運動テンポと一致するか否かを判定する。このとき、CPU51は、取得したテンポが運動テンポと一致すると判定した場合には(ステップS41:YES)、ステップS42に進む。ステップS42において、CPU51は、スコアγに4を加算する。次いで、CPU51は、ステップS43に進む。一方、CPU51は、取得したテンポが運動テンポと一致しないと判定した場合には(ステップS41:NO)、ステップS43に進む。
ステップS43において、CPU51は、i番目の割り当て候補の部品IDに対応する演奏パート種別を部品テーブルから取得する。そして、CPU51は、取得した演奏パート種別が演奏順Nの演奏パートの演奏パート種別と一致するか否かを判定する。このとき、CPU51は、取得した演奏パート種別が演奏順Nの演奏パートの演奏パート種別と一致すると判定した場合には(ステップS43:YES)、ステップS44に進む。ステップS44において、CPU51は、スコアγに2を加算する。次いで、CPU51は、ステップS45に進む。一方、CPU51は、取得した演奏パート種別が演奏順Nの演奏パートの演奏パート種別と一致しないと判定した場合には(ステップS43:NO)、ステップS45に進む。
ステップS45において、CPU51は、最大値Maxがスコアγより小さいか否かを判定する。このとき、CPU51は、最大値Maxがスコアγより小さいと判定した場合には(ステップS45:YES)、ステップS46に進む。ステップS46において、CPU51は、最大値Maxをスコアγの値に設定する。次いで、CPU51は、i番目の割り当て候補の部品IDを、現時点でスコアが最も高い部品IDΔに決定する(ステップS47)。次いで、CPU51は、ステップS48に進む。一方、CPU51は、最大値Maxがスコアγより小さくはないと判定した場合には(ステップS45:NO)、ステップS48に進む。
ステップS48において、CPU51は、順番iが、候補リストに含まれる割り当て候補の部品IDの総数よりも小さいか否かを判定する。このとき、CPU51は、順番iが割り当て候補の部品IDの総数よりも小さいと判定した場合には(ステップS48:YES)、ステップS49に進む。ステップS49において、CPU51は、順番iに1を加算する。次いで、CPU51は、ステップS36に進む。一方、CPU51は、順番iが割り当て候補の部品IDの総数よりも小さくはないと判定した場合には(ステップS48:NO)、ステップS50に進む。
ステップS50において、CPU51は、最大値Maxが0であるか否かを判定する。このとき、CPU51は、最大値Maxが0ではないと判定した場合には(ステップS50:NO)、ステップS54に進む。一方、CPU51は、最大値Maxが0であると判定した場合には(ステップS50:YES)、ステップS51に進む。ステップS51において、CPU51は、割り当て候補の部品IDの中に、出現済みではない部品IDがあるか否かを判定する。具体的に、CPU51は、候補リストに含まれる部品IDのうち、部品リストに登録されていない部品IDがあるか否かを判定する。このとき、CPU51は、部品リストに登録されていない部品IDが候補リストの中にある場合、CPU51は、出現済みではない部品IDがあると判定する(ステップS51:YES)。この場合、CPU51は、部品リストに登録されていない部品IDのうち何れかの部品IDを、部品IDΔに決定する(ステップS52)。次いで、CPU51は、ステップS54に進む。一方、CPU51は、部品リストに登録されていない部品IDが候補リストの中にない場合、CPU51は、出現済みではない部品IDがないと判定する(ステップS51:NO)。この場合、CPU51は、候補リストに含まれる部品IDのうち何れかの部品IDを、部品IDΔに決定する(ステップS53)。次いで、CPU51は、ステップS54に進む。
ステップS54において、CPU51は、部品IDΔを、演奏順Nの演奏パートの演奏パートIDと、設定された運動強度に対応付けて、部品リストに追加する。次いで、CPU51は、演奏順Nに1を加算する(ステップS55)。次いで、CPU51は、演奏順Nが、決定された楽曲を構成する演奏パートの総数以下であるか否かを判定する(ステップS56)。このとき、CPU51は、は、演奏順Nが演奏パートの総数以下であると判定した場合には(ステップS56:YES)、ステップS35に進む。一方、CPU51は、演奏順Nが演奏パートの総数以下でないと判定した場合には(ステップS56:NO)、部品候補決定処理を終了させる。
候補生成処理が終了すると、CPU51は、運動レッスンで出力される楽曲を更に追加するか否かを判定する。例えば、操作者42が、楽曲を追加するか否かを選択する。CPU51は、操作者42による選択の操作に基づいて判定を行う。CPU51は、楽曲を追加すると判定した場合には、選択情報取得処理、部品リスト生成処理及び候補生成処理を再度実行して、追加された楽曲の部品リストを生成する。一方、CPU51は、楽曲を追加しないと判定した場合には、楽曲リストを生成する。具体的に、CPU51は、選択情報取得処理において決定された楽曲の演奏順、及び休憩曲及び終了曲の演奏順を決定する。例えば、操作者42が、楽曲の演奏順を指定する。また、操作者42は、休憩を入れるか否かを楽曲間ごとに指定する。CPU51は、操作者42の指定の操作に基づいて、選択情報取得処理において決定された楽曲及び休憩曲の演奏順を決定する。そして、CPU51は、終了曲の演奏順を最後の演奏順に決定する。CPU51は、決定した演奏順と楽曲IDを含む楽曲リストを生成する。
楽曲リストを生成すると、CPU51は、適性心拍数範囲の下限値及び上限値を決定する。ここで、操作者42は、運動レッスンに参加する利用者41の年齢を入力する。また、操作者42は、運動の目的を選択する。運動の目的として、例えば、脂肪燃焼、体力増強等がある。CPU51は、例えば利用者41の年齢が高いほど、適性心拍数範囲の下限値及び上限値を小さくする。また、CPU51は、例えば運動目的が脂肪燃焼である場合、体力増強の場合よりも、適性心拍数範囲の下限値及び上限値を小さくする。
次いで、CPU51は、再生処理を実行する。再生処理において、CPU51は、部品リスト及び楽曲リストに基づいて、運動コンテンツを再生する。図8及び図9は、出力端末5のCPU51の再生処理の処理例を示すフローチャートである。図8に示すように、CPU51は、拍数Tを、記憶部7に予め記憶された取得タイミング拍数に設定する(ステップS61)。取得タイミング拍数は、利用者41の心拍数を取得してから演奏パートの出力が終了するまでの拍数を示す。次いで、CPU51は、楽曲の演奏順Mを1に設定する。次いで、CPU51は、楽曲リストから、演奏順Mに対応する楽曲IDを取得する。次いで、CPU51は、楽曲IDに対応する楽曲データ及び部品リストをHDD7から取得する(ステップS62)。
次いで、CPU51は、演奏パートの演奏順Nを1に設定する。また、CPU51は、運動強度を弱レベルに設定する(ステップS63)。次いで、CPU51は、部品リストから、演奏順Nの演奏パートの演奏パートIDに対応する部品IDのうち、弱レベルの運動強度に対応する部品IDを取得する。次いで、CPU51は、取得した部品IDに対応するモーションIDを部品テーブルから取得する。そして、CPU51は、取得した部品IDを、楽曲の演奏順M及び演奏パートの演奏順Nに対応付けてRAM53に記憶させる(ステップS64)。
次いで、CPU51は、演奏順Mの楽曲のテンポを、オリジナルのテンポから選択情報取得処理で決定された運動テンポに変更する(ステップS65)。次いで、CPU51は、演奏順Nの演奏パート及び運動映像の再生を開始する(ステップS66)。具体的に、CPU51は、演奏順Mの楽曲の楽曲データに基づいて、ミュージックシーケンサにより、演奏順Nの演奏パートを再生させる。これにより、CPU51は、スピーカ64により演奏パートを出力させる。このとき、CPU51は、選択情報取得処理で決定された運動テンポに従って楽曲を出力させる。また、CPU51は、楽曲の演奏順M及び演奏パートの演奏順Nに対応するモーションIDをRAM53から取得する。そして、CPU51は、取得したモーションIDに対応するモーションデータに基づいて、運動映像の再生を開始する。このとき、CPU51は、先ずメイン動作の静止画像を順次生成し、静止画像を表示制御部56へ順次出力する。次いで、CPU51は、後繋ぎ動作の静止画像を順次生成し、静止画像を表示制御部56へ順次出力する。これにより、CPU51は、ディスプレイ67に運動映像を表示させる。
次いで、CPU51は、演奏順Mの楽曲で次の演奏順の演奏パートがあるか否かを判定する(ステップS67)。具体的に、演奏パートの演奏順Nが、演奏順Mの楽曲を構成する演奏パートの総数未満である場合、CPU51は、次の演奏順の演奏パートがあると判定する(ステップS67:YES)。この場合、ステップS76に進む。一方、演奏順Nが演奏パートの総数未満ではない場合、CPU51は、次の演奏順の演奏パートがないと判定する(ステップS67:NO)。この場合、CPU51は、ステップS68に進む。ステップS68において、CPU51は、楽曲リストから、演奏順M+1の楽曲IDを取得する。次いで、CPU51は、楽曲IDに対応する楽曲データ及び部品リストをHDD7から取得する。
次いで、CPU51は、演奏順M+1の楽曲IDが休憩曲の楽曲IDであるか否かを判定する(ステップS69)。このとき、CPU51は、演奏順M+1の楽曲IDが休憩曲の楽曲IDであると判定した場合には(ステップS69:YES)、ステップS70に進む。ステップS70において、CPU51は、休憩曲の楽曲IDに対応するモーションIDをHDD7から取得する。そして、CPU51は、取得したモーションIDを、楽曲の演奏順M+1及び演奏パートの1番目の演奏順に対応付けてRAM53に記憶させる。次いで、CPU51は、ステップS92に進む。一方、CPU51は、演奏順M+1の楽曲IDが休憩曲の楽曲IDではないと判定した場合には(ステップS69:NO)、ステップS71に進む。
ステップS71において、CPU51は、演奏順M+1の楽曲IDが終了曲の楽曲IDであるか否かを判定する。このとき、CPU51は、演奏順M+1の楽曲IDが終了曲の楽曲IDであると判定した場合には(ステップS71:YES)、ステップS72に進む。ステップS72において、CPU51は、終了曲の楽曲IDに対応するモーションIDをHDD7から取得する。そして、CPU51は、取得したモーションIDを、楽曲の演奏順M+1及び演奏パートの1番目の演奏順に対応付けてRAM53に記憶させる。次いで、CPU51は、ステップS92に進む。一方、CPU51は、演奏順M+1の楽曲IDが終了曲の楽曲IDではないと判定した場合には(ステップS71:NO)、ステップS73に進む。
ステップS73において、CPU51は、演奏順Mに対応する楽曲IDに基づいて、現在再生中の楽曲の楽曲IDが休憩曲の楽曲IDであるか否かを判定する。このとき、CPU51は、再生中の楽曲の楽曲IDが休憩曲の楽曲IDであると判定した場合には(ステップS73:YES)、ステップS74に進む。ステップS74において、CPU51は、運動強度を弱レベルに変更する。次いで、CPU51は、ステップS91に進む。一方、CPU51は、再生中の楽曲の楽曲IDが休憩曲の楽曲IDではないと判定した場合には(ステップS73:NO)、ステップS75に進む。
ステップS75において、CPU51は、演奏順Mに対応する楽曲IDに基づいて、現在再生中の楽曲の楽曲IDが終了曲の楽曲IDであるか否かを判定する。このとき、CPU51は、再生中の楽曲の楽曲IDが終了曲の楽曲IDであると判定した場合には(ステップS75:YES)、ステップS92に進む。一方、CPU51は、再生中の楽曲の楽曲IDが終了曲の楽曲IDではないと判定した場合には(ステップS75:NO)、ステップS76に進む。
ステップS76において、CPU51は、現在再生中の演奏パートの再生終了からT拍前になったか否かを判定する。具体的に、CPU51は、楽曲データに含まれる演奏順Nの演奏パートの演奏パート開始イベントから、演奏パートの拍数を取得する。次いで、CPU51は、演奏パートの拍数からTを減算して、心拍数を取得するまでの拍数を計算する。次いで、CPU51は、計算した拍数と運動テンポとに基づいて、拍数に相当する時間を計算する。次いで、CPU51は、演奏パートの再生開始時刻からの経過時間を計算する。そして、CPU51は、経過時間が拍数に相当する時間以上であるか否かを判定する。このとき、CPU51は、経過時間が拍数に相当する時間以上ではない場合には、現在再生中の演奏パートの再生終了からT拍前になっていないと判定する(ステップS76:NO)。この場合、CPU51は、所定時間待機して、ステップS76の判定を再度実行する。一方、CPU51は、経過時間が拍数に相当する時間以上である場合には、現在再生中の演奏パートの再生終了からT拍前になった判定する(ステップS76:YES)。この場合、CPU51は、ステップS81に進む。
図9に示すように、ステップS81において、CPU51は、心拍数測定器68から心拍数情報受信部69が受信した心拍数情報を取得する。次いで、CPU51は、心拍数情報が示す心拍数が適性心拍数範囲の下限値未満であるか否かを判定する(ステップS82)。このとき、CPU51は、心拍数が下限値未満ではないと判定した場合には(ステップS82:NO)、ステップS86に進む。一方、CPU51は、心拍数が下限値未満であると判定した場合には(ステップS82:YES)、ステップS83に進む。ステップS83において、CPU51は、現在の運動強度が弱レベルであるか否かを判定する。このとき、CPU51は、運動強度が弱レベルであると判定した場合には(ステップS83:YES)、ステップS84に進む。ステップS84において、CPU51は、運動強度を中レベルに変更する。次いで、CPU51は、ステップS91に進む。一方、CPU51は、運動強度が弱レベルではないと判定した場合には(ステップS83:NO)、ステップS85に進む。ステップS85において、CPU51は、運動強度を強レベルに変更する。次いで、CPU51は、ステップS91に進む。
ステップS86において、CPU51は、心拍数情報が示す心拍数が適性心拍数範囲の上限値よりも大きいか否かを判定する。このとき、CPU51は、心拍数が上限値よりも大きくはないと判定した場合には(ステップS86:NO)、ステップS87に進む。ステップS87において、CPU51は、運動強度を変更しないことを決定する。次いで、CPU51は、ステップS91に進む。一方、CPU51は、心拍数が上限値よりも大きいと判定した場合には(ステップS86:YES)、ステップS88に進む。ステップS88において、CPU51は、現在の運動強度が強レベルであるか否かを判定する。このとき、CPU51は、運動強度が強レベルであると判定した場合には(ステップS88:YES)、ステップS89に進む。ステップS89において、CPU51は、運動強度を中レベルに変更する。次いで、CPU51は、ステップS91に進む。一方、CPU51は、運動強度が強レベルではないと判定した場合には(ステップS88:NO)、ステップS90に進む。ステップS90において、CPU51は、運動強度を弱レベルに変更する。次いで、CPU51は、ステップS91に進む。
ステップS91において、CPU51は、次に出力される演奏パートで実行される運動動作のモーションIDとして、ステップS74、S84、S85、S87、S89又はS90で設定された運動強度に対応するモーションIDを取得する。具体的に、演奏パートの演奏順Nが、演奏順Mの楽曲を構成する演奏パートの総数未満であるとする。この場合、CPU51は、演奏順Mの楽曲の部品リストから、演奏順N+1の演奏パートの演奏パートIDに対応する部品IDのうち、設定された運動強度に対応する部品IDを取得する。次いで、CPU51は、取得した部品IDに対応するモーションIDを部品テーブルから取得する。そして、CPU51は、取得したモーションIDを、楽曲の演奏順M及び演奏パートの演奏順N+1に対応付けてRAM53に記憶させる。一方、演奏パートの演奏順Nが、演奏順Mの楽曲を構成する演奏パートの総数未満ではないとする。この場合、CPU51は、演奏順M+1の楽曲の部品リストから、演奏順が1番目の演奏パートの演奏パートIDに対応する部品IDのうち、設定された運動強度に対応する部品IDを取得する。次いで、CPU51は、取得した部品IDに対応するモーションIDを部品テーブルから取得する。そして、CPU51は、取得したモーションIDを、楽曲の演奏順M+1及び演奏パートの1番目の演奏順に対応付けてRAM53に記憶させる。
次いで、CPU51は、ミュージックシーケンサによる演奏パートの再生が終了したか否かを判定する(ステップS92)。このとき、CPU51は、演奏パートの再生が終了していないと判定した場合には(ステップS92:NO)、所定時間待機して、ステップS92の判定を再度実行する。一方、CPU51は、演奏パートの再生が終了したと判定した場合には(ステップS92:YES)、ステップS93に進む。ステップS93において、CPU51は、演奏順Mの楽曲の再生が終了したか否かを判定する。具体的に、演奏パートの演奏順Nが、演奏順Mの楽曲を構成する演奏パートの総数未満である場合、CPU51は、楽曲の再生が終了していないと判定する(ステップS93:NO)。この場合、CPU51は、演奏順Nに1を加算する(ステップS94)。次いで、CPU51は、ステップS66に進む。一方、演奏順Nが演奏パートの総数未満ではない場合、CPU51は、楽曲の再生が終了したと判定する(ステップS93:YES)。この場合、CPU51は、終了曲の再生が終了したか否かを判定する(ステップS95)。具体的に、演奏順Mの楽曲IDが終了曲の楽曲IDではない場合、CPU51は、終了曲の再生が終了していないと判定する(ステップS95:NO)。この場合、CPU51は、演奏順Mに1を加算する(ステップS96)。次いで、CPU51は、ステップS65に進む。一方、演奏順Mの楽曲IDが終了曲の楽曲IDである場合、CPU51は、終了曲の再生が終了したと判定する(ステップS95:YES)。この場合、CPU51は、再生処理を終了させる。
以上説明したように、本実施形態によれば、CPU51が、中レベルの運動強度に対応する部品IDのち、演奏順が1番目の演奏パートに割り当てる候補となる部品IDの繋ぎ属性と一致する繋ぎ属性に対応する部品IDを、演奏順が2番目の演奏パートに割り当てる候補として検索する。また、CPU51が、弱レベル及び強レベルのうち少なくとも何れかの運動強度に対応する部品IDのうち、演奏順が1番目の演奏パートに割り当てる候補となる部品IDの繋ぎ属性と一致する繋ぎ属性に対応する部品IDを、演奏順が2番目の演奏パートに割り当てる候補として検索する。そして、CPU51が、演奏順が2番目の演奏パートに、中レベルの運動強度に対応する部品IDと中レベルの運動強度とを対応付け、且つ、演奏順が2番目の演奏パートに、弱レベル又は強レベルの運動強度に対応する部品IDと弱レベル又は強レベルの運動強度とを対応付けた部品リストを生成する。そのため、運動動作の繋がりが自然になるように、且つ、設定された運動強度で運動動作を行うことができるように、各演奏パートに運動動作を自動的に割り当てることができる。
なお、上記実施形態において、出力端末5は、演奏順が1番目の演奏パートに割り当て可能な部品IDを最初に検索していた。しかしながら、出力端末5は、演奏順が1番目の演奏パートとは異なる演奏パートに割り当て可能な部品IDを最初に検索してもよい。その後、出力端末5は、割り当て可能な部品IDが検索された演奏パートの次の演奏順の演奏パートから演奏順に、割り当て可能な部品IDを検索してもよい。
また、上記実施形態においては、本発明の情報処理装置が出力端末5に適用されていた。しかしながら、本発明の情報処理装置が配信サーバ2に適用されてもよい。例えば、配信サーバ2が、部品リストや運動情報を生成してもよい。また、配信サーバ2が、運動情報に基づいて、音声データ及び動画データを生成してもよい。この場合の音声データは、楽曲等を出力するためのデータである。また、動画データは、運動映像等を表示するためのデータである。運動レッスンが行われるとき、配信サーバ2は、音声データ及び動画データを、例えばストリーミング方式で出力端末5に送信する。これにより、配信サーバ2は、出力端末5により楽曲を出力させ、且つ、運動映像を表示させる。また、本発明の情報処理装置が出力端末5及び配信サーバ2に適用されてもよい。そして、出力端末5及び配信サーバ2は協働して処理を行ってもよい。