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