(57)【特許請求の範囲】
【請求項１】
プレイヤに所定の楽曲のメロディーを演奏させるための音楽演奏装置のコンピュータにおいて実行される音楽演奏プログラムであって、
前記音楽演奏装置には、前記所定の楽曲のメロディーを構成する各音について、少なくとも当該各音の音高と当該各音を出力すべき出力タイミングとを表す楽曲データが記憶されており、
前記楽曲データによる演奏の開始後、当該楽曲データに含まれる各音の中から出力タイミングが到来している音のうちその出力タイミングが最後に到来した音である対象音を、逐次検知する検知ステップと、
前記音楽演奏装置の入力装置からの入力を受け付ける入力受付ステップと、
前記入力受付ステップにおいて受け付けられた入力が、前記検知ステップにおいて前記対象音の出力タイミングが到来してから最初の入力である場合、当該対象音を出力する第１音出力ステップと、
前記入力受付ステップにおいて受け付けられた入力が、前記検知ステップにおいて前記対象音の出力タイミングが到来してから２回目以降の入力である場合、前記対象音の音高と前記対象音の次に出力タイミングが到来する次対象音の音高とに基づいて任意の音であるアドリブ音の音高を決定するアドリブ音決定ステップと、
前記アドリブ音決定ステップで決定された音高でアドリブ音を出力する第２音出力ステップとを前記コンピュータに実行させ、
ここで、
前記アドリブ音決定ステップは、
前記対象音の音高と前記次対象音の音高とに基づいてアドリブ音の音高の候補を設定する候補設定ステップと、
前記候補設定ステップで設定された候補のうちの１つをアドリブ音の音高として選択する選択ステップとを含み、
前記候補設定ステップは、
前記対象音の音高である第１の音高と、前記次対象音の音高である第２の音高とに基づいて候補音域を設定する候補音域設定ステップを含み、
前記アドリブ音の音高の候補は、前記候補音域設定ステップで設定された候補音域の範囲内で設定される、音楽演奏プログラム。
【請求項２】
前記候補音域設定ステップにおいて、前記コンピュータは、前記対象音の出力タイミングが到来した時点から前記次対象音の出力タイミングが到来する時点までの対象期間において、時間が経過するにつれて、前記第１の音高を中心とする音域から前記第２の音高を中心とする音域へと候補音域を変化させる、請求項１に記載の音楽演奏プログラム。
【請求項３】
前記候補設定ステップは、
前記候補音域の中心となる中心音高を、前記対象期間において時間が経過するにつれて前記第１の音高から前記第２の音高へと変化するように算出する中心音高算出ステップと、
前記候補音域の幅を設定する幅設定ステップとを含み、
前記候補音域設定ステップにおいて、前記コンピュータは、候補音域を前記中心音高と前記候補音域の幅とから決定する、請求項２に記載の音楽演奏プログラム。
【請求項４】
前記候補音域設定ステップにおいて、前記コンピュータは、前記対象音の出力タイミングが到来した時点から、前記次対象音の出力タイミングが到来する時点までの対象期間において、時間が経過するにつれて候補音域の幅が次第に小さくなるように候補音域を設定する、請求項１に記載の音楽演奏プログラム。
【請求項５】
前記候補音域設定ステップにおいて、前記コンピュータは、前記対象音の出力タイミングが到来した時点から所定時間の間は候補音域の幅を一定に維持する、請求項４に記載の音楽演奏プログラム。
【請求項６】
前記候補音域設定ステップにおいて、前記コンピュータは、時間の経過に対して定量または定率で候補音域の幅が小さくなるように候補音域を変化させる、請求項４に記載の音楽演奏プログラム。
【請求項７】
前記楽曲データには、前記所定の楽曲のメロディーを構成する各音の音色を示すデータが含まれており、
前記音楽演奏装置には、出力される音の音色毎に出力可能音域を関連付けた出力可能音域データがさらに記憶されており、
前記候補音域設定ステップにおいて、前記コンピュータは、前記対象音の音色に関連付けられている出力可能音域データの出力可能音域内の範囲となるように候補音域を設定する、請求項１に記載の音楽演奏プログラム。
【請求項８】
プレイヤに所定の楽曲のメロディーを演奏させるための音楽演奏装置であって、
前記所定の楽曲のメロディーを構成する各音について、少なくとも当該各音の音高と当該各音を出力すべき出力タイミングとを表す楽曲データを記憶する楽曲データ記憶手段と、
前記楽曲データによる演奏の開始後、当該楽曲データに含まれる各音の中から出力タイミングが到来している音のうちその出力タイミングが最後に到来した音である対象音を逐次検知する検知手段と、
前記音楽演奏装置の入力装置からの入力を受け付ける入力受付手段と、
前記入力受付手段によって受け付けられた入力が、前記検知手段によって前記対象音の出力タイミングが到来してから最初の入力である場合、当該対象音を出力する第１音出力手段と、
前記入力受付手段によって受け付けられた入力が、前記検知手段によって前記対象音の出力タイミングが到来してから２回目以降の入力である場合、前記対象音の音高と前記対象音の次に出力タイミングが到来する次対象音の音高とに基づいて任意の音であるアドリブ音の音高を決定するアドリブ音決定手段と、
前記アドリブ音決定ステップで決定された音高でアドリブ音を出力する第２音出力手段とを備え、
ここで、
前記アドリブ音決定手段は、
前記対象音の音高と前記次対象音の音高とに基づいてアドリブ音の音高の候補を設定する候補設定手段と、
前記候補設定手段で設定された候補のうちの１つをアドリブ音の音高として選択する選択手段とを含み、
前記候補設定手段は、
前記対象音の音高である第１の音高と、前記次対象音の音高である第２の音高とに基づいて候補音域を設定する候補音域設定手段を含み、
前記アドリブ音の音高の候補は、前記候補音域設定手段で設定された候補音域の範囲内で設定される、音楽演奏装置。
【請求項９】
プレイヤに所定の楽曲のメロディーを演奏させるための音楽演奏システムであって、
前記所定の楽曲のメロディーを構成する各音について、少なくとも当該各音の音高と当該各音を出力すべき出力タイミングとを表す楽曲データを記憶する楽曲データ記憶手段と、
前記楽曲データによる演奏の開始後、当該楽曲データに含まれる各音の中から出力タイミングが到来している音のうちその出力タイミングが最後に到来した音である対象音を、逐次検知する検知手段と、
前記音楽演奏システムの入力装置からの入力を受け付ける入力受付手段と、
前記入力受付手段によって受け付けられた入力が、前記検知手段によって前記対象音の出力タイミングが到来してから最初の入力である場合、当該対象音を出力する第１音出力手段と、
前記入力受付手段によって受け付けられた入力が、前記検知手段によって前記対象音の出力タイミングが到来してから２回目以降の入力である場合、前記対象音の音高と前記対象音の次に出力タイミングが到来する次対象音の音高とに基づいて任意の音であるアドリブ音の音高を決定するアドリブ音決定手段と、
前記アドリブ音決定ステップで決定された音高でアドリブ音を出力する第２音出力手段とを備え、
ここで、
前記アドリブ音決定手段は、
前記対象音の音高と前記次対象音の音高とに基づいてアドリブ音の音高の候補を設定する候補設定手段と、
前記候補設定手段で設定された候補のうちの１つをアドリブ音の音高として選択する選択手段とを含み、
前記候補設定手段は、
前記対象音の音高である第１の音高と、前記次対象音の音高である第２の音高とに基づいて候補音域を設定する候補音域設定手段を含み、
前記アドリブ音の音高の候補は、前記候補音域設定手段で設定された候補音域の範囲内で設定される、音楽演奏システム。
【請求項１０】
プレイヤに所定の楽曲のメロディーを演奏させるための音楽演奏システムのコンピュータにおいて実行される音楽演奏方法であって、
前記音楽演奏システムには、前記所定の楽曲のメロディーを構成する各音について、少なくとも当該各音の音高と当該各音を出力すべき出力タイミングとを表す楽曲データが記憶されており、
当該音楽演奏方法は、
前記楽曲データによる演奏の開始後、当該楽曲データに含まれる各音の中から出力タイミングが到来している音のうちその出力タイミングが最後に到来した音である対象音を、逐次検知する検知ステップと、
前記音楽演奏システムの入力装置からの入力を受け付ける入力受付ステップと、
前記入力受付ステップにおいて受け付けられた入力が、前記検知ステップにおいて前記対象音の出力タイミングが到来してから最初の入力である場合、当該対象音を出力する第１音出力ステップと、
前記入力受付ステップにおいて受け付けられた入力が、前記検知ステップにおいて前記対象音の出力タイミングが到来してから２回目以降の入力である場合、前記対象音の音高と前記対象音の次に出力タイミングが到来する次対象音の音高とに基づいて任意の音であるアドリブ音の音高を決定するアドリブ音決定ステップと、
前記アドリブ音決定ステップで決定された音高でアドリブ音を出力する第２音出力ステップとを前記コンピュータに実行させ、
ここで、
前記アドリブ音決定ステップは、
前記対象音の音高と前記次対象音の音高とに基づいてアドリブ音の音高の候補を設定する候補設定ステップと、
前記候補設定ステップで設定された候補のうちの１つをアドリブ音の音高として選択する選択ステップとを含み、
前記候補設定ステップは、
前記対象音の音高である第１の音高と、前記次対象音の音高である第２の音高とに基づいて候補音域を設定する候補音域設定ステップを含み、
前記アドリブ音の音高の候補は、前記候補音域設定ステップで設定された候補音域の範囲内で設定される、音楽演奏方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、音楽演奏プログラムおよび音楽演奏装置に関し、より特定的には、音楽に合わせてプレイヤに入力を行わせることによってユーザに演奏操作を行わせるための音楽演奏プログラム、音楽演奏装置、音楽演奏システム、および音楽演奏方法に関する。
【背景技術】
【０００２】
特許文献１に記載されているゲーム装置は、決められたタイミングでボタン操作を行わせることによってユーザ（プレイヤ）に演奏を行わせるゲームである。このゲーム装置においては、操作位置標識および音符標識が画面に表示され、音符標識は画面上を移動する。音符標識が操作位置標識の位置に来たタイミングでプレイヤが所定のボタンに対して入力を行った場合、ゲーム装置は予め決められた音を出力する。音符標識は次々と表示され、各音符標識はそれぞれ所定のタイミングで操作位置標識の位置を通過する。したがって、各音符標識が操作位置標識の位置に来たタイミングでプレイヤがタイミング良く入力を行うことによって、プレイヤは、ゲーム装置に一連の音（メロディ）を出力させることができる。
【特許文献１】特開２００３−２０５１７４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
上記のゲーム装置では、予め決められたタイミング、すなわち、音符標識が操作位置標識の位置に来たタイミングでプレイヤが入力を行わなければ、音は出力されない。したがって、上記のゲームでは、プレイヤが行うべき操作は、予め決められたタイミングで決められたボタンを押下する操作のみであった。また、プレイヤが入力を正確に行ったとしてもその場合に出力されるメロディは予め決められたものであった。このように、従来の演奏ゲームでは、決められた操作を行うことによって決められたメロディが出力されるのみである。例えば、プレイヤが自由に演奏操作を行うことによって、予め決められたメロディに対してプレイヤがアレンジを加えて演奏することはできない。以上のように、従来の音楽演奏ゲームでは、プレイヤが行うことができる演奏の自由度は低く、ゲームとしての興趣性も低かった。
【０００４】
それ故、本発明の目的は、プレイヤが自由な演奏を行うことができる音楽演奏プログラム、音楽演奏装置、音楽演奏システム、および音楽演奏方法を提供することである。
【課題を解決するための手段】
【０００５】
本発明は、上記の課題を解決するために、以下の構成を採用した。なお、本欄における括弧内の参照符号および補足説明等は、本発明の理解を助けるために後述する実施形態との対応関係を示したものであって、本発明を何ら限定するものではない。
【０００６】
第１の発明は、プレイヤに所定の楽曲のメロディーを演奏させるための音楽演奏装置（ゲーム装置３）のコンピュータ（ＣＰＵ１０等）において実行される音楽演奏プログラム（ゲームプログラム６０）である。音楽演奏装置には、所定の楽曲のメロディーを構成する各音について、少なくとも当該各音の音高と当該各音を出力すべき出力タイミングとを表す楽曲データ（６３）が記憶されている。音楽演奏プログラムは、検知ステップ（Ｓ１０）と、入力受付ステップ（Ｓ１３）と、第１音出力ステップ（Ｓ２４）と、アドリブ音決定ステップ（Ｓ２８，Ｓ２９，Ｓ３０，およびＳ５１）と、第２音出力ステップ（Ｓ３２）とをコンピュータに実行させる。検知ステップにおいて、コンピュータは、楽曲データによる演奏の開始後、楽曲データに含まれる各音の中から出力タイミングが到来している音である対象音を逐次検知する。入力受付ステップにおいて、コンピュータは、音楽演奏装置の入力装置（コントローラ５）からの入力を受け付ける。第１音出力ステップにおいて、コンピュータは、入力受付ステップにおいて受け付けられた入力が、検知ステップにおいて対象音の出力タイミングが到来してから最初の入力である場合、当該対象音を出力する。アドリブ音決定ステップにおいて、コンピュータは、入力受付ステップにおいて受け付けられた入力が、検知ステップにおいて対象音の出力タイミングが到来してから２回目以降の入力である場合、任意の音であるアドリブ音の音高を決定する。第２音出力ステップにおいて、コンピュータは、アドリブ音決定ステップで決定された音高でアドリブ音を出力する。
【０００７】
第２の発明においては、アドリブ音決定ステップにおいて、コンピュータは、対象音の音高と対象音の次に出力タイミングが到来する次対象音の音高との少なくとも一方に基づいてアドリブ音の音高を決定してもよい。
【０００８】
第３の発明においては、アドリブ音決定ステップは、候補設定ステップ（Ｓ２８，Ｓ２９，またはＳ３０）と、選択ステップ（Ｓ５１）とを含んでいてもよい。候補設定ステップにおいて、コンピュータは、対象音の音高と次対象音の音高との少なくとも一方に基づいてアドリブ音の音高の候補を設定する。選択ステップにおいて、コンピュータは、候補設定ステップで設定された候補のうちの１つをアドリブ音の音高として選択する。
【０００９】
第４の発明においては、候補設定ステップは、対象音の音高である第１の音高と、次対象音の音高である第２の音高とに基づいて候補音域を設定する候補音域設定ステップ（Ｓ２８）を含んでいてもよい。このとき、アドリブ音の音高の候補は、候補音域設定ステップで設定された候補音域の範囲内で設定される。
【００１０】
第５の発明においては、候補音域設定ステップにおいて、コンピュータは、対象音の出力タイミングが到来した時点から次対象音の出力タイミングが到来する時点までの対象期間において、時間が経過するにつれて、第１の音高を含む音域から第２の音高を含む音域へと候補音域を変化させてもよい。
【００１１】
第６の発明においては、候補設定ステップは、中心音高算出ステップ（Ｓ４３）と、幅設定ステップ（Ｓ４４）とを含んでいてもよい。中心音高算出ステップにおいて、コンピュータは、候補音域の中心となる中心音高を、対象期間において時間が経過するにつれて第１の音高から第２の音高へと変化するように算出する（図１７参照）。幅設定ステップにおいて、コンピュータは、候補音域の幅を設定する。このとき、候補音域設定ステップにおいて、コンピュータは、候補音域を中心音高と候補音域の幅とから決定する。
【００１２】
第７の発明においては、候補設定ステップは、対象音の音高である第１の音高を含む音域を候補音域として設定する候補音域設定ステップを含んでいてもよい。このとき、アドリブ音の音高の候補は、候補音域設定ステップで設定された候補音域の範囲内で設定される。
【００１３】
第８の発明においては、候補音域設定ステップにおいて、コンピュータは、第１の音高を中心とした所定幅の音域を候補音域として設定してもよい。
【００１４】
第９の発明においては、候補設定ステップは、次対象音の音高である第２の音高を含む音域を候補音域として設定する候補音域設定ステップを含んでいてもよい。このとき、アドリブ音の音高の候補は、候補音域設定ステップで設定された候補音域の範囲内で設定される。
【００１５】
第１０の発明においては、候補音域設定ステップにおいて、コンピュータは、第２の音高を中心とした所定幅の音域を候補音域として設定してもよい。
【００１６】
第１１の発明においては、候補音域設定ステップにおいて、コンピュータは、対象音の出力タイミングが到来した時点から、対象音の次に出力タイミングが到来する次対象音の出力タイミングが到来する時点までの対象期間において、時間が経過するにつれて候補音域の幅が次第に小さくなるように候補音域を設定してもよい。
【００１７】
第１２の発明においては、候補音域設定ステップにおいて、コンピュータは、対象音の出力タイミングが到来した時点から所定時間の間は候補音域の幅を一定に維持してもよい。
【００１８】
第１３の発明においては、候補音域設定ステップにおいて、コンピュータは、時間の経過に対して定量または定率で候補音域の幅が小さくなるように候補音域を変化させてもよい。
【００１９】
第１４の発明においては、楽曲データには、所定の楽曲のメロディーを構成する各音の音色を示すデータが含まれてもよい。また、音楽演奏装置には、出力される音の音色毎に出力可能音域を関連付けた出力可能音域データ（６６）がさらに記憶されている。このとき、候補音域設定ステップにおいて、コンピュータは、対象音の音色に関連付けられている出力可能音域データの出力可能音域内の範囲となるように候補音域を設定する。
【００２０】
第１５の発明においては、音楽演奏装置には、所定の楽曲において用いられるコード音を示すコードデータ（６４）がさらに記憶されていてもよい。このとき、アドリブ音決定ステップにおいて、コンピュータは、コードデータにおいて規定されている所定の楽曲のコード音の中から１音を選択することによりアドリブ音の音高を選択する。
【００２１】
第１６の発明においては、音楽演奏装置には、所定の楽曲のスケール音を示すスケールデータ（６４）がさらに記憶されていてもよい。このとき、アドリブ音決定ステップにおいて、コンピュータは、スケールデータにおいて規定されている所定の楽曲のスケール音の中から１音を選択することによりアドリブ音の音高を決定する。
【００２２】
第１７の発明においては、音楽演奏プログラムは、判定ステップ（Ｓ３１）と、第３音出力ステップ（Ｓ３３）とをコンピュータにさらに実行させてもよい。判定ステップにおいて、コンピュータは、検知ステップで同一の対象音が検知さている期間内において、最後に対象音またはアドリブ音が発音されてから、入力受付ステップで入力を受け付けるまでに所定時間が経過したか否かを判定する。第３音出力ステップにおいて、コンピュータは、判定ステップの判定結果が否定となる場合、最後に出力された対象音またはアドリブ音の音高に基づいて決定される音高でアドリブ音を出力する。このとき、第２音出力ステップは、判定ステップの判定結果が肯定となる場合にのみ実行される。
【００２３】
また、本発明は、上記第１〜第１７の発明における各ステップを実行するゲーム装置と同等の機能を有するゲーム装置の形態で提供されてもよい。なお、当該ゲーム装置においては、ゲームプログラムを実行するＣＰＵによって上記各ステップにおける処理が実行されてもよいし、ゲーム装置が備える専用の回路によって上記各ステップにおける処理の一部または全部が実行されてもよい。
【発明の効果】
【００２４】
第１の発明によれば、対象音の出力タイミングが到来してから１回目の入力が行われた場合には、楽曲データで表される楽譜のメロディー通りの音高で対象音が出力される。そして、２回目以降の入力が行われた場合には、候補設定ステップで設定された候補のうちから１つの音高で対象音が出力される。したがって、第１の発明によれば、プレイヤは、１つの対象音に対して複数回の入力が可能となることに加え、１つの対象音に対する２回目以降の入力を行うことによって、楽譜のメロディー通りの音高とは同じでない音高で対象音を出力させることができる。すなわち、プレイヤは、楽曲データで表される楽譜のメロディーに自由にアレンジを加えることができ、自由に演奏を行うことができる。
【００２５】
第２および第５の発明によれば、対象音の出力タイミングが到来してから２回目以降の入力が行われた場合、出力される音の高さは、対象音の音高と次対象音の音高とに基づいて設定される候補音域から選択される。これによれば、当該出力される音の高さを、対象音および次対象音に比べて高すぎたり、低すぎたりしないように選択することができる。したがって、出力される音の高さをランダムに決定する場合でも、楽曲データで表される楽譜のメロディーに沿った自然な演奏結果となるように対象音を出力することができる。
【００２６】
第６の発明によれば、候補音域を、時間が経過するにつれて第１の音高を含む音域から第２の音高を含む音域へと容易に変化させることができる。また、中心音高を中心とした候補音域が設定されるので、中心音高に対して高音側と低音側とが均等になるように候補音域が設定される。これによれば、第２音出力ステップにおいて、出力される音の高さを、中心音高に対して高音側と低音側とでバランス良く選択することができる。
【００２７】
第７の発明によれば、対象音の出力タイミングが到来してから２回目以降の入力が行われた場合、出力される音の高さは、対象音の音高を含む候補音域から選択される。これによれば、当該出力される音の高さを、対象音に比べて高すぎたり、低すぎたりしないように選択することができる。したがって、出力される音の高さをランダムに決定する場合でも、楽曲データで表される楽譜のメロディーに沿った自然な演奏結果となるように対象音を出力することができる。
【００２８】
第８の発明によれば、第１の音高を中心とした候補音域が設定されるので、第１の音高に対して高音側と低音側とが均等になるように候補音域が設定される。これによれば、第２音出力ステップにおいて、出力される音の高さを、第１の音高に対して高音側と低音側とでバランス良く選択することができる。
【００２９】
第９の発明によれば、対象音の出力タイミングが到来してから２回目以降の入力が行われた場合、出力される音の高さは、次対象音の音高を含む候補音域から選択される。これによれば、当該出力される音の高さを、次対象音に比べて高すぎたり、低すぎたりしないように選択することができる。したがって、出力される音の高さをランダムに決定する場合でも、楽曲データで表される楽譜のメロディーに沿った自然な演奏結果となるように対象音を出力することができる。
【００３０】
第１０の発明によれば、第２の音高を中心とした候補音域が設定されるので、第２の音高に対して高音側と低音側とが均等になるように候補音域が設定される。これによれば、第２音出力ステップにおいて、出力される音の高さを、第２の音高に対して高音側と低音側とでバランス良く選択することができる。
【００３１】
第１１の発明によれば、候補音域は、その幅が次第に小さくなるように変化する。これによれば、対象期間において時間が経過するにつれて、対象音および／または次対象音に対して高すぎたり、低すぎたりする音高が選択されにくくなる。したがって、対象期間において出力される音と次の対象音とのつながりがスムーズになり、楽譜のメロディーに沿った自然な演奏結果となるように対象音を出力することができる。
【００３２】
第１２の発明によれば、対象音の出力タイミングが到来した時点から所定時間の間は候補音域の幅が一定に維持されるので、対象期間の初期においては幅広い音域から音を選択することができる。
【００３３】
第１３の発明によれば、候補音域の幅を容易に縮小することができる。
【００３４】
第１４の発明によれば、特定の音色の音に関して不自然な高さの音が出力されることを防止することができる。これによっても、自然な演奏結果となるように対象音を出力することができる。
【００３５】
第１５の発明によれば、コード音から対象音の高さが選択されるので、楽譜のメロディーに沿った自然な演奏結果となるように対象音を出力することができる。
【００３６】
第１６の発明によれば、スケール音から対象音の高さが選択されるので、楽譜のメロディーに沿った自然な演奏結果となるように対象音を出力することができる。
【００３７】
第１７の発明によれば、音の出力が短時間に連続する場合には、次に出力される対象音の高さは、前回に出力された音（最後に出力された音）に基づいて決定される。これによれば、自然な演奏結果となるように対象音を出力することができる。
【発明を実施するための最良の形態】
【００３８】
（ゲームシステムの全体構成）
図１を参照して、本発明の一実施形態に係るゲーム装置を含むゲームシステム１について説明する。図１は、ゲームシステム１の外観図である。以下、据置型のゲーム装置を一例にして、本実施形態に係るゲーム装置およびゲームプログラムについて説明する。図１において、ゲームシステム１は、テレビジョン受像器（以下、単に「テレビ」と記載する）２、ゲーム装置３、光ディスク４、コントローラ５、およびマーカ部６を含む。本システムは、コントローラ５を用いたゲーム操作に基づいてゲーム装置３において、楽曲の演奏を行う音楽演奏ゲームのためのゲーム処理を実行するものである。
【００３９】
ゲーム装置３には、当該ゲーム装置３に対して交換可能に用いられ、データの読み取りが可能な情報記憶媒体の一例である光ディスク４が脱着可能に挿入される。光ディスク４には、ゲーム装置３において実行されるためのゲームプログラムが記憶されている。ゲーム装置３の前面には光ディスク４の挿入口が設けられている。ゲーム装置３は、挿入口に挿入された光ディスク４に記憶されているゲームプログラムを読み出して実行することによってゲーム処理を実行する。なお、ゲームプログラムはゲーム装置３の内部メモリ（不揮発であることが好ましいが揮発性でもよい）に予め記憶されていてもよいし、ゲーム装置３は、ゲーム装置３とネットワークを介して接続される所定のサーバ（または他のゲーム装置）からゲームプログラムをダウンロードして内部メモリに記憶するようにしても構わない。
【００４０】
ゲーム装置３には、表示装置の一例であるテレビ２が接続コードを介して接続される。テレビ２は、ゲーム装置３において実行されるゲーム処理の結果得られるゲーム画像を表示する。また、テレビ２の画面の周辺（図１では画面の上側）には、マーカ部６が設置される。マーカ部６は、その両端に２つのマーカ６Ｒおよび６Ｌを備えている。マーカ６Ｒ（マーカ６Ｌも同様）は、具体的には１以上の赤外ＬＥＤであり、テレビ２の前方に向かって赤外光を出力する。マーカ部６はゲーム装置３に接続されており、ゲーム装置３はマーカ部６が備える各赤外ＬＥＤの点灯を制御することが可能である。
【００４１】
コントローラ５は、自機に対して行われた操作の内容を示す操作データをゲーム装置３に与える入力装置である。コントローラ５とゲーム装置３とは無線通信によって接続される。本実施形態では、コントローラ５とゲーム装置３との間の無線通信には例えばＢｌｕｅｔｏｏｔｈ（ブルートゥース）（登録商標）の技術が用いられる。なお、他の実施形態においてはコントローラ５とゲーム装置３とは通信可能に構成されればよく、有線で接続されてもよい。
【００４２】
（ゲーム装置３の内部構成）
次に、図２を参照して、ゲーム装置３の内部構成について説明する。図２は、ゲーム装置３の構成を示すブロック図である。ゲーム装置３は、ＣＰＵ１０、システムＬＳＩ１１、外部メインメモリ１２、ＲＯＭ／ＲＴＣ１３、ディスクドライブ１４、およびＡＶ−ＩＣ１５等を有する。
【００４３】
ＣＰＵ１０は、光ディスク４に記憶されたゲームプログラムを実行することによってゲーム処理を実行するものであり、ゲームプロセッサとして機能する。ＣＰＵ１０はシステムＬＳＩ１１に接続される。システムＬＳＩ１１には、ＣＰＵ１０の他、外部メインメモリ１２、ＲＯＭ／ＲＴＣ１３、ディスクドライブ１４およびＡＶ−ＩＣ１５が接続される。システムＬＳＩ１１は、それに接続される各構成要素間のデータ転送の制御、表示すべき画像の生成、外部装置からのデータの取得等の処理を行う。システムＬＳＩ１１の内部構成については後述する。揮発性の外部メインメモリ１２は、光ディスク４から読み出されたゲームプログラムや、フラッシュメモリ１７から読み出されたゲームプログラム等のプログラムを記憶したり、各種データを記憶したりするものであり、ＣＰＵ１０のワーク領域やバッファ領域として用いられる。ＲＯＭ／ＲＴＣ１３は、ゲーム装置３の起動用のプログラムが組み込まれるＲＯＭ（いわゆるブートＲＯＭ）と、時間をカウントするクロック回路（ＲＴＣ：Ｒｅａｌ  Ｔｉｍｅ  Ｃｌｏｃｋ）とを有する。ディスクドライブ１４は、光ディスク４からプログラムデータやテクスチャデータ等を読み出し、後述する内部メインメモリ１１ｅまたは外部メインメモリ１２に読み出したデータを書き込む。
【００４４】
システムＬＳＩ１１には、入出力プロセッサ１１ａ、ＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｏｒ  Ｕｎｉｔ）１１ｂ、ＤＳＰ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ）１１ｃ、ＶＲＡＭ１１ｄ、および内部メインメモリ１１ｅが設けられる。図示は省略するが、これらの構成要素１１ａ〜１１ｅは内部バスによって互いに接続される。
【００４５】
ＧＰＵ１１ｂは、描画手段の一部を形成し、ＣＰＵ１０からのグラフィクスコマンド（作画命令）に従って画像を生成する。ＶＲＡＭ１１ｄは、ＧＰＵ１１ｂがグラフィクスコマンドを実行するために必要なデータ（ポリゴンデータやテクスチャデータ等のデータ）を記憶する。画像が生成される際には、ＧＰＵ１１ｂは、ＶＲＡＭ１１ｄに記憶されたデータを用いて画像データを作成する。
【００４６】
ＤＳＰ１１ｃは、オーディオプロセッサとして機能し、内部メインメモリ１１ｅや外部メインメモリ１２に記憶されるサウンドデータや音波形（音色）データを用いて、音声データを生成する。
【００４７】
上述のように生成された画像データおよび音声データは、ＡＶ−ＩＣ１５によって読み出される。ＡＶ−ＩＣ１５は、読み出した画像データをＡＶコネクタ１６を介してテレビ２に出力するとともに、読み出した音声データを、テレビ２に内蔵されるスピーカ２ａに出力する。これによって、画像がテレビ２に表示されるとともに音がスピーカ２ａから出力される。
【００４８】
入出力プロセッサ（Ｉ／Ｏプロセッサ）１１ａは、それに接続される構成要素との間でデータの送受信を実行したり、外部装置からのデータのダウンロードを実行したりする。入出力プロセッサ１１ａは、フラッシュメモリ１７、無線通信モジュール１８、無線コントローラモジュール１９、拡張コネクタ２０、およびメモリカード用コネクタ２１に接続される。無線通信モジュール１８にはアンテナ２２が接続され、無線コントローラモジュール１９にはアンテナ２３が接続される。
【００４９】
入出力プロセッサ１１ａは、無線通信モジュール１８およびアンテナ２２を介してネットワークに接続し、ネットワークに接続される他のゲーム装置や各種サーバと通信することができる。入出力プロセッサ１１ａは、定期的にフラッシュメモリ１７にアクセスし、ネットワークへ送信する必要があるデータの有無を検出し、当該データがある場合には、無線通信モジュール１８およびアンテナ２２を介してネットワークに送信する。また、入出力プロセッサ１１ａは、他のゲーム装置から送信されてくるデータやダウンロードサーバからダウンロードしたデータを、ネットワーク、アンテナ２２および無線通信モジュール１８を介して受信し、受信したデータをフラッシュメモリ１７に記憶する。ＣＰＵ１０はゲームプログラムを実行することにより、フラッシュメモリ１７に記憶されたデータを読み出してゲームプログラムで利用する。フラッシュメモリ１７には、ゲーム装置３と他のゲーム装置や各種サーバとの間で送受信されるデータの他、ゲーム装置３を利用してプレイしたゲームのセーブデータ（ゲームの結果データまたは途中データ）が記憶されてもよい。
【００５０】
また、入出力プロセッサ１１ａは、コントローラ５から送信される操作データをアンテナ２３および無線コントローラモジュール１９を介して受信し、内部メインメモリ１１ｅまたは外部メインメモリ１２のバッファ領域に記憶（一時記憶）する。
【００５１】
さらに、入出力プロセッサ１１ａには、拡張コネクタ２０およびメモリカード用コネクタ２１が接続される。拡張コネクタ２０は、ＵＳＢやＳＣＳＩのようなインターフェースのためのコネクタであり、外部記憶媒体のようなメディアを接続したり、他のコントローラのような周辺機器を接続したり、有線の通信用コネクタを接続することによって無線通信モジュール１８に替えてネットワークとの通信を行ったりすることができる。メモリカード用コネクタ２１は、メモリカードのような外部記憶媒体を接続するためのコネクタである。例えば、入出力プロセッサ１１ａは、拡張コネクタ２０やメモリカード用コネクタ２１を介して外部記憶媒体にアクセスし、外部記憶媒体にデータを保存したり、外部記憶媒体からデータを読み出したりすることができる。
【００５２】
ゲーム装置３には、電源ボタン２４、リセットボタン２５、およびイジェクトボタン２６が設けられる。電源ボタン２４およびリセットボタン２５は、システムＬＳＩ１１に接続される。電源ボタン２４がオンされると、ゲーム装置３の各構成要素に対して、図示しないＡＣアダプタを経て電源が供給される。リセットボタン２５が押されると、システムＬＳＩ１１は、ゲーム装置３の起動プログラムを再起動する。イジェクトボタン２６は、ディスクドライブ１４に接続される。イジェクトボタン２６が押されると、ディスクドライブ１４から光ディスク４が排出される。
【００５３】
（コントローラ５の構成）
次に、図３〜図７を参照して、コントローラ５について説明する。図３および図４は、コントローラ５の外観構成を示す斜視図である。図３は、コントローラ５の上側後方から見た斜視図であり、図４は、コントローラ５を下側前方から見た斜視図である。
【００５４】
図３および図４において、コントローラ５は、例えばプラスチック成型によって形成されたハウジング３１を有している。ハウジング３１は、その前後方向（図３に示すＺ軸方向）を長手方向とした略直方体形状を有しており、全体として大人や子供の片手で把持可能な大きさである。プレイヤは、コントローラ５に設けられたボタンを押下すること、および、コントローラ５自体を動かしてその位置や姿勢を変えることによってゲーム操作を行うことができる。
【００５５】
ハウジング３１には、複数の操作ボタンが設けられる。図３に示すように、ハウジング３１の上面には、十字ボタン３２ａ、１番ボタン３２ｂ、２番ボタン３２ｃ、Ａボタン３２ｄ、マイナスボタン３２ｅ、ホームボタン３２ｆ、プラスボタン３２ｇ、および電源ボタン３２ｈが設けられる。一方、図４に示すように、ハウジング３１の下面には凹部が形成されており、当該凹部の後面側傾斜面にはＢボタン３２ｉが設けられる。これらの各操作ボタン３２ａ〜３２ｉには、ゲーム装置３が実行するゲームプログラムに応じた機能が適宜割り当てられる。また、電源ボタン３２ｈは遠隔からゲーム装置３本体の電源をオン／オフするためのものである。ホームボタン３２ｆおよび電源ボタン３２ｈは、その上面がハウジング３１の上面に埋没している。これによって、プレイヤがホームボタン３２ｆまたは電源ボタン３２ｈを誤って押下することを防止することができる。
【００５６】
ハウジング３１の後面にはコネクタ３３が設けられている。コネクタ３３は、コントローラ５に他の機器（例えば、他のコントローラ）を接続するために利用される。
【００５７】
ハウジング３１上面の後方には複数（図３では４つ）のＬＥＤ３４ａ〜３４ｄが設けられる。ここで、コントローラ５には、他のコントローラと区別するためにコントローラ種別（番号）が付与される。各ＬＥＤ３４ａ〜３４ｄは、コントローラ５に現在設定されている上記コントローラ種別をプレイヤに通知したり、コントローラ５の電池残量をプレイヤに通知したりする等の目的で用いられる。具体的には、コントローラ５を用いてゲーム操作が行われる際、上記コントローラ種別に応じて複数のＬＥＤ３４ａ〜３４ｄのいずれか１つが点灯する。
【００５８】
また、コントローラ５は撮像情報演算部３５（図６）を有しており、図４に示すように、ハウジング３１前面には撮像情報演算部３５の光入射面３５ａが設けられる。光入射面３５ａは、マーカ６Ｒおよび６Ｌからの赤外光を少なくとも透過する材質で構成される。
【００５９】
ハウジング３１上面における１番ボタン３２ｂとホームボタン３２ｆとの間には、コントローラ５に内蔵されるスピーカ４９（図５）からの音を外部に放出するための音抜き孔３１ａが形成されている。
【００６０】
次に、図５および図６を参照して、コントローラ５の内部構造について説明する。図５および図６は、コントローラ５の内部構造を示す図である。なお、図５は、コントローラ５の上筐体（ハウジング３１の一部）を外した状態を示す斜視図である。図６は、コントローラ５の下筐体（ハウジング３１の一部）を外した状態を示す斜視図である。図６に示す斜視図は、図５に示す基板３０を裏面から見た斜視図となっている。
【００６１】
図５において、ハウジング３１の内部には基板３０が固設されており、当該基板３０の上主面上に各操作ボタン３２ａ〜３２ｈ、各ＬＥＤ３４ａ〜３４ｄ、加速度センサ３７、アンテナ４５、およびスピーカ４９等が設けられる。これらは、基板３０等に形成された配線（図示せず）によってマイクロコンピュータ（Ｍｉｃｒｏ  Ｃｏｍｐｕｔｅｒ：マイコン）４２（図６参照）に接続される。本実施形態では、加速度センサ３７は、Ｘ軸方向に関してコントローラ５の中心からずれた位置に配置されている。これによって、コントローラ５をＺ軸回りに回転させたときのコントローラ５の動きが算出しやすくなる。また、加速度センサ３７は、長手方向（Ｚ軸方向）に関してコントローラ５の中心よりも前方に配置されている。また、無線モジュール４４（図７）およびアンテナ４５によって、コントローラ５がワイヤレスコントローラとして機能する。
【００６２】
一方、図６において、基板３０の下主面上の前端縁に撮像情報演算部３５が設けられる。撮像情報演算部３５は、コントローラ５の前方から順に赤外線フィルタ３８、レンズ３９、撮像素子４０、および画像処理回路４１を備えている。これらの部材３８〜４１はそれぞれ基板３０の下主面に取り付けられる。
【００６３】
さらに、基板３０の下主面上には、上記マイコン４２およびバイブレータ４８が設けられている。バイブレータ４８は、例えば振動モータやソレノイドであり、基板３０等に形成された配線によってマイコン４２と接続される。マイコン４２の指示によりバイブレータ４８が作動することによってコントローラ５に振動が発生する。これによって、コントローラ５を把持しているプレイヤの手にその振動が伝達される、いわゆる振動対応ゲームを実現することができる。本実施形態では、バイブレータ４８は、ハウジング３１のやや前方寄りに配置される。つまり、バイブレータ４８がコントローラ５の中心よりも端側に配置することによって、バイブレータ４８の振動によりコントローラ５全体を大きく振動させることができる。また、コネクタ３３は、基板３０の下主面上の後端縁に取り付けられる。なお、図５および図６に示す他、コントローラ５は、マイコン４２の基本クロックを生成する水晶振動子、スピーカ４９に音声信号を出力するアンプ等を備えている。
【００６４】
なお、図３〜図６に示したコントローラ５の形状や、各操作ボタンの形状、加速度センサやバイブレータの数および設置位置等は単なる一例に過ぎず、他の形状、数、および設置位置であっても、本発明を実現することができる。また、本実施形態では、撮像手段による撮像方向はＺ軸正方向であるが、撮像方向はいずれの方向であってもよい。すなわち、コントローラ５における撮像情報演算部３５の位置（撮像情報演算部３５の光入射面３５ａ）は、ハウジング３１の前面でなくてもよく、ハウジング３１の外部から光を取り入れることができれば他の面に設けられても構わない。
【００６５】
図７は、コントローラ５の構成を示すブロック図である。コントローラ５は、操作部３２（各操作ボタン３２ａ〜３２ｉ）、コネクタ３３、撮像情報演算部３５、通信部３６、および加速度センサ３７を備えている。コントローラ５は、自機に対して行われた操作内容を示すデータを操作データとしてゲーム装置３へ送信するものである。
【００６６】
操作部３２は、上述した各操作ボタン３２ａ〜３２ｉを含み、各操作ボタン３２ａ〜３２ｉに対する入力状態（各操作ボタン３２ａ〜３２ｉが押下されたか否か）を示す操作ボタンデータを通信部３６のマイコン４２へ出力する。
【００６７】
撮像情報演算部３５は、撮像手段が撮像した画像データを解析し、画像内で輝度が高い領域を判別してその領域の重心位置やサイズなどを算出するためのシステムである。撮像情報演算部３５は、例えば最大２００フレーム／秒程度のサンプリング周期を有するので、比較的高速なコントローラ５の動きでも追跡して解析することができる。
【００６８】
撮像情報演算部３５は、赤外線フィルタ３８、レンズ３９、撮像素子４０、および画像処理回路４１を含んでいる。赤外線フィルタ３８は、コントローラ５の前方から入射する光から赤外線のみを通過させる。レンズ３９は、赤外線フィルタ３８を透過した赤外線を集光して撮像素子４０へ入射させる。撮像素子４０は、例えばＣＭＯＳセンサやあるいはＣＣＤセンサのような固体撮像素子であり、レンズ３９が集光した赤外線を受光して画像信号を出力する。ここで、テレビ２の表示画面近傍に配置されるマーカ部６のマーカ６Ｒおよび６Ｌは、テレビ２の前方に向かって赤外光を出力する赤外ＬＥＤで構成される。したがって、赤外線フィルタ３８を設けることによって、撮像素子４０は、赤外線フィルタ３８を通過した赤外線だけを受光して画像データを生成するので、マーカ６Ｒおよび６Ｌの画像をより正確に撮像することができる。以下では、撮像素子４０によって撮像された画像を撮像画像と呼ぶ。撮像素子４０によって生成された画像データは、画像処理回路４１で処理される。画像処理回路４１は、撮像画像内における撮像対象（マーカ６Ｒおよび６Ｌ）の位置を算出する。以下では、算出されたマーカの位置を示す座標を「マーカ座標」と呼ぶ。画像処理回路４１は、マーカ座標のデータ（マーカ座標データ）を通信部３６のマイコン４２へ出力する。マーカ座標データは、マイコン４２によって操作データとしてゲーム装置３に送信される。マーカ座標はコントローラ５自体の向き（姿勢）や位置に対応して変化するので、ゲーム装置３はこのマーカ座標を用いてコントローラ５の向きや位置を算出することができる。
【００６９】
加速度センサ３７は、コントローラ５の加速度（重力加速度を含む）を検出する、すなわち、コントローラ５に加わる力（重力を含む）を検出する。加速度センサ３７は、当該加速度センサ３７の検出部に加わっている加速度のうち、センシング軸方向に沿った直線方向の加速度（直線加速度）の値を検出する。本実施形態では、加速度センサ３７は、コントローラ５を基準とした上下方向（図３に示すＹ軸方向）、左右方向（図３に示すＸ軸方向）および前後方向（図３に示すＺ軸方向）の３軸方向に関してそれぞれ直線加速度を検出する。検出された加速度は、コントローラ５を基準に設定されるＸＹＺ座標系における３次元のベクトル（ＡＸ，ＡＹ，ＡＺ）として表される。加速度センサ３７が検出した加速度を示すデータ（加速度データ）は、通信部３６へ出力される。なお、加速度センサ３７が検出した加速度は、コントローラ５自体の向き（姿勢）や動きに対応して変化するので、ゲーム装置３は加速度データを用いてコントローラ５の向きや動きを算出することができる。
【００７０】
通信部３６は、マイコン４２、メモリ４３、無線モジュール４４、およびアンテナ４５を含んでいる。マイコン４２は、処理を行う際にメモリ４３を記憶領域として用いながら、マイコン４２が取得したデータをゲーム装置３へ無線送信する無線モジュール４４を制御する。
【００７１】
操作部３２、撮像情報演算部３５、および加速度センサ３７からマイコン４２へ出力された各データ（操作ボタンデータ、マーカ座標データ、および加速度データ）は、一時的にメモリ４３に格納される。これらの各データは、上記操作データとしてゲーム装置３へ送信される。すなわち、マイコン４２は、ゲーム装置３の無線コントローラモジュール１９への送信タイミングが到来すると、メモリ４３に格納されている操作データを無線モジュール４４へ出力する。無線モジュール４４は、例えばＢｌｕｅｔｏｏｔｈ（ブルートゥース）（登録商標）の技術を用いて、所定周波数の搬送波を操作データで変調し、その微弱電波信号をアンテナ４５から放射する。つまり、操作データは、無線モジュール４４で微弱電波信号に変換されてコントローラ５から送信される。微弱電波信号はゲーム装置３側の無線コントローラモジュール１９で受信される。受信された微弱電波信号について復調や復号を行うことによって、ゲーム装置３は操作データを取得することができる。そして、ゲーム装置３のＣＰＵ１０は、取得した操作データとゲームプログラムとに基づいてゲーム処理を行う。なお、通信部３６から無線コントローラモジュール１９への無線送信は所定の周期毎に逐次行われるが、ゲームの処理は１／６０秒を単位として（１フレーム時間として）行われることが一般的であるので、この時間以下の周期で送信を行うことが好ましい。コントローラ５の通信部３６は、例えば１／２００秒に１回の割合で各操作データをゲーム装置３の無線コントローラモジュール１９へ出力する。
【００７２】
上記コントローラ５を用いることによって、プレイヤは、各操作ボタンを押下する従来の一般的なゲーム操作に加えて、コントローラ５によって画面上の任意の位置を指示する操作、および、コントローラ５自体を動かす操作を行うことができる。例えば、後述する音楽演奏ゲームにおいては、プレイヤは、コントローラ５を上から下へ動かす操作によって、ゲーム装置３に音を出力させるための入力（発音入力）を行うことができる。
【００７３】
（ゲーム装置で行われるゲームの概要）
次に、ゲーム装置３で行われるゲームの概要を説明する。本ゲームは、コントローラ５に対してプレイヤが入力を行ったことに応じてゲーム装置３が音を出力することによって、プレイヤに演奏を行わせる音楽演奏ゲームである。図８は、本実施形態におけるゲームにおいて表示されるゲーム画像の一例を示す図である。図８に示すように、テレビ２の画面には演奏すべき楽曲のメロディーを表す楽譜５１が表示される。図８においては、楽譜５１上に音符５２〜５５が表示されている。本実施形態においては、楽曲全体のうち一部（図８では１小節分）の楽譜のみが画面に表示される。具体的には、現時点で演奏されるべき箇所の楽譜のみが画面に表示される。ゲーム装置３は、演奏が進むのに伴って、表示する楽譜の内容を順次更新する。なお、本実施形態では１小節分の楽譜のみが画面に表示されるが、他の実施形態では、２小節分以上の楽譜が同時に画面に表示されてもよいし、楽曲全体の楽譜が同時に画面に表示されてもよい。また、本実施形態では、楽曲は、プレイヤによって演奏されるパート（以下、対象パートと呼ぶ）と、ゲーム装置３が自動的に演奏を行う１以上のパートという、複数のパートから構成される。本実施形態では、プレイヤが演奏する対象パートのメロディーを表す楽譜が画面に表示され、対象パート以外の他パートの楽譜は画面に表示されない。ただし、他の実施形態においては、ゲーム装置３は、対象パートの楽譜とともに他パートの楽譜をも画面に表示するようにしてもよい。
【００７４】
また、画面には、楽譜５１とともにタイミングバー５６が表示される。タイミングバー５６は、演奏が進む方向（図８では右側）に楽譜５１上を演奏の進行に伴って（時間の経過に伴って）移動していく（図８に示す矢印参照）。タイミングバー５６が表示中の楽譜の最後（図８では楽譜５１の右端）まで移動すると、次の楽譜の内容が新たに表示される。そして、タイミングバー５６は新たに表示された楽譜の最初（左端）から最後（右端）へと移動する。演奏中においては、楽譜の表示の更新とタイミングバー５６の移動とが繰り返される。タイミングバー５６は、入力を行うべきタイミングをプレイヤに通知するための画像である。プレイヤは、楽譜５１上の音符の位置にタイミングバー５６が位置したタイミングで入力を行うことによって、楽譜通りのタイミングで各音符の音を演奏することができる。
【００７５】
本実施形態では、プレイヤが入力を行った場合、タイミングバー５６の位置にかかわらず、ゲーム装置３は入力に応じて音を出力する。つまり、本実施形態では、タイミングバー５６は、楽譜５１通りのタイミングで各音符の音を演奏するための目安にすぎず、タイミングバー５６の位置が音符の位置から外れていてもプレイヤの入力に応じて音が出力される。
【００７６】
ここで、ゲーム装置３は、プレイヤの入力に応じて出力される音を決定するために、メロディーエリアという概念を用いる。ここで、「音を決定する」とは、音の音色、音高（音の高さ）、および、音長（音が出力される時間の長さ）等を決定することである。メロディーエリアとは、プレイヤが演奏すべきメロディーを構成する各音についてそれぞれ関連付けられる時間領域である。図９は、各音符に関連付けられるメロディーエリアの一例を示す図である。図９に示されるように、本実施形態では、音に関連付けられるメロディーエリアは、楽譜上における当該音の位置（当該音を出力すべき時点）から、当該音の次の音の位置までの時間領域に設定される。例えば図９において、音符５２の音に関連付けられるメロディーエリアは、音符５２の位置から、次の音符５３の位置までの時間領域である。なお、楽譜における最後の音に関連付けられるメロディーエリアは、楽譜上における当該音の位置から楽譜の最後の位置（演奏の終了時点）までの時間領域に設定されてもよいし、当該音の位置から所定の長さの時間領域に設定されてもよい。なお、楽譜に休符がある場合には、休符を無視してメロディーエリアを設定してもよいし、休符の位置から当該休符の次の音符の位置までの時間領域にはメロディーエリアを設定しないようにしてもよい。
【００７７】
あるメロディーエリアにおいて（メロディーエリア内の時点において）プレイヤによる入力が行われた場合、当該入力に対応する音（当該入力に応じて出力される音）の音色および音長は、ゲーム装置３が記憶している楽曲データの内容に従って決定される。楽曲データは、楽譜上の各音符の音について、音色、音高、音長、および出力タイミング等の情報を表すデータである（図１１参照）。したがって、あるメロディーエリアにおいて行われた入力に対応する音の音色および音長は、当該あるメロディーエリアに関連付けられる音について楽曲データにおいて予め規定されている音色および音長に決定される。以上のように、本実施形態では、単一のメロディーエリアにおいてプレイヤによる入力が複数回行われた場合、音色および音長が同じ音（後述するが、音高は異なる）が入力回数と同じ回数だけ出力される。
【００７８】
一方、あるメロディーエリアにおいてプレイヤによる入力が行われた場合、当該入力に対応する音の高さは、次のようにして決定される。すなわち、あるメロディーエリアにおいて最初に行われた入力に対応する音の高さは、ゲーム装置３が記憶している楽曲データの内容に従って決定される。具体的には、あるメロディーエリアにおいて最初に行われた入力に対応する音の高さは、当該あるメロディーエリアに関連付けられる音について楽曲データにおいて予め規定されている音高に決定される（図９参照）。つまり、メロディーエリア内に行われた最初の入力に対応する音は、楽譜通りの音高で出力される。なお、以下では、楽曲データにおいて予め規定されている音高を「基準音高」と呼ぶ。
【００７９】
また、図９に示されるように、あるメロディーエリアにおいて２回目以降に行われた入力に対応する音の高さは、（後述する候補音域の範囲内で）ランダムに決定される。つまり、メロディーエリアにおいて行われた２回目以降の入力に対応する音は、必ずしも楽譜通りの基準音高では出力されず、楽譜とは異なる音高で出力されることもある。なお、詳細は後述するが、本実施形態では、２回目の入力に対応する音の高さの決定方法と、３回目以降の入力に対応する音の高さの決定方法とは異なる（図９参照）。
【００８０】
図９を用いて具体的に説明すると、「レ」の音高を表す音符５２に関連付けられるメロディーエリアにおいて３回の入力が行われた場合を考える。この場合において、１回目の入力に対応する音は、基準音高、すなわち「レ」の音高で出力される。一方、２回目および３回目の入力に対応する音の高さは、ランダムに決定され、楽譜通りの「レ」の音高で出力されるとは限らない。なお、メロディーエリアが変更され、「ラ」の音高を表す音符５３に関連付けられるメロディーエリア内の時間帯において新たに入力が行われた場合には、当該入力は１回目の入力であるので、基準音高、すなわち「ラ」の音高で音が出力される。
【００８１】
以上のように、本実施形態では、楽曲のメロディーを構成する各音についてメロディーエリアが設定される。そして、メロディーエリア内における１回目の出力音（メロディーエリア内の時間帯において１回目に行われた入力に応じて出力される音）は、基準音高で出力され、メロディーエリア内における２回目以降の出力音は、ランダムに決められる音高で出力される。これによれば、プレイヤは、タイミングバー５６の移動に合わせて適切なタイミングで入力を行うことによって、上記１回目の出力音として楽譜通りの音高で音を出力させることができるので、楽曲のメロディーを正確に演奏することができる。このように、本ゲームでは、プレイヤは、従来の音楽演奏ゲームと同様、「タイミング良く入力を行うことによって正確に（楽譜の内容に忠実に）演奏を行う」という遊び方でゲームをプレイすることができる。
【００８２】
さらに、本実施形態では、プレイヤは、メロディーエリアにおいて２回目以降の出力音を自由に出力させることができる。これによって、プレイヤは、楽譜通りの音を出力することに加え、楽譜のメロディーにアレンジを加えることができる。以下では、メロディーエリアにおける２回目以降の出力音を「アドリブ音」と呼ぶ。したがって、本ゲームでは、上記の従来の遊び方に加え、「楽譜のメロディーに自由にアレンジを加える（アドリブ音を加える）」という、従来の音楽演奏ゲームにはない遊び方をプレイヤに提供することができる。
【００８３】
また、本実施形態によれば、メロディーエリア内における１回目の出力音は楽譜通りの基準音高で音が出力されるので、メロディーエリアにおいて最低１回の入力が行われれば、楽譜のメロディーは少なくとも出力されることになる。ここで、仮に、メロディーエリア内における１回目の出力音の高さをランダムに決定してしまうと、メロディーエリアにおいてプレイヤが最低１回の入力を行ったとしても、演奏結果としては楽譜のメロディーとは異なるメロディーが出力されることになる。つまり、プレイヤが正しく入力操作を行ったとしても、本来出力されるべき楽譜のメロディーが出力されないので、演奏結果がプレイヤの予想するメロディーとは異なるものとなり、演奏結果が不自然なメロディーになってしまう。これに対して、本実施形態によれば、メロディーエリアにおいてプレイヤが最低１回入力を行えば、楽譜のメロディーとは異なるメロディーが出力されることがないので、演奏結果のメロディーが不自然になることを防止することができる。
【００８４】
なお、本実施形態においては、メロディーエリア内における２回目以降の出力音（アドリブ音）の音高はランダムに決定されるが、アドリブ音の高さが楽譜のメロディーに沿った自然な音高に決定されるように、ゲーム装置３は種々の処理を行う。例えば、ゲーム装置３は、現在のメロディーエリアに関連付けられた音の基準音高と、次のメロディーエリアに関連付けられた音の基準音高とに基づいて候補音域を設定し、出力すべき音の高さを候補音域の範囲から選択する。また、例えば、ゲーム装置３は、出力すべき音の高さを、楽曲のコードおよびスケールに属する音の中から選択する。なお、アドリブ音の高さを自然なものにするための処理の詳細については後述する。
【００８５】
（ゲーム処理の詳細）
以下、図１０〜図２２を参照して、本実施形態に係るゲーム装置において実行されるゲーム処理の詳細について説明する。まず、本実施形態におけるゲーム処理において用いられるデータについて説明する。図１０は、ゲーム装置３のメインメモリ（外部メインメモリ１２または内部メインメモリ１１ｅ）に記憶される主なデータを示す図である。図１０に示すように、メインメモリには、ゲームプログラム６０、操作データ６１、およびゲーム処理用データ６２等が記憶される。
【００８６】
ゲームプログラム６０は、後述するゲーム処理（図１４）をゲーム装置３のＣＰＵ１０に実行させるためのプログラムである。ゲームプログラム６０は、ゲーム装置３に電源が投入された後の適宜のタイミングで光ディスク４からその一部または全部が読み込まれてメインメモリに記憶される。
【００８７】
操作データ６１は、コントローラ５からゲーム装置３へ送信されてきてメインメモリに記憶される操作データである。操作データ６１には、操作ボタンデータ、マーカ座標データ、および加速度データが含まれる。操作ボタンデータは、各操作ボタン３２ａ〜３２ｉに対する入力状態を示すデータである。マーカ座標データは、上記撮像情報演算部３５によって算出される上記マーカ座標を示すデータである。加速度データは、加速度センサ３７によって検出される加速度ベクトルを示すデータである。上述したように、操作データはコントローラ５からゲーム装置３へ１／２００秒に１回の割合で送信されるので、メインメモリに記憶される操作データはこの割合で更新される。メインメモリには、最新の（最後に取得された）操作データのみが記憶されればよい。
【００８８】
ゲーム処理用データ６２は、後述するゲーム処理（図１４）において用いられるデータである。ゲーム処理用データ６２は、楽曲データ６３、コードデータ６４、スケールデータ６５、出力可能音域データ６６、現在ティック数データ６７、前回ティック数データ６８、対象音データ６９、次対象音データ７０、入力カウンタデータ７１、候補音域データ７２、候補コード音高データ７３、候補スケール音高データ７４、および前回音高データ７５を含む。なお、ゲーム処理用データ６２は、図１０に示すデータの他、楽曲を構成する各パートの音源データや、ゲーム画像として表示される各種オブジェクト（音符やタイミングバー等）の画像データ等、ゲーム処理に必要なデータを含む。
【００８９】
楽曲データ６３は、演奏される楽曲の内容を表すデータである。本実施形態では、楽曲データ６３としてＭＩＤＩ形式のデータを用いる。図１１は、楽曲データ６３の一例を示す図である。なお、図１１は、楽曲に含まれる各パートのうち１つのパートについての内容を示している。実際には、楽曲データ６３には、楽曲に含まれる各パートについてのデータが含まれる。また、図１０では、１つの楽曲の楽曲データのみがメインメモリに記憶されているものとして記載しているが、複数の楽曲についてのそれぞれの楽曲データがメインメモリに記憶されてもよい。
【００９０】
図１１に示されるように、本実施形態における楽曲データ６３は、演奏される楽曲のメロディーを構成する各音について、出力タイミング、音色、音高、および音長の情報を示す。
【００９１】
出力タイミングの情報は、音が出力されるべきタイミングを示す。ここで、本実施形態では、楽曲における時間の単位を「１ティック」とし、楽曲の開始から終了までの時間領域における時点をティック数で表す。つまり、演奏中における任意の時点は、ティック数で表すことができる。したがって、上記出力タイミングの情報もティック数で表すことができる（図１１参照）。出力タイミングの情報は、演奏の開始時点を基準（０ティック）としたティック数で表される。例えば図１１に示す表の２行目は、演奏の開始時点から１９２ティック経過した時点で音を出力することを示している。なお、ティック数は絶対的な時間の長さを表すものではなく、１ティックの絶対的な時間の長さは、楽曲のテンポによって変化する。楽曲のテンポは、楽曲データにおいて定められていてもよいし、プレイヤが適宜設定することができるようにしてもよい。また、４分音符の長さに相当するティック数をタイムベースと呼ぶ。本実施形態では、タイムベースは例えば「４８」に設定される。すなわち、本実施形態では４分音符の長さを４８ティックとする。タイムベースは、時間領域における分解能を表している。
【００９２】
また、音色の情報とは、予め用意されている音源（音色）の種類を識別するための識別子である。例えば図１１に示す表の第２〜第５行では、識別子の番号が“１１”である音源を用いて４つの音を出力することを示している。音色の情報は、変更するまでの間は前の情報が引き継がれるので、初回設定時および変更時以外には記述しなくても良い。
【００９３】
音高の情報は、音の高さを表す。ここでは、音高は、例えば“オクターブ「２」の「レ」”のように、オクターブの高さと音名とによって表される。オクターブの高さは数値で表される。音名は、「ド」〜「シ」（「ド」、「ド＃」、「レ」、「レ＃」、「ミ」、「ファ」、「ファ＃」、「ソ」、「ソ＃」、「ラ」、「ラ＃」、「シ」）までのいずれかである。
【００９４】
また、音長とは、音を出力する時間の長さをティック数で表したものである。音長は、音の出力を開始する時点を基準（０ティック）としたティック数で表される。例えば図１１に示す表の２行目は、４８ティック分の期間だけ音を出力することを示している。なお、ゲーム装置３が楽曲データ６３に従って音を出力する場合に実際に発音される音の長さは、音長の情報の他、音の音色や楽曲のリズム等によっても変化する。例えば、オルガンやバイオリンの音色であれば比較的長く音が出力される一方、ギターやピアノの音色であれば比較的短く音が出力される。
【００９５】
なお、楽曲データ６３は、楽曲のメロディーを構成する各音について、当該各音の高さと当該各音を出力すべき出力タイミングとを特定することができるものであればどのような形式であってもよい。例えば、本実施形態では、オクターブおよび音名という２種類の情報によって音高が表されたが、他の実施形態では、音高を１種類の数値で表すようにしてもよい。また、例えば、他の実施形態では、楽曲データは、上記の情報に加えて、音の大きさを示す情報を含むものであってもよい。
【００９６】
コードデータ６４は、楽曲の時間領域毎に用いるべきコードを示すデータである。図１２は、コードデータ６４の一例を示す図である。図１２に示されるように、コードデータ６４は、楽曲の各エリア（時間領域）に対して、そのエリアで用いられるコード音（コードトーン）の音名を関連付けたデータである。例えば図１２では、エリアＡに対しては「ミ−ソ−シ−レ」の音名が関連付けられ、エリアＢに対しては「レ−ファ−ラ−ド」の音名が関連付けられ、エリアＣに対しては「ソ−シ−レ−ミ−ファ」の音名が関連付けられる。なお、各エリアの始端および終端は、上記出力タイミングの情報と同様、演奏の開始時点を基準としたティック数で表される。また、コードデータ６４において規定されるエリアは、上述したメロディーエリアとは独立したものであり、メロディーエリアと一致している必要はない。また、例えば転調がない楽曲においては、コードデータ６４において規定されるエリアは１つであってもよい、すなわち、楽曲の全時間領域について１種類のコードトーンが関連付けられてもよい。コードデータ６４の内容は、例えば、プレイヤによって演奏される対象パート以外の他パートにおいて用いられるコードに従って決められる。詳細は後述するが、コードデータ６４は、上記アドリブ音の高さを決定するために用いられる。
【００９７】
スケールデータ６５は、楽曲の時間領域毎に用いるべきスケールを示すデータである。図１３は、スケールデータ６５の一例を示す図である。図１３に示されるように、スケールデータ６５は、楽曲の各エリア（時間領域）に対して、そのエリアで用いられるスケール音（スケールトーン）の音名を関連付けたデータである。例えば図１３では、エリアａに対しては「ド−レ−ミ−ファ−ソ−ラ−シ」の音名が関連付けられ、エリアｂに対しては「ラ−シ−ド＃−レ−ミ−ファ＃−ソ＃−ラ」の音名が関連付けられる。なお、各エリアの始端および終端は、上記コードデータ６４において規定されるエリアと同様、演奏の開始時点を基準としたティック数で表される。また、スケールデータ６５において規定されるエリアは、上述したメロディーエリア、および、コードデータ６４において規定されるエリアとは独立したものであり、これらのエリアと一致している必要はない。また、例えば転調がない楽曲においては、スケールデータ６５において規定されるエリアは１つであってもよい、すなわち、楽曲の全時間領域について１種類のスケールトーンが関連付けられてもよい。スケールデータ６５の内容は、例えば、プレイヤによって演奏される対象パート以外の他パートにおいて用いられるスケールに従って決められる。詳細は後述するが、スケールデータ６５は、アドリブ音の高さを決定するために用いられる。
【００９８】
出力可能音域データ６６は、楽曲を構成する各パートの音色について、出力可能な音域を示すデータである。なお、ここでは、パート毎に異なる音色の音を出力するものとする。具体的には、出力可能音域データ６６は、各パートを示す情報に対して、音高の範囲を示す情報を関連付けたデータである。なお、各パートを示す情報としては、上記楽曲データ６３において音色の情報として用いられる、音源の種類を識別するための識別子を用いてもよい。また、上述したように、音高は、オクターブおよび音名によって表されるものであってもよいし、１種類の数値によって表されてもよい。本実施形態においては、出力可能音域データ６６は、後述する候補音域を設定するために用いられる。
【００９９】
以上に述べた楽曲データ６３、コードデータ６４、スケールデータ６５、および出力可能音域データ６６は、ゲームプログラム６０とともに光ディスク４に記憶されている。そして、これらのデータは、ゲーム装置３がゲーム処理を実行する際に適宜のタイミングで光ディスク４から読み出されてメインメモリに記憶される。なお、本実施形態では、コードデータ６４、スケールデータ６５、および出力可能音域データ６６は、楽曲データ６３（ＭＩＤＩファイル）とは別に記憶されるものとしたが、ＭＩＤＩファイル内に埋め込まれる形であってもよい。
【０１００】
現在ティック数データ６７は、楽曲全体の時間領域のうちの現在の時点を示すティック数（現在ティック数と呼ぶ）を示す。現在ティック数は、上記出力タイミングの情報と同様、演奏の開始時点を基準としたティック数で表される。なお、ゲーム装置３は、現在ティック数を算出するためのプログラム（ライブラリ）を記憶しており、当該プログラムを用いて現在ティック数を取得することが可能である。
【０１０１】
前回ティック数データ６８は、前回に音が出力された時点のティック数（前回ティック数と呼ぶ）を示す。すなわち、プレイヤによる入力に応じて音を出力した場合、ゲーム装置３は、出力した時点のティック数を前回ティック数データ６８としてメインメモリに記憶する。
【０１０２】
対象音データ６９は、現在のメロディーエリアに関連付けられる音（「対象音」と呼ぶ。）を示すデータである。ここで、「現在のメロディーエリア」とは、現在ティック数を含むメロディーエリアのことであり、以下では、「対象メロディーエリア」と呼ぶ。対象音は、現時点までにおいて、出力タイミングの到来が最後に検知された音である。すなわち、対象音は、対象パートを構成する各音のうちで、出力タイミングのティック数が現在ティック数よりも小さく、かつ、現在ティック数に最も近い値となる音である。対象音データ６９により示される情報は、対象音を特定することができる情報であればどのようなものであってもよく、例えば、対象パートを構成する各音に番号が付されている場合には当該番号であってもよいし、出力タイミングの値であってもよい。
【０１０３】
次対象音データ７０は、上記対象音の次に出力タイミングが到来する音（「次対象音」と呼ぶ。）を示すデータである。次対象音は、対象パートを構成する各音のうちで、出力タイミングのティック数が現在ティック数よりも大きく、かつ、現在ティック数に最も近い値となる音である。次対象音データ７０は、対象音データ６９と同様、対象パートを構成する各音に番号が付されている場合には当該番号であってもよいし、出力タイミングの値であってもよい。
【０１０４】
なお、対象メロディーエリアは、上記対象音および次対象音の出力タイミングによって特定される。すなわち、対象メロディーエリアの始端は、対象音の出力タイミングであり、終端は、次対象音の出力タイミングである。
【０１０５】
入力カウンタデータ７１は、１つのメロディーエリア内において入力が行われた回数を表す入力カウンタの値を示す。入力カウンタの値は、プレイヤによる入力が行われる度にインクリメント（１加算）され、メロディーエリアが変更されると（換言すれば、楽曲のメロディーを構成する音の出力タイミングが到来する度に）リセットされて“０”に設定される。
【０１０６】
候補音域データ７２は、候補音域を示すデータである。候補音域とは、出力すべき音の高さをランダムに選択する場合において、選択する音高の範囲を表すものである。具体的には、候補音域は、低域側の限界の音高と、高域側の限界の音高とによって表される。また、選択されうる音高をすべて羅列することによって表されても良い。
【０１０７】
候補コード音高データ７３は、候補コード音高を示すデータである。候補コード音高とは、候補音域内に含まれている音高のうちで、音名が現時点において用いられるコード音の音名と一致する音高である。なお、「現時点において用いられるコード音」は、コードデータ６４において、現時点のエリアに関連付けられているコード音である。
【０１０８】
候補スケール音高データ７４は、候補スケール音高を示すデータである。候補スケール音高は、候補音域内に含まれている音高のうちで、音名が現時点において用いられるスケール音の音名と一致し、かつ、後述する所定の条件を満たす音高である。なお、「現時点において用いられるスケール音」は、スケールデータ６５において、現時点のエリアに関連付けられているスケール音である。
【０１０９】
前回音高データ７５は、前回に（最後に）出力された音の高さ（「前回音高」と呼ぶ。）を示すデータである。前回音高は、オクターブおよび音名によって表されるものであってもよいし、１種類の数値で表されてもよい。
【０１１０】
次に、ゲーム装置３において行われるゲーム処理の詳細を、図１４〜図２２を用いて説明する。図１４は、ゲーム装置３において実行されるゲーム処理の流れを示すメインフローチャートである。ゲーム装置３の電源が投入され、ゲームプログラムが記憶された光ディスク４がゲーム装置３に挿入されると、ゲーム装置３のＣＰＵ１０は、図示しないブートＲＯＭに記憶されている起動プログラムを実行し、これによってメインメモリ等の各ユニットが初期化される。そして、光ディスク４に記憶されたゲームプログラムがメインメモリに読み込まれ、ＣＰＵ１０によって当該ゲームプログラムの実行が開始される。図１４に示すフローチャートは、以上の処理が完了した後に行われる処理を示すフローチャートである。なお、以下においては、図１４に示す処理がＣＰＵ１０によって実行されるものとして説明するが、当該処理の一部（例えばゲーム画像を生成・表示する処理）はＣＰＵ１０およびＧＰＵ１１ｂの協働動作として実行されてもよい。
【０１１１】
ステップＳ１において、ＣＰＵ１０は、ゲーム処理に関する初期化処理を実行する。具体的には、ＣＰＵ１０は、ゲーム画像として用いる画像データ等を光ディスク４から読み込む。ステップＳ１の次のステップＳ２において、ＣＰＵ１０は、ステップＳ１で読み込んだ画像を用いて、５線譜をテレビ２の画面に表示する。ステップＳ２の次にステップＳ３の処理が実行される。
【０１１２】
ステップＳ３において、ＣＰＵ１０は、演奏すべき楽曲に関するデータ（楽曲データ、コードデータ、スケールデータ、および出力可能音域データ）を光ディスク４から読み出し、メインメモリに記憶する。なお、演奏すべき楽曲は、光ディスク４にデータが記憶されている楽曲のうちからプレイヤによって選択された楽曲でもよいし、ＣＰＵ１０が自動的に選択した楽曲でもよい。ステップＳ３の次にステップＳ４の処理が実行される。
【０１１３】
ステップＳ４において、ＣＰＵ１０は、演奏すべき楽曲の各パートのうちで、プレイヤによって演奏される対象パートの楽譜を、画面に表示されている５線譜上に重ねて表示する。ここでは、対象パートの１小節目の楽譜が表示される。なお、表示される楽譜は、ステップＳ３で光ディスク４から読み込まれてメインメモリに記憶されている楽曲データ６３の内容に従って行われる。ステップＳ４の次にステップＳ５の処理が実行される。
【０１１４】
ステップＳ５において、ＣＰＵ１０は、演奏すべき楽曲の各パートのうちで、対象パート以外の他のパートの演奏を開始する。他のパートの演奏は、メインメモリに記憶されている楽曲データ６３の内容に従って行われる。このように、本実施形態によれば、対象パート以外の他のパートがゲーム装置３によって自動的に出力されるので、プレイヤは、他のパートの演奏を聴きながら対象パートの演奏操作を行うことができ、演奏操作を行いやすくなる。なお、他の実施形態によれば、ゲーム装置３は、他のパートの演奏を行わないようにしてもよい。ステップＳ５の次にステップＳ６の処理が実行される。
【０１１５】
上記ステップＳ５によって、楽曲の演奏が開始されたこととなる。なお、演奏が開始されたことに応じて、ＣＰＵ１０は、ティック数のカウントを開始する。また、演奏開始時点において、ＣＰＵ１０は、対象パートを構成する各音のうちで最初の音（出力タイミングのティック数が最小の音）を示すデータを、次対象音データ７０としてメインメモリに記憶する。ステップＳ５の後に実行されるステップＳ６〜Ｓ１５の処理ループは、例えば１フレーム時間（例えば１／６０秒）に１回の割合で実行される。
【０１１６】
ステップＳ６において、ＣＰＵ１０は、現在ティック数を算出するためのプログラムを用いて現在ティック数を算出する。算出された現在ティック数のデータは、現在ティック数データ６７としてメインメモリに記憶される。ステップＳ６の次にステップＳ７の処理が実行される。
【０１１７】
ステップＳ７において、ＣＰＵ１０は、テレビ２の画面に表示されている楽譜の内容（音符や休符等）を変更する必要があるか否かを判定する。この判定は、メインメモリに記憶されている現在ティック数データ６７を参照することによって知ることができる現在ティック数を用いて行われる。すなわち、ＣＰＵ１０は、現在ティック数に対応する楽譜上の位置が、現在画面に表示されている楽譜の範囲であるか否かを判定する。そして、現在ティック数に対応する楽譜上の位置が、現在画面に表示されている楽譜の範囲にない場合、画面に表示されている楽譜の表示を変更する必要があると判定する。逆に、現在ティック数に対応する楽譜上の位置が、現在画面に表示されている楽譜の範囲にある場合、画面に表示されている楽譜の表示を変更する必要がないと判定する。ステップＳ７の判定結果が肯定である場合、ステップＳ８の処理が実行される。一方、ステップＳ７の判定結果が否定である場合、ステップＳ８の処理がスキップされてステップＳ９の処理が実行される。
【０１１８】
ステップＳ８において、ＣＰＵ１０は、画面に表示されている楽譜の内容を更新する。本実施形態では、同時に画面に表示される楽譜は１小説分の楽譜であるので、ステップＳ８によって、それまで表示されていた小節の次の小節の楽譜が画面に表示される。ステップＳ８の次にステップＳ９の処理が実行される。
【０１１９】
ステップＳ９において、ＣＰＵ１０は、画面に表示されている楽譜に重ねてタイミングバーを表示する。タイミングバーの表示位置は、現在ティック数に基づいて決定される。すなわち、タイミングバーは、現在ティック数に対応する楽譜上の位置に表示される。なお、現在ティック数に対応する楽譜上の位置は、例えば、楽曲全体の長さを示すティック数と現在ティック数との比率を算出することにより特定することができる。ステップＳ９の処理が繰り返し実行されることによって、タイミングバーは、演奏の進行に伴って移動することになる。ステップＳ９の次にステップＳ１０の処理が実行される。
【０１２０】
ステップＳ１０において、ＣＰＵ１０は、楽曲のメロディーを構成する音の出力タイミングが到来したか否かを判定する。ここで、現時点において次に出力タイミングが到来する音は次対象音であるので、ステップＳ１０では、次対象音の出力タイミングが到来したか否かを判定すればよい。具体的には、ステップＳ１０の判定は、現在ティック数データ６７により示される現在ティック数と、次対象音データ７０により示される次対象音の出力タイミングとに基づいて行われる。すなわち、現在ティック数が、次対象音の出力タイミングを示すティック数以上となった場合、ＣＰＵ１０は、次対象音の出力タイミングが到来したと判定する。逆に、現在ティック数が、次対象音の出力タイミングを示すティック数よりも小さい場合、ＣＰＵ１０は、次対象音の出力タイミングが到来していないと判定する。ステップＳ１０の判定結果が肯定である場合、ステップＳ１１およびＳ１２の処理が実行される。一方、ステップＳ１０の判定結果が否定である場合、ステップＳ１１およびＳ１２の処理がスキップされてステップＳ１３の処理が実行される。
【０１２１】
演奏中において上記ステップＳ１０が繰り返し実行されることによって、ゲーム装置３は、楽曲のメロディーを構成する各音の出力タイミングが到来したことを逐次検知することができる。なお、上述したように、対象メロディーエリアは、対象音の出力タイミングを始端とし、次対象音の出力タイミングを終端とする時間領域である。したがって、ステップＳ１０の判定処理は、現時点が対象メロディーエリアの終端に達したか否か、すなわち、対象メロディーエリアを変更するか否かを判定するための処理と言える。
【０１２２】
ステップＳ１１において、ＣＰＵ１０は、対象メロディーエリアを変更する。具体的には、ＣＰＵ１０は、対象音データ６９および次対象音データ７０の内容を変更する。対象音データ６９の内容は、変更前の次対象音データ７０により示される音を示すように変更される。また、次対象音データ７０の内容は、変更後の対象音データ６９により示される音の次の音を示すように変更される。以上のように対象音および次対象音が変更されることによって、対象メロディーエリアが変更されたこととなる。ステップＳ１１の次にステップＳ１２の処理が実行される。
【０１２３】
ステップＳ１２において、ＣＰＵ１０は、入力カウンタの値をリセットする。すなわち、メインメモリに記憶されている入力カウンタデータ７１の内容は、“０”を示すように変更される。ステップＳ１２の次にステップＳ１３の処理が実行される。
【０１２４】
ステップＳ１３において、ＣＰＵ１０は、音を出力するための入力（発音入力）を受け付け、当該入力が行われたか否かを判定する。本実施形態では、発音入力は、コントローラ５の所定のボタン（例えばＡボタン３２ｄ）に対する入力である。すなわち、ステップＳ１３では、メインメモリに記憶されている操作データ６１を参照して、上記所定のボタンが押下されたか否かが判定される。そして、上記所定のボタンが押下された場合、発音入力が行われたと判定され、上記所定のボタンが押下されていない場合、発音入力が行われていないと判定される。ステップＳ１３の判定結果が肯定である場合、ステップＳ１４の処理が実行される。一方、ステップＳ１３の判定結果が否定である場合、ステップＳ１４の処理がスキップされてステップＳ１５の処理が実行される。
【０１２５】
なお、本実施形態においては、発音入力は、コントローラ５の所定のボタンに対する入力であるとしたが、発音入力の入力方法はどのようなものであってもよい。他の実施形態においては、ゲーム装置３は、例えば、コントローラ５が所定の動きをした（例えば、上から下に動かされた）場合、発音入力が行われたと判断するようにしてもよい。なお、コントローラ５の動きは、加速度センサ３７によって検出される加速度の情報を用いることによって算出することができる。
【０１２６】
ステップＳ１４において、ＣＰＵ１０は発音処理を実行する。発音処理は、プレイヤによる発音入力に応じてテレビ２のスピーカ２ａに音を出力させるための処理である。以下、図１５を参照して、発音処理の詳細を説明する。
【０１２７】
図１５は、図１４に示す発音処理（ステップＳ１４）の流れを示すフローチャートである。発音処理においては、まずステップＳ２１において、ＣＰＵ１０は、入力カウンタの値をインクリメントする。すなわち、入力カウンタデータ７１により示される値が、現在の入力カウンタデータ７１により示される値に１を加算した値に変更される。ステップＳ１０〜Ｓ１２およびステップＳ２１の処理によって、入力カウンタの値は、対象メロディーエリア内において発音入力が行われた回数を示すものとなる。換言すれば、ＣＰＵ１０は、入力カウンタデータ７１を参照することによって、対象メロディーエリア内において何回発音入力が行われたかを知ることができる。ステップＳ２１の次にステップＳ２２の処理が実行される。
【０１２８】
ステップＳ２２において、ＣＰＵ１０は、対象音の基準音高を特定する。対象音の基準音高は、楽曲データ６３および対象音データ６９を参照することによって特定される。具体的には、ＣＰＵ１０は、対象音データ６９により示される音の出力タイミングを、楽曲データ６３を参照して特定する。ステップＳ２２の次にステップＳ２３の処理が実行される。
【０１２９】
ステップＳ２３において、ＣＰＵ１０は、今回の処理ループ（ステップＳ６〜Ｓ１５の処理ループ）において行われた入力（発音入力）が、対象メロディーエリアにおける１回目の入力であるか否かを判定する。ステップＳ２３の判定は、入力カウンタデータ７１を参照することによって行われる。すなわち、入力カウンタデータ７１が“１”を示す場合、今回の入力が対象メロディーエリアにおける１回目の入力であると判定され、入力カウンタデータ７１が“２”以上の値を示す場合、今回の発音入力が対象メロディーエリアにおける１回目の入力でないと判定される。ステップＳ２３の判定結果が肯定である場合、ステップＳ２４の処理が実行される。一方、ステップＳ２３の判定結果が否定である場合、後述するステップＳ２８の処理が実行される。
【０１３０】
ステップＳ２４において、ＣＰＵ１０は、対象音をステップＳ２３で特定した基準音高でテレビ２のスピーカ２ａに出力（再生）させる。すなわち、出力される音の高さは、楽曲データ６３で決められる、楽譜通りの音高である。また、出力される音の音色および音長も楽譜通りである。以上のように、対象メロディーエリアにおいて１回目の入力があった場合、ゲーム装置３は、対象メロディーエリアに関連付けられる対象音を、楽譜通りの音で出力する。なお、ステップＳ２４の時点において、以前に出力された音がまだ出力されている場合には、以前に出力された音は停止され、今回のステップＳ２４で出力される音のみが出力される。ステップＳ２４の次にステップＳ２５の処理が実行される。
【０１３１】
ステップＳ２５において、ＣＰＵ１０は、ステップＳ２４で再生された音の高さを前回音高として記憶する。すなわち、ステップＳ２４で再生された音の高さを示すデータを、前回音高データ７５としてメインメモリに記憶する。ステップＳ２５の次にステップＳ２６の処理が実行される。
【０１３２】
ステップＳ２６において、ＣＰＵ１０は、テレビ２の画面に表示されている音符のうちで、対象音に対応する音符の表示形態を変更する。例えば、対象音に対応する音符の色が変更される。これによって、プレイヤは、楽譜上のどの音について出力が行われたかを容易に知ることができる。ステップＳ２６の次にステップＳ２７の処理が実行される。
【０１３３】
ステップＳ２７において、ＣＰＵ１０は、前回ティック数として、現在ティック数の値を記憶する。すなわち、前回ティック数データ６８の内容を、現在ティック数データ６７により示されるティック数の値に更新する。これによって、最後に音が出力された時点のティック数を前回ティック数として記憶することができる。ステップＳ２７の後、ＣＰＵ１０は発音処理を終了する。
【０１３４】
一方、ステップＳ２８において、ＣＰＵ１０は、候補音域設定処理を実行する。候補音域設定処理は、アドリブ音の高さをランダムに選択する場合において、選択する音高の範囲を表す上記候補音域を設定するための処理である。以下、図１６を参照して、候補音域設定処理の詳細を説明する。
【０１３５】
図１６は、図１５に示す候補音域設定処理（ステップＳ２８）の流れを示すフローチャートである。候補音域設定処理においては、まずステップＳ４１において、ＣＰＵ１０は、対象メロディーエリアの始端を基準とした現在のティック数を算出する、すなわち、対象メロディーエリアの始端から現時点までのティック数を算出する。ステップＳ４１で算出するティック数は、現在ティック数から対象メロディーエリアの始端のティック数（すなわち、対象音の出力タイミングのティック数）を減算することによって得られる。なお、現在ティック数は、現在ティック数データ６７を参照することによって知ることができる。対象メロディーエリアの始端のティック数は、対象音データ６９および楽曲データ６３を参照することによって知ることができる。ステップＳ４１の次にステップＳ４２の処理が実行される。
【０１３６】
ステップＳ４２において、ＣＰＵ１０は、次対象音の基準音高を特定する。次対象音の基準音高は、楽曲データ６３および次対象音データ７０を参照することによって特定される。具体的には、ＣＰＵ１０は、次対象音データ７０により示される音の出力タイミングを、楽曲データ６３を参照して特定する。ステップＳ４２の次にステップＳ４３の処理が実行される。
【０１３７】
ステップＳ４３〜Ｓ４５においては、候補音域が算出される。本実施形態では、まず候補音域の中心の音高（「中心音高」と呼ぶ）を算出し、次に中心音高から候補音域の境界までの幅を算出することによって、候補音域を算出する。以下、図１７を参照して、ステップＳ４３〜Ｓ４５の詳細を説明する。
【０１３８】
図１７は、算出される候補音域の一例を示す図である。図１７に示すグラフの横軸は時間を示し、対象メロディーエリアの始端を基準（０）としたティック数を示す。図１７では、対象メロディーエリアの時間幅が４８ティックである場合を示している。また、ステップＳ４３〜Ｓ４４の処理においては、音高は１つの数値によって表され、図１７に示すグラフの縦軸はその数値を示している。図１７は、対象メロディーエリア内の時間領域において候補音域が変化する様子を示す図である。
【０１３９】
ステップＳ４３において、ＣＰＵ１０は中心音高を算出する。本実施形態では、中心音高は、対象メロディーエリア内において時間が経過するにつれて、対象音の基準音高から次対象音の基準音高へと変化するように算出される（図１７に示す細実線を参照）。具体的には、現時点での中心音高ｈは、次の式（１）に従って算出することができる。
ｈ＝（ｈ２−ｈ１）ｔ／Ｔ＋ｈ１  …（１）
上式（１）において、変数ｔは現在のティック数（対象メロディーエリアの始端を基準としたティック数）であり、変数Ｔは、対象メロディーエリア全体の幅（長さ）である。また、変数ｈ１は対象音の基準音高であり、変数ｈ２は次対象音の基準音高である。
【０１４０】
ステップＳ４４において、ＣＰＵ１０は音域幅を算出する。本実施形態では、音域幅は、対象メロディーエリアの始端から所定期間は候補音域の幅が一定に維持され、その後は、時間が経過するにつれて候補音域の幅が次第に小さくなるように算出される（図１７に示す一点鎖線参照）。本実施形態では、上記所定期間は、図１７に示すように、対象メロディーエリア全体の長さ（Ｔ）の所定割合（具体的には１０％）の長さ（Ｔ／１０）とする。また、本実施形態では、音域幅は、図１７に示すように、対象メロディーエリアの開始時点（始端）では９半音分であり、対象メロディーエリアの終了時点（終端）では３半音分まで収束するように算出される。したがって、本実施形態では、現時点における音域幅ｗは、以下の式（２）に従って算出することができる。
ｗ＝２９／３−２０ｔ／３Ｔ  …（２）
上式（２）により、図１７に示すように、時間の経過に対して定量で候補音域の幅を縮小させることができる。なお、他の実施形態おいては、時間の経過に対して定率で候補音域の幅を縮小させるようにしてもよい。
【０１４１】
ステップＳ４５において、ＣＰＵ１０は、ステップＳ４２で算出された中心音高ｈと、ステップＳ４３で算出された音域幅ｗとに基づいて候補音域を設定する。具体的には、候補音域の上限の音高は、中心音高の値ｈと音域幅の値ｗとを加算した結果によって決定される。なお、この加算結果は、数値であるので、実際の音高に当てはまらない値となる場合がある。例えば、加算結果の値は、「ド」と「ド＃」との間の高さを示す値となる場合がある。このような場合、本実施形態では、ＣＰＵ１０は、加算結果の値を切り上げて音高を決定する。例えば、加算結果は「ド」と「ド＃」との間の値となる場合には、音高は「ド＃」に決定される。一方、候補音域の下限の音高は、中心音高の値ｈから音域幅の値ｗを減算した結果によって決定される。候補音域の下限の場合も上限の場合と同様、減算結果の数値が実際の音高に当てはまらない値となる場合には、ＣＰＵ１０は、減算結果の値を切り上げて音高を決定する。図１７に示す太線は、以上のようにして設定された候補音域を示している。なお、本実施形態では、音高を示す数値が実際の音高に当てはまらない場合には当該数値を切り上げるものとしたが、他の実施形態においては、切り下げてもよいし、四捨五入してもよい。ステップＳ４５において設定された候補音域を示すデータは、候補音域データ７２としてメインメモリに記憶される。
【０１４２】
以上のステップＳ４３〜Ｓ４５に示したように、本実施形態においては、候補音域は、対象音の高さと次対象音の高さとに基づいて設定される。具体的には、対象音の基準音高から次対象音の基準音高へと変化するように中心音高が算出されることによって、候補音域は、対象メロディーエリア内において時間が経過するにつれて、対象音の基準音高を中心とする音域から次対象音の基準音高を中心とする音域へと変化するように設定される。詳細は後述するが、この候補音域の範囲内からアドリブ音の高さが選択される。したがって、アドリブ音の高さとしては、対象音および次対象音に比べて高すぎたり、低すぎたりせず、対象音と次対象音とを自然につなぐような音高が選択されることとなる。これによれば、アドリブ音の高さをランダムに決定する場合でも、アドリブ音の高さを楽譜のメロディーに沿った自然な音高に決定することができる。
【０１４３】
ステップＳ４６において、ＣＰＵ１０は、メインメモリに記憶されている出力可能音域データ６６を参照して、対象パートの出力可能音域を特定する。ステップＳ４６の次のステップＳ４７において、ＣＰＵ１０は、対象パートの出力可能音域に基づいて上記候補音域を補正する。候補音域は、出力可能音域外の音域が除外されるように補正される。具体的には、補正前の候補音域の上限が出力可能音域の上限よりも高い場合、補正後の候補音域の上限は出力可能音域の上限となる。また、補正前の候補音域の下限が出力可能音域の下限よりも低い場合、補正後の候補音域の下限は出力可能音域の下限となる。なお、補正前の候補音域の上限が出力可能音域の上限よりも低く、かつ、補正前の候補音域の下限が出力可能音域の下限よりも高い場合には、候補音域の補正は行われない。メインメモリに記憶されている候補音域データ７２の内容は、以上のように補正された候補音域を示すデータに更新される。
【０１４４】
図１８は、補正前の候補音域を示す図であり、図１９は、補正後の候補音域を示す図である。図１８および図１９においては、横軸は時間を示し、縦軸は音高を示している。すなわち、図１８および図１９は、対象メロディーエリア内の時間領域において候補音域が変化する様子を示す図である。図１８においては、上記ステップＳ４５によって設定された、補正前の候補音域を斜線領域で示している。ここで、図１９に示されるように、ステップＳ４１で算出されたティック数ｔが０≦ｔ＜ｔ’となる時間領域において、補正前の候補音域の上限が出力可能音域の上限よりも高い場合には、候補音域の上限は出力可能音域の上限に補正される。したがって、補正後の候補音域は図１９に示す斜線領域のようになる。なお、ティック数ｔがｔ’≦ｔ＜Ｔとなる時間領域においては、補正前の候補音域の上限が出力可能音域の上限よりも低いので、候補音域の上限は補正されない。
【０１４５】
以上のように、ステップＳ４７の処理によれば、候補音域は、対象パートの出力可能音域外の音域を含まないように補正される。これによって、アドリブ音は対象パートの出力可能音域外の音高で出力されることはない。例えば、比較的低音域の楽器（例えばコントラバス）のパートについて、高すぎる音が出力されたりすると、演奏結果のメロディーが不自然になるおそれがある。ステップＳ４７の処理は、対象パートの楽器では通常出力されないような音高で音が出力されることによって、演奏結果が不自然になることを防止するための処理である。上記ステップＳ４７の後、ＣＰＵ１０は候補音域設定処理を終了する。
【０１４６】
図１５の説明に戻り、ステップＳ２８の候補音域設定処理の次に、ステップＳ２９の処理が実行される。すなわち、ステップＳ２９において、ＣＰＵ１０は、候補コード音高を特定する。候補コード音高とは、上述したように、候補音域内に含まれている音高のうちで、現時点において用いられるコード音の音名と一致する音高である。具体的には、ＣＰＵ１０は、まず、メインメモリに記憶されているコードデータ６４および現在ティック数データ６７を参照して、現時点において用いられるコード音の音名を特定する。次に、候補音域データ７２を参照して、候補音域に含まれる音高のうちで、特定された音名と一致する音高を選択する。例えば、現時点において用いられるコード音が「ド−ミ−ソ」であり、候補音域が、オクターブの高さが“２”で表される「シ」からオクターブの高さが“４”で表される「ド」の音である場合を考える。この場合、候補コード音高は、オクターブの高さが“３”で表される「ド」、「ミ」および「ソ」、ならびに、オクターブの高さが“３”で表される「ド」となる。ステップＳ２９で特定された音高を示すデータは、候補コード音高データ７３としてメインメモリに記憶される。なお、候補音域および現在のコード音によっては、候補コード音高として特定される音高がない場合もあり得る。この場合、候補コード音高がないことを示すデータが候補コード音高データ７３としてメインメモリに記憶される。以上のステップＳ２９の次にステップＳ３０の処理が実行される。
【０１４７】
ステップＳ３０において、ＣＰＵ１０は、候補スケール音高を特定する。候補スケール音高は、（ａ）候補音域内に含まれている音高のうちで、音名が現時点において用いられるスケール音の音名と一致し、かつ、（ｂ）前回音高に最も近い（ただし、前回音高とは異なる）音高である。ここで、前回音高とは、前回の発音処理において出力すべき音の高さとして選択された音高である。前回音高は、前回音高データ７５により示される。具体的には、ＣＰＵ１０は、まず、メインメモリに記憶されているスケールデータ６５および現在ティック数データ６７を参照して、現時点において用いられるスケール音の音名を特定する。次に、候補音域データ７２を参照して、候補音域に含まれる音高のうちで、特定された音名と一致する音高を選択する。さらに、前回音高データ７５を参照して、選択された音高のうちで、前回音高に最も近い音高を選択する。例えば、現時点において用いられるスケール音が「ド−レ−ミ−ファ−ソ−ラ−シ」であり、候補音域が、オクターブの高さが“２”で表される「シ」からオクターブの高さが“４”で表される「ド」の音である場合を考える。この場合、仮に前回音高がオクターブの高さが“３”で表される「レ」であれば、候補スケール音高は、オクターブの高さが“３”で表される「ド」および「ミ」となる。ステップＳ３０で特定された音高を示すデータは、候補スケール音高データ７４としてメインメモリに記憶される。なお、候補音域および現在のスケール音によっては、候補スケール音高として特定される音高がない場合もあり得る。この場合、候補スケール音高がないことを示すデータが候補スケール音高データ７４としてメインメモリに記憶される。以上のステップＳ３０の次にステップＳ３１の処理が実行される。
【０１４８】
以上のように、本実施形態では、対象メロディーエリアにおいて２回目以降の入力が行われた場合には、ステップＳ２８〜Ｓ３０において、出力すべきアドリブ音の高さの候補が設定される。そして、後述するステップＳ３２において、設定された候補から１つの高さが選択され、選択された高さでアドリブ音が出力される。
【０１４９】
ステップＳ３１において、ＣＰＵ１０は、前回に行われた発音入力から予め定められた所定時間が経過しているか否かを判定する。ステップＳ３１の判定は、現在ティック数データ６７および前回ティック数データ６８を参照することにより行われる。すなわち、現在ティック数の値と前回ティック数との差が、予め定められた所定値以上である場合、前回に行われた発音入力から上記所定時間が経過していると判定される。逆に、現在ティック数の値と前回ティック数の値との差が、予め定められた所定値よりも小さい場合、前回に行われた発音入力から上記所定時間が経過していないと判定される。なお、本実施形態では、上記所定時間（所定値）が例えば６ティックに設定される。ステップＳ３１の判定結果が肯定である場合、ステップＳ３２の処理が実行される。一方、ステップＳ３１の判定結果が否定である場合、後述するステップＳ３３の処理が実行される。
【０１５０】
ステップＳ３２において、ＣＰＵ１０は、アドリブ音を出力するためのアドリブ音出力処理を実行する。以下、図２０を参照して、アドリブ音出力処理の詳細を説明する。
【０１５１】
図２０は、図１５に示すアドリブ音出力処理（ステップＳ３２）の流れを示すフローチャートである。アドリブ音出力処理においては、まずステップＳ５１において、ＣＰＵ１０は選択処理を実行する。選択処理は、アドリブ音として出力する音の高さを候補の中から選択する処理である。以下、図２１を参照して、選択処理の詳細を説明する。
【０１５２】
図２１は、図２０に示す選択処理（ステップＳ５１）の流れを示すフローチャートである。選択処理においては、まずステップＳ６０において、ＣＰＵ１０は、今回の処理ループ（ステップＳ６〜Ｓ１５の処理ループ）において行われた入力（発音入力）が、対象メロディーエリアにおける２回目の入力であるか否かを判定する。ステップＳ６０の判定は、入力カウンタデータ７１を参照することによって行われる。すなわち、入力カウンタデータ７１が“２”を示す場合、今回の入力が対象メロディーエリアにおける２回目の入力であると判定され、入力カウンタデータ７１が“３”以上の値を示す場合、今回の発音入力が対象メロディーエリアにおける２回目の入力でない（すなわち、３回目以降の入力である）と判定される。ステップＳ６０の判定結果が肯定である場合、ステップＳ６１の処理が実行される。一方、ステップＳ６０の判定結果が否定である場合、後述するステップＳ６６の処理が実行される。
【０１５３】
ステップＳ６１において、ＣＰＵ１０は、上述したステップＳ２９において候補コード音高として特定された音高があるか否かを判定する。ステップＳ６１の判定は、候補コード音高データ７３を参照することによって行うことができる。ステップＳ６１の判定結果が肯定である場合、ステップＳ６２の処理が実行される。一方、ステップＳ６１の判定結果が否定である場合、後述するステップＳ６３の処理が実行される。
【０１５４】
ステップＳ６２において、ＣＰＵ１０は、候補コード音高からランダムに１つを選択する。ここで、本明細書において、「ランダムに選択する」とは、広義に、選択結果が毎回同じものにならないように選択することを意味し、厳密な意味でランダム性を有することを意味するものではない。したがって、１つの音高をランダムに選択する方法は、例えば乱数を用いた方法であってもよいし、選択結果が規則性を有するものとなるような方法であってもよい。ステップＳ６２の後、ＣＰＵ１０は選択処理を終了する。
【０１５５】
ステップＳ６３において、ＣＰＵ１０は、上述したステップＳ３０において候補スケール音高として特定された音高があるか否かを判定する。ステップＳ６３の判定は、候補スケール音高データ７４を参照することによって行うことができる。ステップＳ６３の判定結果が肯定である場合、ステップＳ６４の処理が実行される。一方、ステップＳ６３の判定結果が否定である場合、後述するステップＳ６５の処理が実行される。
【０１５６】
ステップＳ６４において、ＣＰＵ１０は、候補スケール音高からランダムに１つを選択する。なお、音高をランダムに選択する方法は、ステップＳ６２と同様の方法で行うことができる。ステップＳ６４の後、ＣＰＵ１０は選択処理を終了する。
【０１５７】
ステップＳ６５において、ＣＰＵ１０は、現時点において用いられるコード音の音名と一致する音高であって、上述した中心音高に最も近い音高を選択する。これによって、１つの音高を確実に選択することができる。ここで、ステップＳ６５が実行される場合とは、ステップＳ６１およびＳ６３の判定結果がともに否定となる場合、すなわち、候補コード音高または候補スケール音高として特定される音高がない場合である。つまり、ステップＳ６５の処理は、ランダムに選択するための候補がない場合であっても、アドリブ音の高さを確実に選択するための処理である。なお、ステップＳ６５で用いる中心音高は、上述したステップＳ４３で算出された値により示される音高である。なお、ステップＳ４３で算出された値が、実際の音高に当てはまらない値となる場合には、当該算出された値を切り上げて中心音高が決定される。ステップＳ６５の後、ＣＰＵ１０は選択処理を終了する。
【０１５８】
一方、ステップＳ６６において、ＣＰＵ１０は、候補コード音高および候補スケール音高のいずれか一方をランダムに選択する。続くステップＳ６７において、ＣＰＵ１０は、ステップＳ６６で候補コード音高が選択されたか否かを判定する。ステップＳ６７の判定結果が肯定である場合、上述したステップＳ６１の処理が実行される。一方、ステップＳ６７の判定結果が否定である場合、ステップＳ６８の処理が実行される。
【０１５９】
ステップＳ６８において、ＣＰＵ１０は、上述したステップＳ３０において候補スケール音高として特定された音高があるか否かを判定する。ステップＳ６８の処理は、上記ステップＳ６３の処理と同じである。ステップＳ６８の判定結果が肯定である場合、上述したステップＳ６４の処理が実行される。一方、ステップＳ６８の判定結果が否定である場合、ステップＳ６９の処理が実行される。
【０１６０】
ステップＳ６９において、ＣＰＵ１０は、上述したステップＳ２９において候補コード音高として特定された音高があるか否かを判定する。ステップＳ６９の処理は、上記ステップＳ６１の処理と同じである。ステップＳ６９の判定結果が肯定である場合、上述したステップＳ６２の処理が実行される。一方、ステップＳ６９の判定結果が否定である場合、上述したステップＳ６５の処理が実行される。
【０１６１】
以上のように、選択処理においては、対象メロディーエリアにおいて２回目の入力が行われる場合（ステップＳ６０でＹｅｓ）と、３回目以降の入力が行われる場合（ステップＳ６０でＮｏ）とで異なる方法でアドリブ音の高さの選択が行われる。すなわち、２回目の入力が行われる場合には、まず、候補コード音高のうちから選択が行われ（ステップＳ６２）、候補コード音高がない場合（ステップＳ６１でＮｏ）に候補スケール音高のうちから選択が行われる（ステップＳ６４）。一方、３回目以降の入力が行われる場合には、まず、候補コード音高とスケール音とのいずれを優先するかが判定される（ステップＳ６６およびＳ６７）。そして、候補コード音高が優先される場合には、２回目の入力が行われる場合と同様の方法で選択が行われる。一方、候補スケール音高が優先される場合には、まず、候補スケール音高のうちから選択が行われ（ステップＳ６４）、候補スケール音高がない場合（ステップＳ６８でＮｏ）に候補コード音高のうちから選択が行われる（ステップＳ６２）。なお、２回目の入力が行われる場合であっても、３回目以降の入力が行われる場合であっても、確実に音高が選択されるようにするために、候補コード音高および候補スケール音高がともにない場合にはステップＳ６５の処理が実行される。以上で、選択処理の説明を終了する。
【０１６２】
図２０の説明に戻り、ステップＳ５１の選択処理の後、ステップＳ５２の処理が実行される。すなわち、ステップＳ５２において、ＣＰＵ１０は、上記選択処理で選択された音高でアドリブ音をテレビ２のスピーカ２ａに出力（再生）させる。なお、本実施形態では、出力される音の音色および音長は楽譜通りである。これによって、音高がランダムに決められたアドリブ音が出力されることとなる。更に、ステップＳ５２の時点において、以前に出力された音がまだ出力されている場合には、以前に出力された音は停止され、今回のステップＳ５２で出力される音のみが出力される。ステップＳ５２の次にステップＳ５３の処理が実行される。
【０１６３】
ステップＳ５３において、ＣＰＵ１０は、ステップＳ５２で再生された音の高さを前回音高として記憶する。ステップＳ５３の処理は、上述したステップＳ２４の処理と同じである。ステップＳ５３の次にステップＳ５４の処理が実行される。
【０１６４】
ステップＳ５４において、ＣＰＵ１０は、テレビ２の画面に表示されている楽譜の現時点の位置に音符を追加して表示する。これによって、プレイヤは、アドリブ音が出力されたこと、および、どのタイミングでアドリブ音が出力されたかを、直感的に認識することができる。なお、追加される音符の種類（４分音符や８分音符）は、どのようなものであってもよく、例えば、現時点のメロディーエリアに関連付けられる音符と同じ種類の音符でよい。また、ステップＳ５４で追加して表示される音符は、元の楽譜にある音符とは異なる表示形態で表示するようにしてもよい。ステップＳ５４の次にステップＳ５５の処理が実行される。
【０１６５】
ステップＳ５５において、ＣＰＵ１０は、前回ティック数として、現在ティック数の値を記憶する。ステップＳ５５の処理は、上述したステップＳ２７の処理と同じである。ステップＳ５５の後、ＣＰＵ１０はアドリブ音出力処理を終了する。
【０１６６】
図１５の説明に戻り、ステップＳ３３において、ＣＰＵ１０は、例外出力処理を実行する。ここで、通常、メロディーエリアにおける２回目以降の入力が行われた場合、アドリブ音出力処理（ステップＳ３２）が実行されることによって、音高がランダムに決定されたアドリブ音が出力される。しかし、最後に音が出力されてから次に音が出力されるまでの時間が短い場合には音同士が重なるので、ランダムに音高を決定してしまうと、プレイヤに不自然な音に聞こえたりプレイヤに不快な印象を与えたりしてしまうおそれがある。そこで、本実施形態では、最後に音が出力されてから次に音が出力されるまでの時間が短い場合（ステップＳ３１でＮｏ）には、例外出力処理を実行する。例外出力処理においては、アドリブ音出力処理とは異なる方法で、出力する音の高さが決定される。以下、図２２を参照して、例外出力処理の詳細を説明する。
【０１６７】
図２２は、図１５に示す例外出力処理（ステップＳ３３）の流れを示すフローチャートである。例外出力処理においては、まずステップＳ７１において、ＣＰＵ１０は、出力すべきアドリブ音の高さを、前回音高に基づいて選択（特定）する。本実施形態では、選択されるアドリブ音の高さは、前回音高よりも所定値（例えば３半音）以上低い音高であって、かつ、前回音高に最も近いコード音の高さである。ここで、「コード音」は、現時点で用いられているコード音であって、コードデータ６４を参照することによって知ることができる。アドリブ音として出力される音の高さを上記のように設定することで、発音入力が短時間に連続して行われた場合であっても、不自然な音が出力されないようにすることができる。ステップＳ７１の次にステップＳ７２の処理が実行される。
【０１６８】
ステップＳ７２において、ＣＰＵ１０は、ステップＳ７１で選択された音高が、候補音域の下限よりも所定値（例えば６半音）以上低いか否かを判定する。上記ステップＳ７１では、前回音高よりも低い音高が選択されるので、仮にプレイヤが発音入力を短時間で繰り返し行った場合（具体的にはボタンを連打した場合）には、アドリブ音の高さがどんどん低くなってしまうことになる。ステップＳ７２の判定処理は、ステップＳ７１で選択された音高が低すぎることがないかを判定するための処理である。ステップＳ７２の判定結果が肯定である場合、ステップＳ７３の処理が実行される。一方、ステップＳ７２の判定結果が否定である場合、ステップＳ７６の処理が実行される。
【０１６９】
ステップＳ７３において、ＣＰＵ１０は、ステップＳ７１で選択された音高を、１オクターブまたは２オクターブだけ高い高さに補正する。なお、選択された音高を１オクターブ上げるか、それとも２オクターブ上げるかはランダムに決定される。ステップＳ７１で選択された音高が低すぎる場合、ステップＳ７３の処理によって、選択された音高を適切な高さに補正することができる。ステップＳ７３の次にステップＳ７４の処理が実行される。
【０１７０】
ステップＳ７４において、ＣＰＵ１０は、ステップＳ７３で補正された音高が、候補音域の上限よりも所定値（例えば３半音）以上高いか否かを判定する。ステップＳ７４の判定処理は、ステップＳ７３で補正された音高が高すぎることがないかを判定するための処理である。ステップＳ７４の判定結果が肯定である場合、ステップＳ７５の処理が実行される。一方、ステップＳ７４の判定結果が否定である場合、ステップＳ７６の処理が実行される。
【０１７１】
ステップＳ７５において、ＣＰＵ１０は、ステップＳ７３で補正された音高を、１オクターブだけ低い高さに補正する。ステップＳ７３で補正された音高が高すぎる場合（すなわち、ステップＳ７３で音高を高く補正しすぎた場合）、ステップＳ７５の処理によって、補正された音高を適切な高さに補正することができる。ステップＳ７５の次にステップＳ７６の処理が実行される。
【０１７２】
ステップＳ７６〜Ｓ７９においては、上述したステップＳ５２〜Ｓ５５と同じ処理が実行される。したがって、例外出力処理においては、上記ステップＳ７１〜Ｓ７５の処理で選択された音高でアドリブ音が出力される。ステップＳ７９の処理の後、ＣＰＵ１０は例外出力処理を終了する。
【０１７３】
図１５の説明に戻り、上述したステップＳ２７、Ｓ３２、またはＳ３３の処理の後、ＣＰＵ１０は、図１５に示す発音処理を終了する。図１４の説明に戻り、ステップＳ１４の発音処理の後、ステップＳ１５の処理が実行される。
【０１７４】
ステップＳ１５において、ＣＰＵ１０は演奏終了か否かを判定する。演奏終了か否かの判定は、現在ティック数および楽曲データ６３とに基づいて行うことができる。すなわち、現在ティック数が、楽曲データ６３により示される楽曲の終端のティック数と一致すれば、演奏終了であると判断することができる。ステップＳ１５の判定結果が肯定である場合、ＣＰＵ１０は図１４に示すゲーム処理を終了する。一方、ステップＳ１５の判定結果が否定である場合、ステップＳ６の処理が再度実行される。以降、ステップＳ１５で演奏終了と判定されるまで、ステップＳ６〜Ｓ１５の処理ループが繰り返し実行される。以上で、ゲーム装置３において実行されるゲーム処理の説明を終了する。
【０１７５】
以上のように、本実施形態によれば、楽曲の時間領域においてメロディーエリアを設定することによって、楽譜上の音符のタイミングではないタイミングで発音入力が行われても、音が出力されるようにしている。したがって、決められたタイミングのみで音が出力される従来の演奏ゲームに比べて、プレイヤは自由なタイミングで音を出力することができる。これによって、演奏の自由度が高くなり、プレイヤは楽譜通りのメロディーに対して自由にアレンジを加えることができ、演奏ゲームの興趣性を増すことができる。
【０１７６】
さらに、本実施形態によれば、ゲーム装置３は、メロディーエリア内の１回目の発音入力に対しては基準音高で対象音を出力し、２回目以降の発音入力に対しては音高をランダムに決定してアドリブ音を出力する。これによれば、１回目の発音入力に対しては基準音高で対象音が出力されることによって、演奏結果が楽譜のメロディーと全く異なるメロディーことを防止することができる。さらに、２回目以降の発音入力に対してアドリブ音を出力することによって、楽譜のメロディーに自由にアドリブ音を加えるという、従来の音楽演奏ゲームにはない遊び方をプレイヤに提供することができる。
【０１７７】
（アドリブ音の音長および大きさに関する変形例）
なお、上記実施形態においては、ゲーム装置３は、アドリブ音の高さをランダムに決定し、アドリブ音の音長および大きさについては楽譜通りに出力するものであった。ここで、他の実施形態においては、ゲーム装置３は、アドリブ音の高さのみならず、アドリブ音の音長および／または大きさについてもランダムに決定してアドリブ音を出力するようにしてもよい。なお、アドリブ音の音長および／または大きさをランダムに決定する場合も音高の場合と同様、アドリブ音を加えたメロディーが不自然なものにならないよう、所定の候補範囲を設定し、候補範囲の中から音長および／または大きさを選択するようにすることが好ましい。
【０１７８】
（候補音域の変形例）
また、上記実施形態においては、ゲーム装置３は、対象音の基準音高および次対象音の基準音高に基づいて候補音域を設定した（Ｓ２８）。ここで、他の実施形態においては、ゲーム装置３は、候補音域を設定せずに、現時点で用いられているコード音および／またはスケール音を候補として、アドリブ音の高さを選択するようにしてもよい。例えば、現時点で用いられているコード音を候補としてアドリブ音の高さを選択する場合、現時点で用いられているコード音が「ド−ミ−ソ」であれば、（オクターブに関係なく）音名が「ド」、「ミ」、または「ソ」の音高からアドリブ音の高さを選択するようにしてもよい。
【０１７９】
また、候補音域の設定方法は、上記実施形態に限らず、他の方法であってもよい。例えば、候補音域は、対象音の基準音高または次対象音の基準音域のみに基づいて設定されてもよい。具体的には、対象音または次対象音の基準音高を含む音域（より特定的には、基準音高を中心とした所定幅の音域）を候補音域としてもよい。さらに、このとき、上記実施形態と同様に、時間の経過につれて候補音域の幅を次第に小さくするようにしてもよい。また、例えば、上記実施形態における出力可能音域をそのまま候補音域としてもよい。
【０１８０】
さらに、他の実施形態においては、ゲーム装置３は、アドリブ音の音高の候補を設定せずに、全音域の中からアドリブ音の音高を決定するようにしてもよい。この場合、候補音域や候補コード音や候補スケール音の設定は不要である。
【０１８１】
（発音入力の受け付けに関する変形例）
なお、上記実施形態においては、ゲーム装置３は、楽曲のメロディーを構成する音の出力タイミングが到来した時点以降において入力が行われた場合に、当該音の出力を行った。ここで、プレイヤが出力タイミングにちょうど一致するタイミングで入力を行おうとした場合には、入力のタイミングが音の出力タイミングよりも若干早くなることもあり得る。したがって、音の出力タイミングを厳密に判断すると、出力タイミングが到来する直前に入力が行われた場合に、プレイヤの意図とは異なる音が出力されてしまうおそれがある。これを防止するために、ゲーム装置３は、ある音の出力タイミングよりも所定時間（例えば、８ティック程度）だけ前の時点以降に入力が行われた場合に、当該ある音の出力を行うようにしてもよい。
【産業上の利用可能性】
【０１８２】
以上のように、本発明は、プレイヤが自由な演奏を行うことを可能とすること等を目的として、例えば音楽演奏ゲームを行うための音楽演奏プログラムおよび音楽演奏装置として利用することができる。
【図面の簡単な説明】
【０１８３】
【図１】ゲームシステム１の外観図
【図２】ゲーム装置３の機能ブロック図
【図３】コントローラ５の外観構成を示す斜視図
【図４】コントローラ５の外観構成を示す斜視図
【図５】コントローラ５の内部構造を示す図
【図６】コントローラ５の内部構造を示す図
【図７】コントローラ５の構成を示すブロック図
【図８】本実施形態におけるゲームにおいて表示されるゲーム画像の一例を示す図
【図９】各音符に関連付けられるメロディーエリアの一例を示す図
【図１０】ゲーム装置３のメインメモリに記憶される主なデータを示す図
【図１１】楽曲データ６３の一例を示す図
【図１２】コードデータ６４の一例を示す図
【図１３】スケールデータ６５の一例を示す図
【図１４】ゲーム装置３において実行されるゲーム処理の流れを示すメインフローチャート
【図１５】図１４に示す発音処理（ステップＳ１４）の流れを示すフローチャート
【図１６】図１５に示す候補音域設定処理（ステップＳ２８）の流れを示すフローチャート
【図１７】算出される候補音域の一例を示す図
【図１８】補正前の候補音域を示す図
【図１９】補正後の候補音域を示す図
【図２０】図１５に示すアドリブ音出力処理（ステップＳ３２）の流れを示すフローチャート
【図２１】図２０に示す選択処理（ステップＳ５１）の流れを示すフローチャート
【図２２】図１５に示す例外出力処理（ステップＳ３３）の流れを示すフローチャート
【符号の説明】
【０１８４】
１    ゲームシステム
２    テレビ
３    ゲーム装置
４    光ディスク
５    コントローラ
６    マーカ部
１０    ＣＰＵ
１１ｃ  ＧＰＵ
１１ｅ  内部メインメモリ
１２    外部メインメモリ
５１    楽譜
５２〜５５    音符
６０    ゲームプログラム
６３    楽曲データ
６４    コードデータ
６５    スケールデータ
６６    出力可能音域データ
７２    候補音域データ
【図１】
0005147351.tif 000002
【図２】
0005147351.tif 000003
【図３】
0005147351.tif 000004
【図４】
0005147351.tif 000005
【図５】
0005147351.tif 000006
【図６】
0005147351.tif 000007
【図７】
0005147351.tif 000008
【図８】
0005147351.tif 000009
【図９】
0005147351.tif 000010
【図１０】
0005147351.tif 000011
【図１１】
0005147351.tif 000012
【図１２】
0005147351.tif 000013
【図１３】
0005147351.tif 000014
【図１４】
0005147351.tif 000015
【図１５】
0005147351.tif 000016
【図１６】
0005147351.tif 000017
【図１７】
0005147351.tif 000018
【図１８】
0005147351.tif 000019
【図１９】
0005147351.tif 000020
【図２０】
0005147351.tif 000021
【図２１】
0005147351.tif 000022
【図２２】
0005147351.tif 000023