(57)【特許請求の範囲】
【請求項１】
加速度センサおよび角速度センサを備えた入力装置からの入力に基づいて処理を行う情報処理装置のコンピュータによって実行される情報処理プログラムであって、
前記コンピュータを、
前記加速度センサから出力される加速度データおよび前記角速度センサから出力される角速度データに基づき、前記入力装置の動きに基づいた速度を示す合成速度を設定する合成速度設定手段と、
前記合成速度設定手段で設定された合成速度に基づいて所定の処理を行う処理手段として機能させ、
前記合成速度設定手段は、前記角速度データが小さいときほど前記加速度データの反映度が大きくなり、かつ、前記角速度データの反映度が小さくなるように前記合成速度を設定する、情報処理プログラム。
【請求項２】
前記合成速度は、前記加速度データで示される加速度値と前記角速度データで示される角速度とを加算することによって設定される、請求項１に記載の情報処理プログラム。
【請求項３】
前記情報処理プログラムは、
再生の対象となる音楽データを記憶する音楽データ記憶手段として前記コンピュータを更に機能させ、
前記処理手段は、前記合成速度設定手段で設定された合成速度に基づいて前記音楽データを再生する再生制御手段を含む、請求項１乃至２のいずれかに記載の情報処理プログラム。
【請求項４】
前記情報処理プログラムは、前記加速度データおよび角速度データに基づいて、前記音楽データにおける再生開始位置を設定する再生開始位置設定手段として前記コンピュータを更に機能させ、
前記再生制御手段は、前記設定された再生開始位置から前記音楽データの再生を開始する、請求項３に記載の情報処理プログラム。
【請求項５】
前記再生開始位置設定手段は、前記音楽データの始端あるいは終端のいずれか一方を前記再生開始位置として設定する、請求項４に記載の情報処理プログラム。
【請求項６】
前記再生開始位置設定手段は、前記合成速度に基づき、前記再生開始位置を設定する、請求項４または５に記載の情報処理プログラム。
【請求項７】
前記情報処理プログラムは、前記加速度データおよび角速度データに基づいて、前記音楽データの再生方向を設定する再生方向設定手段として前記コンピュータを更に機能させ、
前記再生制御手段は、前記再生方向設定手段で設定された再生方向に沿って前記音楽データを再生する、請求項３乃至６のいずれかに記載の情報処理プログラム。
【請求項８】
前記再生制御手段は、前記合成速度に基づき、前記音楽データを再生する再生速度を設定する再生速度設定手段を含む、請求項３乃至７のいずれかに記載の情報処理プログラム。
【請求項９】
前記合成速度設定手段は、前記合成速度を繰り返し設定し、
前記再生速度設定手段は、前記繰り返し設定される合成速度に基づき、前記再生速度を繰り返し設定する、請求項８に記載の情報処理プログラム。
【請求項１０】
前記再生速度設定手段は、前記合成速度に基づき設定される前記再生速度が速くなる場合にのみ前記再生速度の設定を行う、請求項９に記載の情報処理プログラム。
【請求項１１】
前記情報処理プログラムは、前記加速度データおよび角速度データに基づいて、再生中の前記音楽データの再生を停止するか否かを判定する再生停止判定手段として更に機能させ、
前記再生制御手段は、前記再生停止判定手段が再生を停止すると判定したとき、前記加速度データおよび角速度データに基づいて前記音楽データ上の再生停止位置を決定し、当該決定した位置で再生を停止する、請求項３乃至１０のいずれかに記載の情報処理プログラム。
【請求項１２】
前記情報処理プログラムは、音楽の再生のための所定の条件が満たされたか否かを判定する再生条件判定手段として前記コンピュータを更に機能させ、
前記再生制御手段は、前記再生条件判定手段で前記所定の条件が満たされていると判定されている間に前記音楽データの再生を行う、請求項３乃至１１のいずれかに記載の情報処理プログラム。
【請求項１３】
前記入力装置はさらに所定の入力部を備え、
前記再生条件判定手段は、前記入力部に対して入力があったか否かを判定し、
前記再生制御手段は、前記再生条件判定手段が前記入力部に対して入力があると判定している間に前記音楽データの再生を行う、請求項１２に記載の音楽演奏プログラム。
【請求項１４】
前記音楽データは、所定の音が等間隔に配置されている楽譜を示すデータである、請求項３乃至１３のいずれかに記載の情報処理プログラム。
【請求項１５】
加速度センサおよび角速度センサを備えた入力装置からの入力に基づいて音楽を再生する情報処理装置であって、
前記加速度センサから出力される加速度データおよび前記角速度センサから出力される角速度データに基づき、前記入力装置の動きに基づいた速度を示す合成速度を設定する合成速度設定手段と、
前記合成速度設定手段で設定された合成速度に基づいて所定の処理を行う処理手段とを備え、
前記合成速度設定手段は、前記角速度データが小さいときほど前記加速度データの反映度が大きくなり、かつ、前記角速度データの反映度が小さくなるように前記合成速度を設定する、情報処理装置。
【請求項１６】
加速度センサおよび角速度センサを備えた入力装置からの入力に基づいて音楽を再生する情報処理システムであって、
前記加速度センサから出力される加速度データおよび前記角速度センサから出力される角速度データに基づき、前記入力装置の動きに基づいた速度を示す合成速度を設定する合成速度設定手段と、
前記合成速度設定手段で設定された合成速度に基づいて所定の処理を行う処理手段とを備え、
前記合成速度設定手段は、前記角速度データが小さいときほど前記加速度データの反映度が大きくなり、かつ、前記角速度データの反映度が小さくなるように前記合成速度を設定する、情報処理システム。
【請求項１７】
加速度センサおよび角速度センサを備えた入力装置からの入力に基づいて音楽を再生する情報処理装置または情報処理システムを制御する情報処理制御方法であって、
前記加速度センサから出力される加速度データおよび前記角速度センサから出力される角速度データに基づき、前記入力装置の動きに基づいた速度を示す合成速度を設定する合成速度設定ステップと、
前記合成速度設定ステップで設定された合成速度に基づいて所定の処理を前記情報処理装置に行わせる処理ステップとを備え、
前記合成速度設定ステップでは、前記角速度データが小さいときほど前記加速度データの反映度が大きくなり、かつ、前記角速度データの反映度が小さくなるように前記合成速度を設定する、情報処理制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理に関し、より特定的には、加速度、角速度センサを備えた入力装置の動きに基づいた処理に関する。
【背景技術】
【０００２】
従来、入力装置の動きに基づいて仮想的に音楽を演奏する技術が知られている（例えば、非特許文献１）。この技術では、加速度センサを利用して入力装置の動き（振り）を検出しており、入力装置を所定の方向へ１回動かす（振る）ことにより、ギターであれば１ストローク分の動作、打楽器であれば１回分の叩き操作（１打分の操作）として扱われて、仮想的な楽器の演奏が行われていた。
【先行技術文献】
【非特許文献】
【０００３】
【非特許文献１】Ｗｉｉ用ソフト「Wii Music」取扱説明書、任天堂株式会社、2008年10月16日発売、第１０頁から第１１頁
【発明の概要】
【発明が解決しようとする課題】
【０００４】
上記の技術においては、入力装置の所定の方向への動きがあった際に、ギターであれば１ストローク分、打楽器であれば１打分の演奏を行っている。すなわち、入力装置の所定方向への動きの検知を、ギターを１ストローク分の演奏（操作）や、打楽器を１打分の演奏（操作）を開始するタイミングを計るために用いている。これは、ボタンによる入力を検知することで、上記のような操作の開始タイミングを計ることと大差はなく、変化のある動きに基づいた、きめ細かい演奏操作を行うことができなかった。
【０００５】
それ故に、本発明の目的は、入力装置自体を動かす操作によって、より細やかな操作が可能な情報処理プログラム等を提供することである。
【課題を解決するための手段】
【０００６】
上記目的を達成するために、本発明は以下のような構成を採用した。
【０００７】
本発明にかかる情報処理プログラムは、加速度センサおよび角速度センサを備えた入力装置からの入力に基づいて処理を行う情報処理装置のコンピュータによって実行される情報処理プログラムであって、コンピュータを、合成速度設定手段と処理手段として機能させる。合成速度設定手段は、加速度センサから出力される加速度データおよび角速度センサから出力される角速度データに基づき、入力装置の動きに基づいた速度を示す合成速度を設定する。処理手段は、合成速度設定手段で設定された合成速度に基づいて所定の処理を実行する。
【０００８】
上記構成により、プレイヤにより動かされた入力装置の動きに応じて所定の処理が実行され、より細やかな操作が可能となる。
【０００９】
他の構成例として、合成速度設定手段は、角速度データで示される角速度の大きさに応じて、加速度データを合成速度に反映させる割合を変化させて合成速度を設定してもよい。
【００１０】
上記構成例によれば、入力装置の動かし方が角速度の小さい動かし方である場合でも、加速度を補完的に用いることで、入力装置の動きに応じた合成速度を設定することができる。
【００１１】
更に他の構成例として、合成速度設定手段は、角速度データが小さいときほど加速度データの反映度が大きくなるように合成速度を設定してもよい。
【００１２】
上記構成例によれば、例えば平行移動のような、入力装置の動かし方が角速度の小さい動かし方である場合でも、入力装置の動きに応じた合成速度を設定することができる。
【００１３】
更に他の構成例として、情報処理プログラムは、再生の対象となる音楽データを記憶する音楽データ記憶手段としてコンピュータを更に機能させ、処理手段は、合成速度設定手段で設定された合成速度に基づいて音楽データを再生する再生制御手段を含んでいても良い。
【００１４】
上記構成により、プレイヤにより動かされた入力装置の動きに応じて音楽の再生速度を変化させることができ、例えば弦楽器を演奏するような操作をプレイヤに行わせるような情報処理において、プレイヤに細やかな演奏操作を提供することができる。
【００１５】
更に他の構成例として、情報処理プログラムは、加速度データおよび角速度データに基づいて、音楽データにおける再生開始位置を設定する再生開始位置設定手段としてコンピュータを更に機能させ、再生制御手段は、設定された再生開始位置から音楽データの再生を開始してもよい。
【００１６】
上記構成例によれば、入力装置の動きに応じて、音楽データの再生開始位置を決めることができ、細やかな演奏操作が可能となる。
【００１７】
更に他の構成例として、再生開始位置設定手段は、音楽データの始端あるいは終端のいずれか一方を再生開始位置として設定してもよい。
【００１８】
上記構成例によれば、例えば、ハープのような楽器を演奏操作させる場合に、ハープのいずれかの端から演奏を開始させることができる。
【００１９】
更に他の構成例として、再生開始位置設定手段は、合成速度に基づき、再生開始位置を設定してもよい。
【００２０】
上記構成例によれば、入力装置の動きに応じて、音楽データの再生開始位置を決めることができ、細やかな演奏操作が可能となる。
【００２１】
更に他の構成例として、情報処理プログラムは、加速度データおよび角速度データに基づいて、音楽データの再生方向を設定する再生方向設定手段としてコンピュータを更に機能させ、再生制御手段は、再生方向設定手段で設定された再生方向に沿って音楽データを再生してもよい。
【００２２】
上記構成例によれば、音楽データの再生方向（順方向あるいは逆方向）を入力装置の動きに応じて変化させることができ、細やかな演奏操作が可能となる。
【００２３】
更に他の構成例として、再生制御手段は、合成速度に基づき、音楽データを再生する再生速度を設定する再生速度設定手段を含んでいてもよい。
【００２４】
上記構成例によれば、入力装置を動かす速度に応じて再生速度を変更できるため、楽器を演奏させるような操作をユーザに行わせる際に、細やかな操作を可能とさせる。
【００２５】
更に他の構成例として、合成速度設定手段は、合成速度を繰り返し設定し、再生速度設定手段は、合成速度に基づき、再生速度を繰り返し設定してもよい。
【００２６】
上記構成例によれば、音楽データの再生中であっても、入力装置を動かす速度に応じて再生速度を変更できる。
【００２７】
更に他の構成例として、再生速度設定手段は、合成速度に基づき設定される再生速度が速くなる場合にのみ再生速度の設定を行ってもよい。
【００２８】
上記構成例によれば、再生される音の間隔がばらついて聞こえることによってプレイヤが演奏の気持ちよさを損なってしまうことを防ぐことができ、プレイヤに気持ちよい演奏操作を楽しませることができる。
【００２９】
更に他の構成例として、情報処理プログラムは、加速度データおよび角速度データに基づいて、再生中の音楽データの再生を停止するか否かを判定する再生停止判定手段として更に機能させ、再生制御手段は、再生停止判定手段が再生を停止すると判定したとき、加速度データおよび角速度データに基づいて音楽データ上の再生停止位置を決定し、当該決定した位置で再生を停止するようにしてもよい。
【００３０】
上記構成例によれば、例えばハープを演奏する操作を行わせる場合で、プレイヤが勢い良く入力装置を振ったようなとき、振り操作の慣性に応じて一連の音階を鳴らすことができ、気持ちよく演奏操作を楽しませることができる。
【００３１】
更に他の構成例として、情報処理プログラムは、音楽の再生のための所定の条件が満たされたか否かを判定する再生条件判定手段としてコンピュータを更に機能させ、再生制御手段は、再生条件判定手段で所定の条件が満たされていると判定されている間に音楽データの再生を行うようにしてもよい。
【００３２】
上記構成例によれば、例えば低速で入力装置を動かした場合に不必要に音を鳴らしてしまうことを防止することができる。
【００３３】
更に他の構成例として、入力装置はさらに所定の入力部を備え、再生条件判定手段は、入力部に対して入力があったか否かを判定し、再生制御手段は、再生条件判定手段が入力部に対して入力があると判定している間に音楽データの再生を行うようにしてもよい。
【００３４】
上記構成例によれば、例えば所定のボタンを押さなければ音が再生されないようにすることができ、不必要に音が鳴ってしまうことを防止することができる。
【００３５】
更に他の構成例として、音楽データは、所定の音が等間隔に配置されている楽譜を示すデータであってもよい。
【００３６】
上記構成例によれば、例えばハープやギター等の弦楽器（等間隔に弦が配置されている）を模した演奏操作をプレイヤに提供することができる。
【発明の効果】
【００３７】
本発明によれば、例えば弦楽器を演奏するような操作をプレイヤに行わせるような情報処理において、プレイヤに細やかな操作を提供することができる。
【図面の簡単な説明】
【００３８】
【図１】ゲームシステム１の外観図
【図２】ゲーム装置３の構成を示すブロック図
【図３】コントローラ７の外観構成を示す斜視図
【図４】コントローラ７の構成を示すブロック図
【図５】ゲーム画像の一例
【図６】演奏操作を行う時のプレイヤの姿勢とコントローラ７の持ち方の一例
【図７】ハープに対応する楽譜の一例
【図８】コントローラ７の動かし方を説明するための図
【図９】コントローラ７の動かし方を説明するための図
【図１０】ゲーム装置３の外部メインメモリ１２のメモリマップを示す図
【図１１】再生開始位置および再生中位置の概念を説明するための図
【図１２】演奏操作検出処理の詳細を示すフローチャート
【図１３】合成速度・振り方向算出処理の詳細を示すフローチャート
【図１４】再生開始判定処理の詳細を示すフローチャート
【図１５】再生開始位置更新処理の詳細を示すフローチャート
【図１６】楽譜再生中処理の詳細を示すフローチャート
【図１７】逆方向再生開始判定処理の詳細を示すフローチャート
【発明を実施するための形態】
【００３９】
以下、本発明の実施の形態について、図面を参照して説明する。
【００４０】
［ゲームシステムの全体構成］
図１を参照して、本発明の一実施形態に係る情報処理装置の一例であるゲーム装置を含むゲームシステム１について説明する。図１は、ゲームシステム１の外観図である。以下、据置型のゲーム装置を一例にして、本実施形態のゲーム装置およびゲームプログラムについて説明する。図１において、ゲームシステム１は、テレビジョン受像器（以下、単に「テレビ」と記載する）２、ゲーム装置３、光ディスク４、およびコントローラ７を含む。本システムは、コントローラ７を用いたゲーム操作に基づいてゲーム装置３でゲーム処理を実行するものである。
【００４１】
ゲーム装置３には、当該ゲーム装置３に対して交換可能に用いられる情報記憶媒体の一例である光ディスク４が脱着可能に挿入される。光ディスク４には、ゲーム装置３において実行されるためのゲームプログラムが記憶されている。ゲーム装置３の前面には光ディスク４の挿入口が設けられている。ゲーム装置３は、挿入口に挿入された光ディスク４に記憶されているゲームプログラムを読み出して実行することによってゲーム処理を実行する。
【００４２】
ゲーム装置３には、表示装置の一例であるテレビ２が接続コードを介して接続される。テレビ２は、ゲーム装置３において実行されるゲーム処理の結果得られるゲーム画像を表示する。
【００４３】
コントローラ７は、自機に対して行われた操作の内容を示す操作データをゲーム装置３に与えるものである。本実施形態では、コントローラ７とゲーム装置３とは無線通信によって接続される。本実施形態では、コントローラ７とゲーム装置３との間の無線通信には例えばＢｌｕｅｔｏｏｔｈ（ブルートゥース）（登録商標）の技術が用いられる。なお、他の実施形態においてはコントローラ７とゲーム装置３とは有線で接続されてもよい。
【００４４】
［ゲーム装置３の内部構成］
次に、図２を参照して、ゲーム装置３の内部構成について説明する。図２は、ゲーム装置３の構成を示すブロック図である。ゲーム装置３は、ＣＰＵ１０、システムＬＳＩ１１、外部メインメモリ１２、ＲＯＭ／ＲＴＣ１３、ディスクドライブ１４、およびＡＶ−ＩＣ１５等を有する。
【００４５】
ＣＰＵ１０は、光ディスク４に記憶されたゲームプログラムを実行することによってゲーム処理を実行するものであり、ゲームプロセッサとして機能する。ＣＰＵ１０は、システムＬＳＩ１１に接続される。システムＬＳＩ１１には、ＣＰＵ１０の他、外部メインメモリ１２、ＲＯＭ／ＲＴＣ１３、ディスクドライブ１４およびＡＶ−ＩＣ１５が接続される。システムＬＳＩ１１は、それに接続される各構成要素間のデータ転送の制御、表示すべき画像の生成、外部装置からのデータの取得等の処理を行う。システムＬＳＩ１１の内部構成については後述する。揮発性の外部メインメモリ１２は、光ディスク４から読み出されたゲームプログラムや、フラッシュメモリ１７から読み出されたゲームプログラム等のプログラムを記憶したり、各種データを記憶したりするものであり、ＣＰＵ１０のワーク領域やバッファ領域として用いられる。ＲＯＭ／ＲＴＣ１３は、ゲーム装置３の起動用のプログラムが組み込まれるＲＯＭ（いわゆるブートＲＯＭ）と、時間をカウントするクロック回路（ＲＴＣ：Ｒｅａｌ  Ｔｉｍｅ  Ｃｌｏｃｋ）とを有する。ディスクドライブ１４は、光ディスク４からプログラムデータやテクスチャデータ等を読み出し、後述する内部メインメモリ１１ｅまたは外部メインメモリ１２に読み出したデータを書き込む。
【００４６】
また、システムＬＳＩ１１には、入出力プロセッサ（Ｉ／Ｏプロセッサ）１１ａ、ＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｏｒ  Ｕｎｉｔ）１１ｂ、ＤＳＰ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ）１１ｃ、ＶＲＡＭ１１ｄ、および内部メインメモリ１１ｅが設けられる。図示は省略するが、これらの構成要素１１ａ〜１１ｅは内部バスによって互いに接続される。
【００４７】
ＧＰＵ１１ｂは、描画手段の一部を形成し、ＣＰＵ１０からのグラフィクスコマンド（作画命令）に従って画像を生成する。ＶＲＡＭ１１ｄは、ＧＰＵ１１ｂがグラフィクスコマンドを実行するために必要なデータ（ポリゴンデータやテクスチャデータ等のデータ）を記憶する。画像が生成される際には、ＧＰＵ１１ｂは、ＶＲＡＭ１１ｄに記憶されたデータを用いて画像データを作成する。
【００４８】
ＤＳＰ１１ｃは、オーディオプロセッサとして機能し、内部メインメモリ１１ｅや外部メインメモリ１２に記憶されるサウンドデータや音波形（音色）データを用いて、音声データを生成する。
【００４９】
上述のように生成された画像データおよび音声データは、ＡＶ−ＩＣ１５によって読み出される。ＡＶ−ＩＣ１５は、読み出した画像データをＡＶコネクタ１６を介してテレビ２に出力するとともに、読み出した音声データを、テレビ２に内蔵されるスピーカ２ａに出力する。これによって、画像がテレビ２に表示されるとともに音がスピーカ２ａから出力される。
【００５０】
入出力プロセッサ１１ａは、それに接続される構成要素との間でデータの送受信を実行したり、外部装置からのデータのダウンロードを実行したりする。入出力プロセッサ１１ａは、フラッシュメモリ１７、無線通信モジュール１８、無線コントローラモジュール１９、拡張コネクタ２０、およびメモリカード用コネクタ２１に接続される。無線通信モジュール１８にはアンテナ２２が接続され、無線コントローラモジュール１９にはアンテナ２３が接続される。
【００５１】
入出力プロセッサ１１ａは、無線通信モジュール１８およびアンテナ２２を介してネットワークに接続し、ネットワークに接続される他のゲーム装置や各種サーバと通信することができる。入出力プロセッサ１１ａは、定期的にフラッシュメモリ１７にアクセスし、ネットワークへ送信する必要があるデータの有無を検出し、当該データが有る場合には、無線通信モジュール１８およびアンテナ２２を介してネットワークに送信する。また、入出力プロセッサ１１ａは、他のゲーム装置から送信されてくるデータやダウンロードサーバからダウンロードしたデータを、ネットワーク、アンテナ２２および無線通信モジュール１８を介して受信し、受信したデータをフラッシュメモリ１７に記憶する。ＣＰＵ１０はゲームプログラムを実行することにより、フラッシュメモリ１７に記憶されたデータを読み出してゲームプログラムで利用する。フラッシュメモリ１７には、ゲーム装置３と他のゲーム装置や各種サーバとの間で送受信されるデータの他、ゲーム装置３を利用してプレイしたゲームのセーブデータ（ゲームの結果データまたは途中データ）が記憶されてもよい。
【００５２】
また、入出力プロセッサ１１ａは、コントローラ５から送信される操作データをアンテナ２３および無線コントローラモジュール１９を介して受信し、内部メインメモリ１１ｅまたは外部メインメモリ１２のバッファ領域に記憶（一時記憶）する。
【００５３】
さらに、入出力プロセッサ１１ａには、拡張コネクタ２０およびメモリカード用コネクタ２１が接続される。拡張コネクタ２０は、ＵＳＢやＳＣＳＩのようなインターフェースのためのコネクタであり、外部記憶媒体のようなメディアを接続したり、他のコントローラのような周辺機器を接続したり、有線の通信用コネクタを接続することによって無線通信モジュール１８に替えてネットワークとの通信を行ったりすることができる。メモリカード用コネクタ２１は、メモリカードのような外部記憶媒体を接続するためのコネクタである。例えば、入出力プロセッサ１１ａは、拡張コネクタ２０やメモリカード用コネクタ２１を介して外部記憶媒体にアクセスし、外部記憶媒体にデータを保存したり、外部記憶媒体からデータを読み出したりすることができる。
【００５４】
ゲーム装置３には、電源ボタン２４、リセットボタン２５、およびイジェクトボタン２６が設けられる。電源ボタン２４およびリセットボタン２５は、システムＬＳＩ１１に接続される。電源ボタン２４がオンされると、ゲーム装置３の各構成要素に対して、図示しないＡＣアダプタを経て電源が供給される。リセットボタン２５が押されると、システムＬＳＩ１１は、ゲーム装置３の起動プログラムを再起動する。イジェクトボタン２６は、ディスクドライブ１４に接続される。イジェクトボタン２６が押されると、ディスクドライブ１４から光ディスク４が排出される。
【００５５】
［コントローラ７の構成］
次に、図３を参照して、コントローラ７について説明する。図３は、コントローラ７の外観構成を示す斜視図である。図３において、コントローラ７は、例えばプラスチック成型によって形成されたハウジング３１を有している。ハウジング３１は、その前後方向（図３に示すＺ軸方向）を長手方向とした略直方体形状を有しており、全体として大人や子供の片手で把持可能な大きさである。プレイヤは、コントローラ７に設けられたボタンを押下すること、および、コントローラ７自体を動かしてその位置や姿勢を変えることによってゲーム操作を行うことができる。
【００５６】
ハウジング７１には、複数の操作ボタンが設けられる。図３に示すように、ハウジング７１の上面には、十字ボタン７２ａ、１番ボタン７２ｂ、２番ボタン７２ｃ、Ａボタン７２ｄ、マイナスボタン７２ｅ、ホームボタン７２ｆ、プラスボタン７２ｇ、および電源ボタン７２ｈが設けられる。また、ハウジング７１の下面には凹部が形成されており、当該凹部の後面側傾斜面にはＢボタン７２ｉが設けられる（図示は省略）。これらの各操作ボタン７２ａ〜７２ｉには、ゲーム装置３が実行するゲームプログラムに応じた機能が適宜割り当てられる。また、電源ボタン７２ｈは遠隔からゲーム装置３本体の電源をオン／オフするためのものである。
【００５７】
ハウジング７１の後面にはコネクタ７３が設けられている。コネクタ７３は、コントローラ７に他の機器を接続するために利用される。
【００５８】
図４は、コントローラ７の構成を示すブロック図である。コントローラ７は、操作部７２（各操作ボタン７２ａ〜７２ｉ）、通信部７５、加速度センサ７０１、および角速度センサ７０２を備えている。コントローラ７は、自機に対して行われた操作内容を示すデータを操作データとしてゲーム装置３へ送信するものである。
【００５９】
操作部７２は、上述した各操作ボタン７２ａ〜７２ｉを含み、各操作ボタン７２ａ〜７２ｉに対する入力状態（各操作ボタン７２ａ〜７２ｉが押下されたか否か）を示す操作ボタンデータを通信部７５のマイコン７５１へ出力する。
【００６０】
通信部７５は、マイコン７５１、メモリ７５２、無線モジュール７５３、およびアンテナ７５４を含んでいる。マイコン７５１は、処理を行う際にメモリ７５２を記憶領域として用いながら、マイコン７５１が取得したデータをゲーム装置３へ無線送信する無線モジュール７５３を制御する。
【００６１】
加速度センサ７０１は、コントローラ７の加速度（重力加速度を含む）を検出する。すなわち、コントローラ７に加わる力（重力を含む）を検出する。加速度センサ７０１は、当該加速度センサ７０１の検出部に加わっている加速度のうち、センシング軸方向に沿った直線方向の加速度（直線加速度）の値を検出する。例えば、２軸以上の多軸加速度センサの場合には、加速度センサの検出部に加わっている加速度として、各軸に沿った成分の加速度をそれぞれ検出する。なお、加速度センサ７０１は、例えば静電容量式の加速度センサであるとするが、他の方式の加速度センサを用いるようにしてもよい。
【００６２】
本実施形態では、加速度センサ７０１は、コントローラ７を基準とした上下方向（図３に示すＹ軸方向）、左右方向（図３に示すＸ軸方向）および前後方向（図３に示すＺ軸方向）の３軸方向に関してそれぞれ直線加速度を検出する。加速度センサ７０１は、各軸に沿った直線方向に関する加速度を検出するものであるため、加速度センサ７０１からの出力は３軸それぞれの直線加速度の値を表すものとなる。すなわち、検出された加速度は、コントローラ７を基準に設定されるＸＹＺ座標系（コントローラ座標系）における３次元のベクトル（ａｘ，ａｙ，ａｚ）として表される。以下では、加速度センサ７０１によって検出される３軸に関する各加速度値を各成分とするベクトルを加速度ベクトルと呼ぶ。
【００６３】
加速度センサ７０１が検出した加速度を示すデータ（加速度データ）は、通信部７５（マイコン７５１）へ出力される。なお、加速度センサ７０１が検出した加速度は、コントローラ７自体の向き（傾斜角度）や動きに対応して変化するので、ゲーム装置３は加速度データを用いてコントローラ７の向きや動きを算出することができる。
【００６４】
角速度センサ７０２は、３軸（本実施形態では、ＸＹＺ軸）周りの角速度を検出する。角速度センサ７０２で検出された角速度を示すデータは、マイコン７５１に出力される。したがって、マイコン７５１には、ＸＹＺ軸の３軸回りの角度速度を示すデータが入力されることになる。マイコン７５１は、上記３軸回りの角速度を示すデータを角速度データとしてコントローラ７へ送信する。
【００６５】
また、本実施形態では、角速度センサ７０２が角速度を検出する３つの軸は、加速度センサ７０１が加速度を検出する３つの軸（ＸＹＺ軸）と一致するように設定される。コントローラ７の姿勢算出のための処理における計算処理を容易にするためである。ただし、他の実施形態においては、角速度センサ７０２が角速度を検出する３つの軸と、加速度センサ７０１が加速度を検出する３つの軸とは一致しなくてもよい。
【００６６】
［ゲーム装置３における演奏処理の概要］
以下、ゲーム装置３において実行される音楽再生処理（演奏処理）の概要について説明する。
【００６７】
本実施形態で想定するゲームは、コントローラ７自体を動かすことで仮想空間内のプレイヤオブジェクトを操作するゲームである。そして、本実施形態で説明する処理は、プレイヤオブジェクトにハープを演奏する動作を行わせ、この動作に合わせて音楽を再生する処理である（以下では単に演奏処理と呼ぶ）。
【００６８】
図５は、プレイヤオブジェクトがハープを演奏する場合のゲーム画像の一例である。図５に示すゲーム画像においては、プレイヤオブジェクト１０１がハープ１０２を持っている。なお、本実施形態では、当該ハープ１０２の弦は１２本あり、１２音を鳴らすことが可能となっている。
【００６９】
次に、上記プレイヤオブジェクト１０１がハープ１０２を演奏するときの操作について説明する。まず、ゲーム内の所定の場面で、プレイヤオブジェクト１０１がハープ１０２を構えていない状態において十字ボタン７２ａの”上”を押すと、上記図５のように、プレイヤオブジェクト１０１がハープ１０２を左腕で構えた状態となる。この状態では、プレイヤオブジェクト１０１の右手はハープ１０２の弦の位置にある。そして、プレイヤは、例えば、プレイヤオブジェクト１０１と同じような姿勢（ハープ１０２を左腕で構えているような姿勢）をとる（後述の図６）。そして、プレイヤは、Ａボタン７２ｄを押しながらコントローラ７を把持した右手を動かしてハープの弦をつま弾くような動作を（コントローラ７を振る動作）行う。これに応じて、プレイヤオブジェクト１０１の右腕がハープ１０２の弦の部分内を移動し、ハープ１０２から音が発せられる。つまり、Ａボタン７２ｄを押しながらコントローラ７自体を動かすことで、ハープ１０２を演奏することができる（換言すれば、Ａボタン７２ｄを押していない状態でコントローラ７を動かしても、音は発せられない）。
【００７０】
図６は、当該演奏操作を行う時のプレイヤの姿勢とコントローラ７の持ち方の一例を模式的に示した図であり、俯瞰図として示している。なお、図６では、プレイヤの前後方向をＺ軸方向としている。本実施形態では、ハープを左手で構え、右手を動かして弦を弾くような姿勢を想定して説明する。プレイヤが実際に行う姿勢や動きのイメージとしては、図６で示すように、プレイヤが左手でハープを構えていることを想定して、左腕を自身の左方に向けて伸ばす。右手では、コントローラ７の上面が上（実空間の座標系のＹ軸正方向）を向くようにして、コントローラ７の略下半分を把持する。そして、コントローラ７の先端（ハウジング７１前面）で、仮想的なハープを弾くような動きを行うことで、ハープの演奏を行うとする。
【００７１】
次に、演奏操作によって発せられるハープ１０２の音に関して説明する。本実施形態では、上記のようにハープ１０２に１２本の弦が設定されている。そして、例えば図７で示すような、１２個の音符から構成される音列（音の並び）を示す楽譜のデータ（音楽データ）も予め定義されている。当該楽譜の各音符がハープの各弦に対応する音色に対応している（換言すれば、ハープ１０２の１２本の弦の音列を音階として楽譜で示したものである）。なお、当該楽譜では、各音符の音価（その音符の音の長さ）は等しいものとする。
【００７２】
本実施形態では、コントローラ７を動かすことで、図７に示す楽譜が再生される。このとき、コントローラ７の動きに応じて、楽譜の再生速度（テンポ）や再生位置、再生方向が制御され、結果的に、ハープ１０２の各弦に対応する音色が出力されることになる。例えば、図６のような姿勢でコントローラ７を左方向（プレイヤから遠ざかる方向）に動かす事で、図７の楽譜でいうと、左端の音から順番に各音符の音が再生されていく。つまり、図７のような楽譜が順方向に再生される。また、例えば図７の楽譜の左から３音目まで再生された時点でプレイヤが手を止めると、楽譜の再生が一時停止され、その位置から再度手を左方向に動かすと、４音目からの再生が再開される。また、逆に、例えば図６においてコントローラ７の位置が仮想的なハープの左端の位置にあると想定し、右方向（プレイヤに近づく方向）にコントローラ７を動かすと、図７の楽譜で言うと、右端の音から左端の音に向けて順番に各音符の音が再生されていく。つまり、図７の楽譜が逆方向に再生される。また、例えば、最初はコントローラ７を左方向に向けて動かし、図７の楽譜の左から５音目まで（順方向に）再生された時点でプレイヤが手を止めると、楽譜の再生が一時停止され、その位置から今度は右方向に手を動かす（手を戻す）と、５音目から１音目に向けての逆方向の再生が行われることになる。
【００７３】
ここで、上記コントローラ７を動かす（振る）操作に関しては、大きく分けて以下のような２つの動かし方が考えられる。まず、図８に示すような、手首を支点とした、スナップをきかせたようなコントローラ７の動かし方がある。この場合、俯瞰すると図８のようにコントローラ７の動く軌跡は略扇状になるように見える。以下、この動きを第１の動かし方と呼ぶ。もう一つは、図９に示すような、コントローラ７を平行移動させるような動かし方であり、主に肩や肘を支点にして腕全体を動かすような動かし方である。以下では第２の動かし方と呼ぶ。また、実際の操作においては、プレイヤのクセ等によってこの２つの動作が混在するような動きになることが考えられる。例えば、ハープ１０２を右から左に向けて１２音全部再生しようとした場合、あるプレイヤは最初から最後まで第２の動かし方で操作するが、別のプレイヤは、動かし初めは第１の動かし方で入り、その後第２の動かし方に変化するような操作を行うことが考えられる。また、更に別のプレイヤであれば、勢いをつけた第１の動かし方を行うことで１２音全部を再生させようとすることも考えられる。
【００７４】
ところで、上記の２つの動かし方によるコントローラ７の動き（姿勢）の検出手法を考えると、例えば、加速度センサ単独による検出、あるいは、角速度センサ単独での検出手法が考えられる。加速度センサだけを利用して検出する手法の場合は、ある程度大きな動きについては検出しやすいが、低速での動きは検出しにくいという特性がある。また、振っている方向が判別しにくいという特性もある。一方、角速度センサだけを利用して検出する手法の場合、例えば、コントローラ７のローカル座標系におけるＹ軸周りの角速度の変化に基づいて、コントローラ７の動きを検出するという手法が考えられる。このような認識手法は、上記第１の動かし方のような角度が変化するような動きについてはその動きや姿勢を検出しやすいという特性がある。その反面、上記第２の動かし方のような平行的な動かし方の場合、角速度の変化が少ないため、角速度データを使った検出手法は適さないという特性がある（この場合は、加速度データによる検出手法のほうが検出しやすい）。そこで、本実施形態では、加速度センサおよび角速度センサを併用することで、両者の特性を活用し、上記演奏操作にかかるコントローラ７の動きや姿勢、更には、動かしている速度や振っている方向等を検出する。
【００７５】
また、本実施形態では、上記コントローラ７を動かす速度（振る速度）に応じて上記図７の楽譜の再生速度される速度を決定する処理が行われる。例えば、コントローラ７を動かす速度が速ければ、再生速度、すなわち楽譜のテンポが速いテンポに設定される。
【００７６】
また、コントローラ７を振っている方向も検出し、上記楽譜の再生方向も設定する。すなわち、ハープの弦を左から右へ向けてつま弾く操作かその逆方向につま弾く操作かを判別し、その方向に応じて上記図７の楽譜の再生方法を順方向に再生するか逆方向に再生するかを決定する。
【００７７】
詳細な説明は後述するが、上記のような演奏操作を実現するために、本実施形態では概ね以下のような処理が実行される。まず、角速度データと加速度データの双方を用いて「合成速度」を算出する。この「合成速度」は、コントローラ７を動かしている（振っている）速度を示すものであり、上記楽譜の再生速度決定の基になるデータとなる。当該「合成速度」が所定値以上であれば、楽譜の再生（すなわち演奏）が開始される。また、このときのコントローラの「振り方向」に応じて再生する方向も決定される。
【００７８】
ここで、上記のように本実施形態ではＡボタン７２ｄが押されている間だけハープ１０２の音が再生される。Ａボタン７２ｄが押されていない状態でコントローラ７を動かしている間は、再生開始位置が適宜決定される。本実施形態では、再生開始位置は、ハープ１０２の左端か右端かのいずれかであるとする（つまり、図７の楽譜の右端か左端のいずれか）。また、本実施形態では、再生開始位置の初期値として上記図７の楽譜における左端の位置が設定されているとする。そして、例えばＡボタン７２ｄを押さずにコントローラ７を、上記図６における左方向に向けて動かしていくとする。そして、その移動量がハープ１０２の弦の部分の半分くらいまで移動したことを示せば、手をハープ１０２の左端に向けて移動させていると先読み判定し、再生開始位置を上記図７の楽譜における右端（図６における仮想ハープの左端）に設定するような処理も行っている。
【００７９】
また、本実施形態では、コントローラ７をある程度勢い良く振った場合は、コントローラ７の移動量としては小さい場合でも図７の楽譜を最後まで再生するような処理も行われる。例えば、上記図７の楽譜で言うと、コントローラ７の動きにある程度の勢いが無かった場合であれば、コントローラの移動量としては１音目〜４音目相当の移動量しかなく、４音目で再生を止めるような移動量であっても、ある程度勢いを付けて振り抜くよう操作が行われていれば、同じ移動量でも１音目〜１２音目まで順に全て再生するような処理も行っている。また、勢いの強さに応じて、最後まで再生するか、途中までの再生で終わるかを決定するような処理も実行される。例えば、上記のような、勢いが小さな動きだったならば４音目で再生を止めるような場合に、勢いの強さに応じて、１〜８音目まで再生して停止したり、１〜１２音目まで再生して停止したりする。また、勢いの強さに応じて、このときの再生速度も適宜設定される。
【００８０】
［ゲーム装置３における処理の詳細］
次に、ゲーム装置３によって実行される演奏処理の詳細を説明する。まず、ゲーム処理において用いられる各種データについて説明する。図１０は、ゲーム装置３の外部メインメモリ１２のメモリマップを示す図である。図１０において、外部メインメモリ１２は、プログラム記憶領域２０１およびデータ記憶領域２０４を含む。
【００８１】
プログラム記憶領域２０１は、ＣＰＵ１０によって実行されるゲームプログラムを記憶し、このゲームプログラムは、演奏操作検出プログラム２０２と、再生処理プログラム２０３などによって構成される。演奏操作検出プログラム２０２は、上述したようなハープ１０２を演奏するための操作を検出するための処理を実行するプログラムである。
【００８２】
再生処理プログラム２０３は、上記図７で示したような楽譜（後述の楽譜データ２０９）の再生処理を担当するプログラムである。当該プログラムは、上記演奏操作検出プログラム２０２から適宜呼び出される（各種処理の実行命令を受ける）プログラムであり、当該再生処理プログラム２０３による再生処理は、上記演奏操作検出プログラム２０２の処理と並列的に実行される。例えば、演奏操作検出プログラム２０２から「再生開始命令」が発行されると、再生処理において、後述の各種データを参照して楽譜の再生速度や再生開始位置、再生方向等が決定され、再生が開始される。また、楽譜の再生中は、現在再生中の位置が当該再生処理によって管理・制御される。更に、再生中は、後述の合成速度データ２１０が毎フレーム参照され、その内容に応じて再生速度も随時制御される。また、演奏操作検出プログラム２０２から「再生停止命令」が発行されると、再生を停止するための処理も実行される。
【００８３】
データ記憶領域２０４には、操作データ２０５、楽譜データ２０９、合成速度データ２１０、振り方向データ２１１、再生開始位置データ２１２、再生中位置データ２１３、リセットカウンタ２１４、勢い値データ２１５などのデータが記憶されるとともに、その他ゲーム処理の必要な各種データも記憶される。例えば、現在楽譜を再生中であるか否かを示すフラグ等が適宜格納される。
【００８４】
操作データ２０５は、コントローラ７からゲーム装置３へ送信されてくる操作データである。操作データ２０５には、角速度データ２０６、加速度データ２０７、および操作ボタンデータ２０８が含まれる。角速度データ２０６は、角速度センサ７０２によって検出された角速度を示すデータである。ここでは、角速度データ２０６は、図３に示すＸＹＺの３軸回りのそれぞれの角速度を示す。また、加速度データ２０７は、加速度センサ７０１によって検出された加速度（加速度ベクトル）を示すデータである。ここでは、加速度データ２０７は、図３に示すＸＹＺの３軸の方向に関する加速度を各成分とする３次元の加速度ベクトルを示す。操作ボタンデータ２０８は、各操作ボタン７２ａ〜７２ｉに対する入力状態を示すデータである。
【００８５】
楽譜データ２０９は、上記図７で示したような楽譜に相当する音楽データである。すなわち、ハープ１０２の１２本の弦に対応する音列が定義されたデータである。なお、上記図７は説明の便宜上楽譜の形式で示しているが、このような内容に相当する音楽データであれば、どのような形式でもよい。
【００８６】
合成速度データ２１０は、上記演奏操作検出プログラム２０２で実行される処理において、上記角速度データ２０６および加速度データ２０７に基づいて算出されるデータである。また、上記再生処理プログラム２０３で実行される処理では、当該合成速度データ２１０に基づいて楽譜データ２０９の再生速度が決定される。
【００８７】
振り方向データ２１１は、コントローラ７が振られている方向を示すためのデータであり、上記演奏操作検出プログラム２０２で実行される処理において適宜設定される。本実施形態では、当該データの内容としては「右方向」、「左方向」、「振っていない」のうちのいずれかを示す値が設定されるものとする。
【００８８】
再生開始位置データ２１２は、上記再生処理プログラム２０３による再生処理において再生が開始される上記楽譜上の位置（楽譜データ２０９における位置）を示すデータである。再生中位置データ２１３は、再生処理によって現在再生されている上記楽譜上の位置（楽譜データ２０９における位置）を示すためのデータである。図１１は、当該再生開始位置、および、再生中位置の概念を示す図である。図１１における楽譜は上記図７と同じものであり、ハープ１０２の１２本の弦に対応した１２個の音符が示されている。再生開始位置は、どの音符から再生するかを示す位置、換言すれば、次に再生する音符を示す位置である。本実施形態では、図１１で示されるように、計１３の位置が設定されている。これは、順方向と逆方向の２つの再生方向があるためである。また、本実施形態では、再生開始位置の初期値として、図１１の一番左端の位置が再生開始位置データ２１２に設定されている。そして、上記演奏操作検出プログラム２０２で実行される処理において、他の位置を示す内容（具体的には、一番右端か一番左端かのいずれか）に適宜更新される。また、再生処理プログラム２０３の処理による楽譜の再生処理中は、当該再生処理において再生開始位置データ２１２の内容は適宜更新されていく（この処理では、１番〜１３番のいずれかに更新される）。例えば、再生処理において、図１１の楽譜の一番左の音符が再生されれば、当該再生処理において、再生開始位置は初期値の「１番」の位置から「２番」の位置に更新される。また、再生中位置は、現在の再生位置を示す内容であり、再生処理プログラム２０３による再生処理においてリアルタイムに（毎フレーム）更新される。
【００８９】
図１０に戻り、リセットカウンタ２１４は、上記演奏操作兼出プログラムにおいて再生開始位置（右端か左端か）を決定する際に用いられる変数である。当該カウンタは、Ａボタン７２ｄを押していない状態でプレイヤがコントローラ７を動かしたときの移動量を示すものとして利用される。
【００９０】
勢い値データ２１５は、コントローラ７をプレイヤが振ったときの、振りの勢い（振りの強さ）を示す値（以下、勢い値と呼ぶ）である。上記合成速度データ２１０に基づいて算出される。
【００９１】
次に、ゲーム装置３において行われる演奏処理の詳細を、図１２〜図１７を用いて説明する。ゲーム装置３の電源が投入されると、ゲーム装置３のＣＰＵ１０は、図示しないＲＯＭに記憶されている起動プログラムを実行し、これによって外部メインメモリ１２等の各ユニットが初期化される。次に、光ディスク４等に記憶されたゲームプログラムが外部メインメモリ１２に読み込まれ、ＣＰＵ１０によってゲームプログラムの実行が開始される。そして、当該ゲームの進行上、プレイヤが所定の操作を行うことで上記図５に示したような、プレイヤオブジェクト１０１がハープ１０２を構えたときに、以下で説明するような処理が実行される。
【００９２】
なお、図１２〜図１７に示す処理は、単なる一例に過ぎず、同様の結果が得られるのであれば、各ステップの処理順序を入れ替えてもよい。また、変数の値や、判断ステップで利用される閾値も、単なる一例に過ぎず、必要に応じて他の値を採用してもよい。また、本実施形態では、図１２〜図１７に示すフローチャートの各ステップの処理をＣＰＵ１０が実行するものとして説明するが、図１２〜図１７に示すフローチャートの一部のステップの処理を、ＣＰＵ１０以外のプロセッサや専用回路が実行するようにしてもよい。
【００９３】
図１２は、演奏操作検出処理の詳細を示すフローチャートである。この処理では、加速度データおよび角速度データに基づいてコントローラ７の動きを検出し、楽譜データ２０９の再生開始位置や再生速度や再生方向等を決定するための処理である。また、諸条件が満たされた際に、再生処理プログラム２０３に対して再生開始や再生停止の命令を発行する処理も行われる。また、当該フローチャートにかかる処理は、１フレーム毎に繰り返し実行される。
【００９４】
図１２において、まず、ステップＳ１で、ＣＰＵ１０は、合成速度・振り方向算出処理を実行する。図１３は、当該合成速度・振り方向算出処理の詳細を示すフローチャートである。図１３において、まず、ステップＳ２１で、ＣＰＵ１０は、操作データ２０５を参照し、角速度データ２０６で示される値（ここではＹ軸回りの角速度）がマイナスの値であるか否かを判定する。本実施形態では、Ｙ軸回り右方向への回転が検出された場合は正の値が、Ｙ軸回り左方向への回転が検出された場合は負の値が角速度データ２０６（のＹ軸回りの角速度を示す値）に設定されているものとする。
【００９５】
上記判定の結果、Ｙ軸回りの角速度がマイナス値ではないときは（ステップＳ２１でＮＯ）、ステップＳ２２で、ＣＰＵ１０は振り方向データ２１１に「右方向」を設定する。一方、マイナス値のときは（ステップＳ２１でＹＥＳ）、ステップＳ２３で、ＣＰＵ１０は、角速度データに−１を積算することで正の値に変換したうえで、振り方向データ２１１に「左方向」を設定する。なお、正の値に変換するのは、後続の各種計算処理の便宜のためである。
【００９６】
次に、ステップＳ２４で、ＣＰＵ１０は、加速度データ２０７および角速度データ２０６を用いて合成速度を算出して合成速度データ２１０として外部メインメモリ１２に格納する。ここで、本実施形態では、上記図６や図８、図９で示したような姿勢を想定し、加速度データ２０７はコントローラ７のローカル座標系におけるＸ軸方向にかかる加速度のみを利用するものとする。但し、他の実施形態では、他の軸にかかる加速度を利用しても良いし、例えば、Ｘ軸およびＹ軸のような複数の加速度を組み合わせて利用するようにしても良い。このステップＳ２４の処理をより具体的に説明すると、ＣＰＵ１０は、以下の数式を用いて合成速度を算出する。まず、以下の式で補正角速度を算出する。
補正角速度＝角速度×角速度用係数Ａ  ・・・式１
ここで、角速度用係数Ａは、本実施形態では固定値が用いられる。
【００９７】
次に、上記角速度が所定の閾値Ｃ以上であるか否かによって、以下のように加速度用係数Ｂが設定される。
（１）角速度が閾値Ｃ以上の場合
加速度用係数Ｂ＝固定値  ・・・式２
（２）角速度が閾値Ｃより小さい場合
変数Ｄ＝（１．０＋閾値Ｃ）−角速度  ・・・式３
加速度用係数Ｂ＝固定係数Ｅ×（変数Ｄ×変数Ｄ）  ・・・式４
なお、上記式３および式４は、角速度が小さいほど加速度係数Ｂが大きくなるような式となっている。つまり、角速度が小さいほど、上記図９で示したような第２の動かし方（平行移動）に近い動きであると推測される。そのため、第２の動かし方に近いほど、合成速度における加速度の反映度を大きくしようとするものである。
【００９８】
次に、以下の式で補正加速度が算出される。
補正加速度＝加速度×加速度用係数Ｂ  ・・・式５
そして、以下の式で合成速度Ｆが算出される。
合成速度Ｆ＝補正角速度＋補正加速度  ・・・式６
このように算出された合成速度Ｆが合成速度データ２１０として格納される（既に格納されている場合は更新される）。上述のように、上記第２の動かし方に近い動きのときほど、加速度の反映度を大きくして（相対的に角速度の反映度が小さくなる）合成速度Ｆが算出され、第１の動かし方に近いほど加速度の反映度を小さくして（相対的に角速度の反映度が大きくなる）合成速度Ｆが算出されることになる。以上で、合成速度・振り方向算出処理は終了する。
【００９９】
図１２に戻り、次に、ステップＳ２で、ＣＰＵ１０は、現在楽譜データ２０９を再生中の状態であるか否かを判定する。その結果、再生中の状態ときは（ステップＳ２でＹＥＳ）、後述するステップＳ４の処理を実行する。一方、再生中の状態ではないときは（ステップＳ２でＮＯ）、ＣＰＵ１０は、ステップＳ３の再生開始判定処理を実行する。
【０１００】
図１４は、ステップＳ３の再生開始判定処理の詳細を示すフローチャートである。まず、ステップＳ４１で、ＣＰＵ１０は、操作データ２０５を参照し、Ａボタン７２ｄが押されているか否かを判定する。その結果、Ａボタン７２ｄが押されていないときは（ステップＳ４１でＮＯ）、当該再生開始判定処理は終了する。
【０１０１】
一方、Ａボタン７２ｄが押されているときは（ステップＳ４１でＹＥＳ）、続くステップＳ４２で、ＣＰＵ１０は、合成速度データ２１０を参照し、合成速度Ｆが再生開始閾値より大きいか否かを判定する。当該再生開始閾値は予め設定されている閾値である。当該判定の結果、合成速度が再生開始閾値より大きいときは（ステップＳ４２でＹＥＳ）、ステップＳ４３で、ＣＰＵ１０は、再生処理プログラム２０３に対して再生開始命令を発行する。これに応じて、再生処理プログラム２０３により再生処理において、楽譜データ２０９の再生が開始される。この際、当該再生処理では、再生開始位置データ２１２が参照され、再生を開始する楽譜上の位置が決定される。また、振り方向データ２１１も参照され、再生する方向（順方向あるいは逆方向）も決定される。更に、合成速度データ２１０も参照され、合成速度Ｆに基づいて楽譜データ２０９の再生速度も決定される。そして、このように決定された各要素に基づいて楽譜データ２０９の再生が開始されることになる。
【０１０２】
一方、合成速度が再生開始閾値より大きくないときは（ステップＳ４２でＮＯ）、上記ステップＳ４３の処理はスキップされ、当該再生開始判定処理は終了する。
【０１０３】
図１２に戻り、再生開始判定処理の次に、ステップＳ５で、ＣＰＵ１０は、再生開始判定処理の結果、楽譜データ２０９の再生が開始されたか否かを判定する。その結果、開始されていれば（ステップＳ５でＹＥＳ）、当該演奏操作検出処理は終了する。一方、再生が開始されていないときは（ステップＳ５でＮＯ）、ＣＰＵ１０は、ステップＳ６の再生開始位置更新処理を実行する。この処理は、再生開始位置をハープ１０２の右端か左端かのいずれかに決めるための処理である。
【０１０４】
図１５は、ステップＳ６にかかる再生開始位置更新処理の詳細を示すフローチャートである。まず、ステップＳ５１で、ＣＰＵ１０は、合成速度データ２１０を参照し、合成速度Ｆが振り判定閾値（その値は予め設定されている）よりも大きいか否かを判定する。当該判定の結果、合成速度Ｆが振り判定閾値よりも大きいときは（ステップＳ５１でＹＥＳ）、次に、ステップＳ５２で、ＣＰＵ１０は、振り方向データ２１１を参照し、現在のフレームにおける振り方向が１フレーム前の処理における振り方向と同じであるか否かを判定する。例えば、１フレーム前の振り方向を示すデータを適宜外部メインメモリ１２に格納・更新するようにしておき、当該データと比較することで当該判定が行われる。当該判定の結果、振り方向が１フレーム前と同じではないと判定されたときは（ステップＳ５２でＮＯ）、ステップＳ５３で、ＣＰＵ１０はリセットカウンタ２１４の値を０クリアする。そして、再生開始位置更新処理を終了する。一方、振り方向が１フレーム前と同じ方向のときは（ステップＳ５２でＹＥＳ）、ステップＳ５４で、ＣＰＵ１０は合成速度Ｆに応じた値をリセットカウンタ２１４に加算する。すなわち、（前回のフレームから）現在のフレームにおいてプレイヤがコントローラ７を動かした量（移動量）が加算されることになる。ここでは、合成速度Ｆが大きな値であるほど、リセットカウンタ２１４には大きな値が加算されるとする。
【０１０５】
次に、ステップＳ５５で、ＣＰＵ１０は、リセットカウンタ２１４が、予め設定されている所定に閾値を越えたか否かを判定する。この閾値は、例えば、ハープ１０２の端から、ハープの中央付近までの距離を示すような値である。当該判定の結果、リセットカウンタ２１４が当該所定の閾値を越えたときは（ステップＳ５５でＹＥＳ）、ステップＳ５６で、ＣＰＵ１０は、再生開始位置データ２１２に、現在の振り方向側の端の位置を設定する。図６および図１１の例で言うと、コントローラ７の振り方向が（図６における）左方向であれば、図１１の再生開始位置「１３番」が再生開始位置データ２１２に設定される。また、振り方向が（図６における）右方向であれば、図１１の再生開始位置「１番」が再生開始位置データ２１２に設定される。なお、現在の振り方向側の端の位置が既に設定済みの場合は、この処理は行わないようにしても良い。
【０１０６】
一方、リセットカウンタ２１４が上記所定の閾値を越えていないときは（ステップ５５でＮＯ）、上記ステップＳ５６の処理はスキップされ、再生開始位置更新処理は終了する。
【０１０７】
一方、上記ステップＳ５１の判定の結果、合成速度Ｆが振り判定閾値よりも大きくないときは（ステップＳ５１でＮＯ）、ステップＳ５７で、ＣＰＵ１０は、リセットカウンタ２１４の値が０クリアされる。更に、ステップＳ５８で、ＣＰＵ１０は、振り方向データ２１１に「振っていない」ことを示す値を設定する。そして、再生開始位置更新処理は終了する。
【０１０８】
図１２に戻り、ステップＳ６の再生開始位置更新処理が終われば、ＣＰＵ１０は演奏操作検出処理を終了する。
【０１０９】
次に、上記ステップＳ２の判定の結果、楽譜再生中であるときの処理（ステップＳ４）について説明する。図１６は、ステップＳ４の楽譜再生中処理の詳細を示すフローチャートである。図１６において、まず、ステップＳ７１で、ＣＰＵ１０は、合成速度データ２１０を参照し、合成速度Ｆに応じた勢い値を算出し、勢い値データ２１５として外部メインメモリ１２に格納する（既に格納されている場合はその値を更新する）。ここで、勢い値とは、コントローラ７をプレイヤが振ったときの、その振りの勢いの強さを示す値である。例えば、プレイヤがコントローラ７を強く振った場合は、ゆっくるとコントローラ７が振られた場合に比べて、より大きな値が勢い値として算出されることになる。
【０１１０】
次に、ステップＳ７２で、ＣＰＵ１０は、操作データ２０５を参照し、Ａボタン７２ｄが押されている状態か否かを判定する。その結果、Ａボタン７２ｄが押されていないときは（ステップＳ７２でＮＯ）、後述のステップＳ７６に処理が進められる。一方、Ａボタン７２ｄが押されているときは（ステップＳ７２でＹＥＳ）、ステップＳ７３で、ＣＰＵ１０は逆方向再生開始判定処理を実行する。この処理は、楽譜の再生中に、コントローラ７を振る方向が反転したか否かを判定し、反転した場合は楽譜の再生方向も逆方向に切り替えるための処理である。
【０１１１】
図１７は、当該逆方向再生開始判定処理の詳細を示すフローチャートである。図１７において、まず、ステップＳ９１で、ＣＰＵ１０は、振り方向データ２１１を参照して、現在のフレームにかかる処理での振り方向が、１つ前のフレームにおける振り方向と逆方向であるか否かを判定する。その結果、逆方向ではないときは（ステップＳ９１でＮＯ）、当該逆方向再生開始判定処理は終了する。
【０１１２】
一方、逆方向のときは（ステップＳ９１でＹＥＳ）、ステップＳ９２で、ＣＰＵ１０は、再生停止命令を再生処理プログラムに対して発行する。これに応じて、再生処理プログラム２０３による再生処理において、再生を停止するための処理が実行される。具体的には、現在再生している音符にかかる音色の再生は最後まで行うが、次に再生予定の音符の音色は鳴らさないような制御が行われる。
【０１１３】
次に、ステップＳ９３で、ＣＰＵ１０は、再生開始判定処理を実行する。当該処理は、図１２を用いて上述したステップＳ３と同じ処理であるため、説明は省略する。この処理が行われた結果、１つ前のフレームとは逆方向への再生処理が開始されることになる。なお、逆方向への再生が行われる場合は、現在再生している音符にかかる音色の再生も即時に停止されてから逆方向への再生が開始される。そして、当該逆方向再生開始判定処理は終了する。
【０１１４】
図１６に戻り、ステップＳ７３の次に、ステップＳ７４で、ＣＰＵ１０は、上記逆方向再生開始判定処理の結果、１つ前のフレームでの再生方向とは逆方向への再生が開始されたか否かを判定する。その結果、逆方向への再生が開始されていたときは（ステップＳ７４でＹＥＳ）、ＣＰＵ１０は楽譜再生中処理を終了する。
【０１１５】
一方、逆方向への再生が開始されていない（つまり、再生方向の変化が発生していない）ときは（ステップＳ７４でＮＯ）、次に、ステップＳ７５で、合成速度Ｆが停止判定閾値よりも小さいか否かが判定される。つまり、コントローラ７を動かすプレイヤの手が止まったか否か（演奏を止めたか否か）を判定する。当該判定の結果、合成速度Ｆが停止判定閾値よりも小さくない（演奏操作が継続している）ときは（ステップＳ７５でＮＯ）、ＣＰＵ１０は楽譜再生中処理を終了する。その結果、再生処理プログラム２０３による再生処理が継続されることになる。
【０１１６】
一方、合成速度Ｆが停止判定閾値よりも小さいときは（ステップＳ７５でＹＥＳ）、ステップＳ７６で、ＣＰＵ１０は、楽譜データ２０９の再生を停止するための処理を実行する。具体的には、まず、ＣＰＵ１０は、振り方向データ２１１に「振っていない」ことを示す内容を設定する。更に、ＣＰＵ１０は、並列して再生処理を実行している再生処理に対して再生停止命令を発行する。これに応じて、再生処理においては再生を停止するための処理が実行される。このとき、再生処理においては、勢い値データ２１５が参照され、勢い値が所定の閾値を越えていれば、その勢い値に応じて、再生を停止する位置を決定する処理が実行される。例えば、勢いよくコントローラ７が振られたあとＡボタン７２ｄが押されていない状態になったようなときに、そのときの勢いに応じた慣性でハープ１０２の弦の何本かは鳴らしてから再生を停止するような処理が実行される。また、勢い値が所定の閾値を越えていないときは、現在再生している音符にかかる音色の再生は最後まで行うが、次に再生予定の音符の音色は鳴らさないような制御が行われる。また、再生を停止するまでの再生速度についても当該勢い値データ２１５に基づいて決定され、この再生速度に沿って再生制御が行われる。
【０１１７】
ステップＳ７６の処理が終われば、楽譜再生中処理は終了する。以上で、本実施形態にかかる演奏処理の詳細な説明を終了する。
【０１１８】
このように、本実施形態では、加速度センサおよび角速度センサ双方からの出力データを利用してコントローラ７の動きを検出している。そして、コントローラ７の動きの内容（振り速度や振り方向等）に基づき、楽譜データの再生を制御している。これにより、コントローラ７の動きをより正確に反映して楽譜の再生処理を実行でき、楽器を演奏するゲーム等において、より細やかな演奏操作をプレイヤに提供できる。
【０１１９】
また、プレイヤがコントローラ７を勢い良く振ったときは、その振りの勢いに応じて、本来は（勢いが小さいときは）再生されない音列も再生するような制御を行っている。これにより、例えば手首のスナップをきかせてコントローラ７を小さく、しかし、勢い良く振ったような場合は、もし勢いが小さな動きであれば２〜３本分の弦の音しか再生されないような動きでも、全ての弦の音（つまり、楽譜データ２０９の全て）を再生することができ、プレイヤに気持ちよい演奏感を与えることが可能となる。
【０１２０】
なお、再生開始位置の設定に関し、上記実施形態では、再生開始位置としては、ハープ１０２の右端あるいは左端のいずれかに設定するような処理を行っていた（上記ステップＳ５６）。これに限らず、上記ステップＳ５６の処理においては、コントローラ７の振り方向に応じて（例えば図１１の）再生開始位置を隣に一つずつずらしていくように処理しても良い。また、この場合は、再生開始位置をずらす毎にリセットカウンタ２１４を０クリアするように処理すればよい。
【０１２１】
また、上記実施形態では、Ａボタン７２ｄが押されている間だけ楽譜が再生（音色が出力）されるような処理としていた。これは、例えば、低速でコントローラ７を動かしたような場合に不必要に音が再生されることができる点で有利であるためであるが（換言すれば、非常に低速なコントローラ７の動きであっても再生開始が可能である）、これに限らず、Ａボタン７２ｄ等の何らかのボタンが押されている、というような条件を用いずに処理しても良い。すなわち、プレイヤオブジェクト１０１がハープ１０２を構えて（図５参照）演奏可能な状態となれば、この状態が解除されるまでは、常にコントローラ７の動きに応じて上記のような再生処理を行うようにしても良い。
【０１２２】
また、上記のＡボタン７２ｄが押されている、という条件の代わりに、別の条件を再生されるための条件として利用してもよい。例えば、画面上にカウントダウンを表示し、カウントが０になったタイミングで再生可能な条件が満たされたと判定する処理にしてもよい。その他、ゲーム処理内における所定の条件（例えば、特定のエリアに侵入したときに再生可能、等）を利用しても良い。
【０１２３】
また、楽譜データに関して、上記実施形態では、ハープ１０２の弦に対応する音列をそのまま楽譜としたようなデータ（音階となるデータ）を利用していたが、必ずしもハープの弦に対応するような音列とする必要はない。例えば、演奏操作の違和感の少なさという観点では、楽譜上の１つの音符が１本の弦に対応付けられていることが好ましいが、例えば、１つの弦に対して数個の音符を対応付けた通常の楽曲（旋律）が再生されるようにしてもよい。この場合であっても、再生速度や再生方向、再生開始位置については上記の処理で同様に設定されるため、ある楽譜（に基づく楽曲）を再生する場合に、コントローラ７の動きに応じて多彩な演奏操作を行うことが可能となる。
【０１２４】
また、楽譜データ２０９を複数用意しておき、ハープ１０２を演奏する場面に応じて、利用する楽譜データ２０９を変えるようにしてもよい。また、演奏する楽器についても、ハープに限るものではなく、弦楽器全般についても本発明は適用可能である。更には、弦楽器等の楽器だけに限らず、上記のようなコントローラ７の動きに基づき所定の音楽データ（楽譜データ）を再生する処理が利用できる局面であれば、本発明は適用可能である。また、上記実施形態では、情報処理装置の一例としてゲーム装置を挙げ、音楽を再生（楽器を演奏）するような処理の場合を例として説明したが、このような音楽データの再生処理に限らず、コントローラ７の動きに基づき、例えば動画を再生するような処理についても本発明は適用可能であることは言うまでもない。
【０１２５】
更に、上記再生開始判定処理や再生開始位置更新処理、楽譜再生中処理に関して、それぞれの処理において、合成速度と所定の閾値とを比較する処理が含まれているが（ステップＳ４２、Ｓ５１，Ｓ７５）。この判定処理に先だって、加速度データ単体と所定の閾値との比較処理、および角速度データ単体と所定の閾値との比較処理（の少なくとも一方もしくは両方）を実行するようにしてもよい。これは、例えば、再生開始判定処理を例にすると、プレイヤの手が止まっている状態（コントローラ７が動いていない状態）であるにもかかわらず、計算処理上の誤差等で上記ステップＳ４２において合成速度Ｆが再生開始閾値より大きいと判定され、音が鳴ってしまうようなことを防ぐためである。つまり、合成速度を用いた判定処理の前に、加速度データ単体を利用して判定を行うことでコントローラ７の動きが発生しているのかを判定し、更に、角速度データ単体でも同様の判定を行うことで、コントローラ７が実際に動いているか否かをより正確に判別するものである。これにより、計算処理上の誤差等により、（特にコントローラ７の動きが小さいような場合に）コントローラ７の実際の動きと音の再生や停止制御が一致しないということを防ぐことが可能となる。
【０１２６】
また、上記再生処理プログラム２０３の処理内容に関して、上記実施形態では、楽譜の再生速度については、毎フレームの合成速度に応じて再生速度を変化させるようにしていたが、この他、再生速度が前より速くなる場合のみ再生速度を変化させるような制御を行っても良い。これは、再生速度が遅くなる場合も正確に反映させた場合、特にプレイヤがコントローラ７をゆっくり振っているときに、音の再生される間隔がバラバラになってしまい、気持ち良い演奏感が得られなくなる可能性があるためである。換言すれば、再生速度が速くなる場合のみ再生速度を変化させるような制御を行うことで、ハープの音ができるだけ一定間隔で再生されるようにし、音の再生間隔のバラつきがプレイヤにとって気にならないようにすることが可能となる。また、その他、このような音の再生間隔のバラツキを軽減する手法としては、例えば、直前数フレームの合成速度の値の平均を使用して再生速度を変化させるようにしてもよい。
【０１２７】
また、上記実施形態においては、コントローラ７の姿勢に基づいてハープ１０２を演奏するための一連の処理が単一の装置（ゲーム装置３）において実行される場合を説明したが、他の実施形態においては、上記一連の処理が複数の情報処理装置からなる情報処理システムにおいて実行されてもよい。例えば、端末側装置と、当該端末側装置とネットワークを介して通信可能なサーバ側装置とを含む情報処理システムにおいて、上記一連の処理のうちの一部の処理がサーバ側装置によって実行されてもよい。さらには、端末側装置と、当該端末側装置とネットワークを介して通信可能なサーバ側装置とを含む情報処理システムにおいて、上記一連の処理のうちの主要な処理がサーバ側装置によって実行され、当該端末側装置では一部の処理が実行されてもよい。また、上記情報処理システムにおいて、サーバ側のシステムは、複数の情報処理装置によって構成され、サーバ側で実行するべき処理を複数の情報処理装置が分担して実行してもよい。
【符号の説明】
【０１２８】
１    ゲームシステム
２    モニタ
２ａ    スピーカ
３    ゲーム装置
４    光ディスク
７    コントローラ
１０    ＣＰＵ
１１    システムＬＳＩ
１１ａ    入出力プロセッサ
１１ｂ    ＧＰＵ
１１ｃ    ＤＳＰ
１１ｄ    ＶＲＡＭ
１１ｅ    内部メインメモリ
１２    外部メインメモリ
１３    ＲＯＭ／ＲＴＣ
１４    ディスクドライブ
１５    ＡＶ−ＩＣ
１６    ＡＶコネクタ
１７    フラッシュメモリ
１８    無線通信モジュール
１９    無線コントローラモジュール
２０    拡張コネクタ
２１    外部メモリカード用コネクタ
２２    アンテナ
２３    アンテナ
２４    電源ボタン
２５    リセットボタン
２６    イジェクトボタン
７１    ハウジング
７２    操作部
７３    コネクタ
７５    通信部
７０１  加速度センサ
７０２  角速度センサ
７５１    マイコン
７５２    メモリ
７５３    無線モジュール
７５４    アンテナ
【図１】
0005902919.tif 000002
【図２】
0005902919.tif 000003
【図３】
0005902919.tif 000004
【図４】
0005902919.tif 000005
【図５】
0005902919.tif 000006
【図６】
0005902919.tif 000007
【図７】
0005902919.tif 000008
【図８】
0005902919.tif 000009
【図９】
0005902919.tif 000010
【図１０】
0005902919.tif 000011
【図１１】
0005902919.tif 000012
【図１２】
0005902919.tif 000013
【図１３】
0005902919.tif 000014
【図１４】
0005902919.tif 000015
【図１５】
0005902919.tif 000016
【図１６】
0005902919.tif 000017
【図１７】
0005902919.tif 000018