説明

情報処理プログラム、情報処理装置、情報処理システム、情報処理方法

【課題】入力装置自体を動かす操作によって、より細やかな操作が可能な情報処理プログラム等を提供すること。
【解決手段】加速度センサおよび角速度センサを備えた入力装置からの入力に基づいて処理を行う情報処理装置のコンピュータによって実行される情報処理プログラムであって、加速度センサから出力される加速度データおよび角速度センサから出力される角速度データに基づき、入力装置の動きに基づいた速度を示す合成速度を設定するようコンピュータを機能させる。そして、当該設定された合成速度に基づいて所定の処理を行うようにコンピュータを機能させる。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理に関し、より特定的には、加速度、角速度センサを備えた入力装置の動きに基づいた処理に関する。
【背景技術】
【0002】
従来、入力装置の動きに基づいて仮想的に音楽を演奏する技術が知られている(例えば、非特許文献1)。この技術では、加速度センサを利用して入力装置の動き(振り)を検出しており、入力装置を所定の方向へ1回動かす(振る)ことにより、ギターであれば1ストローク分の動作、打楽器であれば1回分の叩き操作(1打分の操作)として扱われて、仮想的な楽器の演奏が行われていた。
【先行技術文献】
【非特許文献】
【0003】
【非特許文献1】Wii用ソフト「Wii Music」取扱説明書、任天堂株式会社、2008年10月16日発売、第10頁から第11頁
【発明の概要】
【発明が解決しようとする課題】
【0004】
上記の技術においては、入力装置の所定の方向への動きがあった際に、ギターであれば1ストローク分、打楽器であれば1打分の演奏を行っている。すなわち、入力装置の所定方向への動きの検知を、ギターを1ストローク分の演奏(操作)や、打楽器を1打分の演奏(操作)を開始するタイミングを計るために用いている。これは、ボタンによる入力を検知することで、上記のような操作の開始タイミングを計ることと大差はなく、変化のある動きに基づいた、きめ細かい演奏操作を行うことができなかった。
【0005】
それ故に、本発明の目的は、入力装置自体を動かす操作によって、より細やかな操作が可能な情報処理プログラム等を提供することである。
【課題を解決するための手段】
【0006】
上記目的を達成するために、本発明は以下のような構成を採用した。
【0007】
本発明にかかる情報処理プログラムは、加速度センサおよび角速度センサを備えた入力装置からの入力に基づいて処理を行う情報処理装置のコンピュータによって実行される情報処理プログラムであって、コンピュータを、合成速度設定手段と処理手段として機能させる。合成速度設定手段は、加速度センサから出力される加速度データおよび角速度センサから出力される角速度データに基づき、入力装置の動きに基づいた速度を示す合成速度を設定する。処理手段は、合成速度設定手段で設定された合成速度に基づいて所定の処理を実行する。
【0008】
上記構成により、プレイヤにより動かされた入力装置の動きに応じて所定の処理が実行され、より細やかな操作が可能となる。
【0009】
他の構成例として、合成速度設定手段は、角速度データで示される角速度の大きさに応じて、加速度データを合成速度に反映させる割合を変化させて合成速度を設定してもよい。
【0010】
上記構成例によれば、入力装置の動かし方が角速度の小さい動かし方である場合でも、加速度を補完的に用いることで、入力装置の動きに応じた合成速度を設定することができる。
【0011】
更に他の構成例として、合成速度設定手段は、角速度データが小さいときほど加速度データの反映度が大きくなるように合成速度を設定してもよい。
【0012】
上記構成例によれば、例えば平行移動のような、入力装置の動かし方が角速度の小さい動かし方である場合でも、入力装置の動きに応じた合成速度を設定することができる。
【0013】
更に他の構成例として、情報処理プログラムは、再生の対象となる音楽データを記憶する音楽データ記憶手段としてコンピュータを更に機能させ、処理手段は、合成速度設定手段で設定された合成速度に基づいて音楽データを再生する再生制御手段を含んでいても良い。
【0014】
上記構成により、プレイヤにより動かされた入力装置の動きに応じて音楽の再生速度を変化させることができ、例えば弦楽器を演奏するような操作をプレイヤに行わせるような情報処理において、プレイヤに細やかな演奏操作を提供することができる。
【0015】
更に他の構成例として、情報処理プログラムは、加速度データおよび角速度データに基づいて、音楽データにおける再生開始位置を設定する再生開始位置設定手段としてコンピュータを更に機能させ、再生制御手段は、設定された再生開始位置から音楽データの再生を開始してもよい。
【0016】
上記構成例によれば、入力装置の動きに応じて、音楽データの再生開始位置を決めることができ、細やかな演奏操作が可能となる。
【0017】
更に他の構成例として、再生開始位置設定手段は、音楽データの始端あるいは終端のいずれか一方を再生開始位置として設定してもよい。
【0018】
上記構成例によれば、例えば、ハープのような楽器を演奏操作させる場合に、ハープのいずれかの端から演奏を開始させることができる。
【0019】
更に他の構成例として、再生開始位置設定手段は、合成速度に基づき、再生開始位置を設定してもよい。
【0020】
上記構成例によれば、入力装置の動きに応じて、音楽データの再生開始位置を決めることができ、細やかな演奏操作が可能となる。
【0021】
更に他の構成例として、情報処理プログラムは、加速度データおよび角速度データに基づいて、音楽データの再生方向を設定する再生方向設定手段としてコンピュータを更に機能させ、再生制御手段は、再生方向設定手段で設定された再生方向に沿って音楽データを再生してもよい。
【0022】
上記構成例によれば、音楽データの再生方向(順方向あるいは逆方向)を入力装置の動きに応じて変化させることができ、細やかな演奏操作が可能となる。
【0023】
更に他の構成例として、再生制御手段は、合成速度に基づき、音楽データを再生する再生速度を設定する再生速度設定手段を含んでいてもよい。
【0024】
上記構成例によれば、入力装置を動かす速度に応じて再生速度を変更できるため、楽器を演奏させるような操作をユーザに行わせる際に、細やかな操作を可能とさせる。
【0025】
更に他の構成例として、合成速度設定手段は、合成速度を繰り返し設定し、再生速度設定手段は、合成速度に基づき、再生速度を繰り返し設定してもよい。
【0026】
上記構成例によれば、音楽データの再生中であっても、入力装置を動かす速度に応じて再生速度を変更できる。
【0027】
更に他の構成例として、再生速度設定手段は、合成速度に基づき設定される再生速度が速くなる場合にのみ再生速度の設定を行ってもよい。
【0028】
上記構成例によれば、再生される音の間隔がばらついて聞こえることによってプレイヤが演奏の気持ちよさを損なってしまうことを防ぐことができ、プレイヤに気持ちよい演奏操作を楽しませることができる。
【0029】
更に他の構成例として、情報処理プログラムは、加速度データおよび角速度データに基づいて、再生中の音楽データの再生を停止するか否かを判定する再生停止判定手段として更に機能させ、再生制御手段は、再生停止判定手段が再生を停止すると判定したとき、加速度データおよび角速度データに基づいて音楽データ上の再生停止位置を決定し、当該決定した位置で再生を停止するようにしてもよい。
【0030】
上記構成例によれば、例えばハープを演奏する操作を行わせる場合で、プレイヤが勢い良く入力装置を振ったようなとき、振り操作の慣性に応じて一連の音階を鳴らすことができ、気持ちよく演奏操作を楽しませることができる。
【0031】
更に他の構成例として、情報処理プログラムは、音楽の再生のための所定の条件が満たされたか否かを判定する再生条件判定手段としてコンピュータを更に機能させ、再生制御手段は、再生条件判定手段で所定の条件が満たされていると判定されている間に音楽データの再生を行うようにしてもよい。
【0032】
上記構成例によれば、例えば低速で入力装置を動かした場合に不必要に音を鳴らしてしまうことを防止することができる。
【0033】
更に他の構成例として、入力装置はさらに所定の入力部を備え、再生条件判定手段は、入力部に対して入力があったか否かを判定し、再生制御手段は、再生条件判定手段が入力部に対して入力があると判定している間に音楽データの再生を行うようにしてもよい。
【0034】
上記構成例によれば、例えば所定のボタンを押さなければ音が再生されないようにすることができ、不必要に音が鳴ってしまうことを防止することができる。
【0035】
更に他の構成例として、音楽データは、所定の音が等間隔に配置されている楽譜を示すデータであってもよい。
【0036】
上記構成例によれば、例えばハープやギター等の弦楽器(等間隔に弦が配置されている)を模した演奏操作をプレイヤに提供することができる。
【発明の効果】
【0037】
本発明によれば、例えば弦楽器を演奏するような操作をプレイヤに行わせるような情報処理において、プレイヤに細やかな操作を提供することができる。
【図面の簡単な説明】
【0038】
【図1】ゲームシステム1の外観図
【図2】ゲーム装置3の構成を示すブロック図
【図3】コントローラ7の外観構成を示す斜視図
【図4】コントローラ7の構成を示すブロック図
【図5】ゲーム画像の一例
【図6】演奏操作を行う時のプレイヤの姿勢とコントローラ7の持ち方の一例
【図7】ハープに対応する楽譜の一例
【図8】コントローラ7の動かし方を説明するための図
【図9】コントローラ7の動かし方を説明するための図
【図10】ゲーム装置3の外部メインメモリ12のメモリマップを示す図
【図11】再生開始位置および再生中位置の概念を説明するための図
【図12】演奏操作検出処理の詳細を示すフローチャート
【図13】合成速度・振り方向算出処理の詳細を示すフローチャート
【図14】再生開始判定処理の詳細を示すフローチャート
【図15】再生開始位置更新処理の詳細を示すフローチャート
【図16】楽譜再生中処理の詳細を示すフローチャート
【図17】逆方向再生開始判定処理の詳細を示すフローチャート
【発明を実施するための形態】
【0039】
以下、本発明の実施の形態について、図面を参照して説明する。
【0040】
[ゲームシステムの全体構成]
図1を参照して、本発明の一実施形態に係る情報処理装置の一例であるゲーム装置を含むゲームシステム1について説明する。図1は、ゲームシステム1の外観図である。以下、据置型のゲーム装置を一例にして、本実施形態のゲーム装置およびゲームプログラムについて説明する。図1において、ゲームシステム1は、テレビジョン受像器(以下、単に「テレビ」と記載する)2、ゲーム装置3、光ディスク4、およびコントローラ7を含む。本システムは、コントローラ7を用いたゲーム操作に基づいてゲーム装置3でゲーム処理を実行するものである。
【0041】
ゲーム装置3には、当該ゲーム装置3に対して交換可能に用いられる情報記憶媒体の一例である光ディスク4が脱着可能に挿入される。光ディスク4には、ゲーム装置3において実行されるためのゲームプログラムが記憶されている。ゲーム装置3の前面には光ディスク4の挿入口が設けられている。ゲーム装置3は、挿入口に挿入された光ディスク4に記憶されているゲームプログラムを読み出して実行することによってゲーム処理を実行する。
【0042】
ゲーム装置3には、表示装置の一例であるテレビ2が接続コードを介して接続される。テレビ2は、ゲーム装置3において実行されるゲーム処理の結果得られるゲーム画像を表示する。
【0043】
コントローラ7は、自機に対して行われた操作の内容を示す操作データをゲーム装置3に与えるものである。本実施形態では、コントローラ7とゲーム装置3とは無線通信によって接続される。本実施形態では、コントローラ7とゲーム装置3との間の無線通信には例えばBluetooth(ブルートゥース)(登録商標)の技術が用いられる。なお、他の実施形態においてはコントローラ7とゲーム装置3とは有線で接続されてもよい。
【0044】
[ゲーム装置3の内部構成]
次に、図2を参照して、ゲーム装置3の内部構成について説明する。図2は、ゲーム装置3の構成を示すブロック図である。ゲーム装置3は、CPU10、システムLSI11、外部メインメモリ12、ROM/RTC13、ディスクドライブ14、およびAV−IC15等を有する。
【0045】
CPU10は、光ディスク4に記憶されたゲームプログラムを実行することによってゲーム処理を実行するものであり、ゲームプロセッサとして機能する。CPU10は、システムLSI11に接続される。システムLSI11には、CPU10の他、外部メインメモリ12、ROM/RTC13、ディスクドライブ14およびAV−IC15が接続される。システムLSI11は、それに接続される各構成要素間のデータ転送の制御、表示すべき画像の生成、外部装置からのデータの取得等の処理を行う。システムLSI11の内部構成については後述する。揮発性の外部メインメモリ12は、光ディスク4から読み出されたゲームプログラムや、フラッシュメモリ17から読み出されたゲームプログラム等のプログラムを記憶したり、各種データを記憶したりするものであり、CPU10のワーク領域やバッファ領域として用いられる。ROM/RTC13は、ゲーム装置3の起動用のプログラムが組み込まれるROM(いわゆるブートROM)と、時間をカウントするクロック回路(RTC:Real Time Clock)とを有する。ディスクドライブ14は、光ディスク4からプログラムデータやテクスチャデータ等を読み出し、後述する内部メインメモリ11eまたは外部メインメモリ12に読み出したデータを書き込む。
【0046】
また、システムLSI11には、入出力プロセッサ(I/Oプロセッサ)11a、GPU(Graphics Processor Unit)11b、DSP(Digital Signal Processor)11c、VRAM11d、および内部メインメモリ11eが設けられる。図示は省略するが、これらの構成要素11a〜11eは内部バスによって互いに接続される。
【0047】
GPU11bは、描画手段の一部を形成し、CPU10からのグラフィクスコマンド(作画命令)に従って画像を生成する。VRAM11dは、GPU11bがグラフィクスコマンドを実行するために必要なデータ(ポリゴンデータやテクスチャデータ等のデータ)を記憶する。画像が生成される際には、GPU11bは、VRAM11dに記憶されたデータを用いて画像データを作成する。
【0048】
DSP11cは、オーディオプロセッサとして機能し、内部メインメモリ11eや外部メインメモリ12に記憶されるサウンドデータや音波形(音色)データを用いて、音声データを生成する。
【0049】
上述のように生成された画像データおよび音声データは、AV−IC15によって読み出される。AV−IC15は、読み出した画像データをAVコネクタ16を介してテレビ2に出力するとともに、読み出した音声データを、テレビ2に内蔵されるスピーカ2aに出力する。これによって、画像がテレビ2に表示されるとともに音がスピーカ2aから出力される。
【0050】
入出力プロセッサ11aは、それに接続される構成要素との間でデータの送受信を実行したり、外部装置からのデータのダウンロードを実行したりする。入出力プロセッサ11aは、フラッシュメモリ17、無線通信モジュール18、無線コントローラモジュール19、拡張コネクタ20、およびメモリカード用コネクタ21に接続される。無線通信モジュール18にはアンテナ22が接続され、無線コントローラモジュール19にはアンテナ23が接続される。
【0051】
入出力プロセッサ11aは、無線通信モジュール18およびアンテナ22を介してネットワークに接続し、ネットワークに接続される他のゲーム装置や各種サーバと通信することができる。入出力プロセッサ11aは、定期的にフラッシュメモリ17にアクセスし、ネットワークへ送信する必要があるデータの有無を検出し、当該データが有る場合には、無線通信モジュール18およびアンテナ22を介してネットワークに送信する。また、入出力プロセッサ11aは、他のゲーム装置から送信されてくるデータやダウンロードサーバからダウンロードしたデータを、ネットワーク、アンテナ22および無線通信モジュール18を介して受信し、受信したデータをフラッシュメモリ17に記憶する。CPU10はゲームプログラムを実行することにより、フラッシュメモリ17に記憶されたデータを読み出してゲームプログラムで利用する。フラッシュメモリ17には、ゲーム装置3と他のゲーム装置や各種サーバとの間で送受信されるデータの他、ゲーム装置3を利用してプレイしたゲームのセーブデータ(ゲームの結果データまたは途中データ)が記憶されてもよい。
【0052】
また、入出力プロセッサ11aは、コントローラ5から送信される操作データをアンテナ23および無線コントローラモジュール19を介して受信し、内部メインメモリ11eまたは外部メインメモリ12のバッファ領域に記憶(一時記憶)する。
【0053】
さらに、入出力プロセッサ11aには、拡張コネクタ20およびメモリカード用コネクタ21が接続される。拡張コネクタ20は、USBやSCSIのようなインターフェースのためのコネクタであり、外部記憶媒体のようなメディアを接続したり、他のコントローラのような周辺機器を接続したり、有線の通信用コネクタを接続することによって無線通信モジュール18に替えてネットワークとの通信を行ったりすることができる。メモリカード用コネクタ21は、メモリカードのような外部記憶媒体を接続するためのコネクタである。例えば、入出力プロセッサ11aは、拡張コネクタ20やメモリカード用コネクタ21を介して外部記憶媒体にアクセスし、外部記憶媒体にデータを保存したり、外部記憶媒体からデータを読み出したりすることができる。
【0054】
ゲーム装置3には、電源ボタン24、リセットボタン25、およびイジェクトボタン26が設けられる。電源ボタン24およびリセットボタン25は、システムLSI11に接続される。電源ボタン24がオンされると、ゲーム装置3の各構成要素に対して、図示しないACアダプタを経て電源が供給される。リセットボタン25が押されると、システムLSI11は、ゲーム装置3の起動プログラムを再起動する。イジェクトボタン26は、ディスクドライブ14に接続される。イジェクトボタン26が押されると、ディスクドライブ14から光ディスク4が排出される。
【0055】
[コントローラ7の構成]
次に、図3を参照して、コントローラ7について説明する。図3は、コントローラ7の外観構成を示す斜視図である。図3において、コントローラ7は、例えばプラスチック成型によって形成されたハウジング31を有している。ハウジング31は、その前後方向(図3に示すZ軸方向)を長手方向とした略直方体形状を有しており、全体として大人や子供の片手で把持可能な大きさである。プレイヤは、コントローラ7に設けられたボタンを押下すること、および、コントローラ7自体を動かしてその位置や姿勢を変えることによってゲーム操作を行うことができる。
【0056】
ハウジング71には、複数の操作ボタンが設けられる。図3に示すように、ハウジング71の上面には、十字ボタン72a、1番ボタン72b、2番ボタン72c、Aボタン72d、マイナスボタン72e、ホームボタン72f、プラスボタン72g、および電源ボタン72hが設けられる。また、ハウジング71の下面には凹部が形成されており、当該凹部の後面側傾斜面にはBボタン72iが設けられる(図示は省略)。これらの各操作ボタン72a〜72iには、ゲーム装置3が実行するゲームプログラムに応じた機能が適宜割り当てられる。また、電源ボタン72hは遠隔からゲーム装置3本体の電源をオン/オフするためのものである。
【0057】
ハウジング71の後面にはコネクタ73が設けられている。コネクタ73は、コントローラ7に他の機器を接続するために利用される。
【0058】
図4は、コントローラ7の構成を示すブロック図である。コントローラ7は、操作部72(各操作ボタン72a〜72i)、通信部75、加速度センサ701、および角速度センサ702を備えている。コントローラ7は、自機に対して行われた操作内容を示すデータを操作データとしてゲーム装置3へ送信するものである。
【0059】
操作部72は、上述した各操作ボタン72a〜72iを含み、各操作ボタン72a〜72iに対する入力状態(各操作ボタン72a〜72iが押下されたか否か)を示す操作ボタンデータを通信部75のマイコン751へ出力する。
【0060】
通信部75は、マイコン751、メモリ752、無線モジュール753、およびアンテナ754を含んでいる。マイコン751は、処理を行う際にメモリ752を記憶領域として用いながら、マイコン751が取得したデータをゲーム装置3へ無線送信する無線モジュール753を制御する。
【0061】
加速度センサ701は、コントローラ7の加速度(重力加速度を含む)を検出する。すなわち、コントローラ7に加わる力(重力を含む)を検出する。加速度センサ701は、当該加速度センサ701の検出部に加わっている加速度のうち、センシング軸方向に沿った直線方向の加速度(直線加速度)の値を検出する。例えば、2軸以上の多軸加速度センサの場合には、加速度センサの検出部に加わっている加速度として、各軸に沿った成分の加速度をそれぞれ検出する。なお、加速度センサ701は、例えば静電容量式の加速度センサであるとするが、他の方式の加速度センサを用いるようにしてもよい。
【0062】
本実施形態では、加速度センサ701は、コントローラ7を基準とした上下方向(図3に示すY軸方向)、左右方向(図3に示すX軸方向)および前後方向(図3に示すZ軸方向)の3軸方向に関してそれぞれ直線加速度を検出する。加速度センサ701は、各軸に沿った直線方向に関する加速度を検出するものであるため、加速度センサ701からの出力は3軸それぞれの直線加速度の値を表すものとなる。すなわち、検出された加速度は、コントローラ7を基準に設定されるXYZ座標系(コントローラ座標系)における3次元のベクトル(ax,ay,az)として表される。以下では、加速度センサ701によって検出される3軸に関する各加速度値を各成分とするベクトルを加速度ベクトルと呼ぶ。
【0063】
加速度センサ701が検出した加速度を示すデータ(加速度データ)は、通信部75(マイコン751)へ出力される。なお、加速度センサ701が検出した加速度は、コントローラ7自体の向き(傾斜角度)や動きに対応して変化するので、ゲーム装置3は加速度データを用いてコントローラ7の向きや動きを算出することができる。
【0064】
角速度センサ702は、3軸(本実施形態では、XYZ軸)周りの角速度を検出する。角速度センサ702で検出された角速度を示すデータは、マイコン751に出力される。したがって、マイコン751には、XYZ軸の3軸回りの角度速度を示すデータが入力されることになる。マイコン751は、上記3軸回りの角速度を示すデータを角速度データとしてコントローラ7へ送信する。
【0065】
また、本実施形態では、角速度センサ702が角速度を検出する3つの軸は、加速度センサ701が加速度を検出する3つの軸(XYZ軸)と一致するように設定される。コントローラ7の姿勢算出のための処理における計算処理を容易にするためである。ただし、他の実施形態においては、角速度センサ702が角速度を検出する3つの軸と、加速度センサ701が加速度を検出する3つの軸とは一致しなくてもよい。
【0066】
[ゲーム装置3における演奏処理の概要]
以下、ゲーム装置3において実行される音楽再生処理(演奏処理)の概要について説明する。
【0067】
本実施形態で想定するゲームは、コントローラ7自体を動かすことで仮想空間内のプレイヤオブジェクトを操作するゲームである。そして、本実施形態で説明する処理は、プレイヤオブジェクトにハープを演奏する動作を行わせ、この動作に合わせて音楽を再生する処理である(以下では単に演奏処理と呼ぶ)。
【0068】
図5は、プレイヤオブジェクトがハープを演奏する場合のゲーム画像の一例である。図5に示すゲーム画像においては、プレイヤオブジェクト101がハープ102を持っている。なお、本実施形態では、当該ハープ102の弦は12本あり、12音を鳴らすことが可能となっている。
【0069】
次に、上記プレイヤオブジェクト101がハープ102を演奏するときの操作について説明する。まず、ゲーム内の所定の場面で、プレイヤオブジェクト101がハープ102を構えていない状態において十字ボタン72aの”上”を押すと、上記図5のように、プレイヤオブジェクト101がハープ102を左腕で構えた状態となる。この状態では、プレイヤオブジェクト101の右手はハープ102の弦の位置にある。そして、プレイヤは、例えば、プレイヤオブジェクト101と同じような姿勢(ハープ102を左腕で構えているような姿勢)をとる(後述の図6)。そして、プレイヤは、Aボタン72dを押しながらコントローラ7を把持した右手を動かしてハープの弦をつま弾くような動作を(コントローラ7を振る動作)行う。これに応じて、プレイヤオブジェクト101の右腕がハープ102の弦の部分内を移動し、ハープ102から音が発せられる。つまり、Aボタン72dを押しながらコントローラ7自体を動かすことで、ハープ102を演奏することができる(換言すれば、Aボタン72dを押していない状態でコントローラ7を動かしても、音は発せられない)。
【0070】
図6は、当該演奏操作を行う時のプレイヤの姿勢とコントローラ7の持ち方の一例を模式的に示した図であり、俯瞰図として示している。なお、図6では、プレイヤの前後方向をZ軸方向としている。本実施形態では、ハープを左手で構え、右手を動かして弦を弾くような姿勢を想定して説明する。プレイヤが実際に行う姿勢や動きのイメージとしては、図6で示すように、プレイヤが左手でハープを構えていることを想定して、左腕を自身の左方に向けて伸ばす。右手では、コントローラ7の上面が上(実空間の座標系のY軸正方向)を向くようにして、コントローラ7の略下半分を把持する。そして、コントローラ7の先端(ハウジング71前面)で、仮想的なハープを弾くような動きを行うことで、ハープの演奏を行うとする。
【0071】
次に、演奏操作によって発せられるハープ102の音に関して説明する。本実施形態では、上記のようにハープ102に12本の弦が設定されている。そして、例えば図7で示すような、12個の音符から構成される音列(音の並び)を示す楽譜のデータ(音楽データ)も予め定義されている。当該楽譜の各音符がハープの各弦に対応する音色に対応している(換言すれば、ハープ102の12本の弦の音列を音階として楽譜で示したものである)。なお、当該楽譜では、各音符の音価(その音符の音の長さ)は等しいものとする。
【0072】
本実施形態では、コントローラ7を動かすことで、図7に示す楽譜が再生される。このとき、コントローラ7の動きに応じて、楽譜の再生速度(テンポ)や再生位置、再生方向が制御され、結果的に、ハープ102の各弦に対応する音色が出力されることになる。例えば、図6のような姿勢でコントローラ7を左方向(プレイヤから遠ざかる方向)に動かす事で、図7の楽譜でいうと、左端の音から順番に各音符の音が再生されていく。つまり、図7のような楽譜が順方向に再生される。また、例えば図7の楽譜の左から3音目まで再生された時点でプレイヤが手を止めると、楽譜の再生が一時停止され、その位置から再度手を左方向に動かすと、4音目からの再生が再開される。また、逆に、例えば図6においてコントローラ7の位置が仮想的なハープの左端の位置にあると想定し、右方向(プレイヤに近づく方向)にコントローラ7を動かすと、図7の楽譜で言うと、右端の音から左端の音に向けて順番に各音符の音が再生されていく。つまり、図7の楽譜が逆方向に再生される。また、例えば、最初はコントローラ7を左方向に向けて動かし、図7の楽譜の左から5音目まで(順方向に)再生された時点でプレイヤが手を止めると、楽譜の再生が一時停止され、その位置から今度は右方向に手を動かす(手を戻す)と、5音目から1音目に向けての逆方向の再生が行われることになる。
【0073】
ここで、上記コントローラ7を動かす(振る)操作に関しては、大きく分けて以下のような2つの動かし方が考えられる。まず、図8に示すような、手首を支点とした、スナップをきかせたようなコントローラ7の動かし方がある。この場合、俯瞰すると図8のようにコントローラ7の動く軌跡は略扇状になるように見える。以下、この動きを第1の動かし方と呼ぶ。もう一つは、図9に示すような、コントローラ7を平行移動させるような動かし方であり、主に肩や肘を支点にして腕全体を動かすような動かし方である。以下では第2の動かし方と呼ぶ。また、実際の操作においては、プレイヤのクセ等によってこの2つの動作が混在するような動きになることが考えられる。例えば、ハープ102を右から左に向けて12音全部再生しようとした場合、あるプレイヤは最初から最後まで第2の動かし方で操作するが、別のプレイヤは、動かし初めは第1の動かし方で入り、その後第2の動かし方に変化するような操作を行うことが考えられる。また、更に別のプレイヤであれば、勢いをつけた第1の動かし方を行うことで12音全部を再生させようとすることも考えられる。
【0074】
ところで、上記の2つの動かし方によるコントローラ7の動き(姿勢)の検出手法を考えると、例えば、加速度センサ単独による検出、あるいは、角速度センサ単独での検出手法が考えられる。加速度センサだけを利用して検出する手法の場合は、ある程度大きな動きについては検出しやすいが、低速での動きは検出しにくいという特性がある。また、振っている方向が判別しにくいという特性もある。一方、角速度センサだけを利用して検出する手法の場合、例えば、コントローラ7のローカル座標系におけるY軸周りの角速度の変化に基づいて、コントローラ7の動きを検出するという手法が考えられる。このような認識手法は、上記第1の動かし方のような角度が変化するような動きについてはその動きや姿勢を検出しやすいという特性がある。その反面、上記第2の動かし方のような平行的な動かし方の場合、角速度の変化が少ないため、角速度データを使った検出手法は適さないという特性がある(この場合は、加速度データによる検出手法のほうが検出しやすい)。そこで、本実施形態では、加速度センサおよび角速度センサを併用することで、両者の特性を活用し、上記演奏操作にかかるコントローラ7の動きや姿勢、更には、動かしている速度や振っている方向等を検出する。
【0075】
また、本実施形態では、上記コントローラ7を動かす速度(振る速度)に応じて上記図7の楽譜の再生速度される速度を決定する処理が行われる。例えば、コントローラ7を動かす速度が速ければ、再生速度、すなわち楽譜のテンポが速いテンポに設定される。
【0076】
また、コントローラ7を振っている方向も検出し、上記楽譜の再生方向も設定する。すなわち、ハープの弦を左から右へ向けてつま弾く操作かその逆方向につま弾く操作かを判別し、その方向に応じて上記図7の楽譜の再生方法を順方向に再生するか逆方向に再生するかを決定する。
【0077】
詳細な説明は後述するが、上記のような演奏操作を実現するために、本実施形態では概ね以下のような処理が実行される。まず、角速度データと加速度データの双方を用いて「合成速度」を算出する。この「合成速度」は、コントローラ7を動かしている(振っている)速度を示すものであり、上記楽譜の再生速度決定の基になるデータとなる。当該「合成速度」が所定値以上であれば、楽譜の再生(すなわち演奏)が開始される。また、このときのコントローラの「振り方向」に応じて再生する方向も決定される。
【0078】
ここで、上記のように本実施形態ではAボタン72dが押されている間だけハープ102の音が再生される。Aボタン72dが押されていない状態でコントローラ7を動かしている間は、再生開始位置が適宜決定される。本実施形態では、再生開始位置は、ハープ102の左端か右端かのいずれかであるとする(つまり、図7の楽譜の右端か左端のいずれか)。また、本実施形態では、再生開始位置の初期値として上記図7の楽譜における左端の位置が設定されているとする。そして、例えばAボタン72dを押さずにコントローラ7を、上記図6における左方向に向けて動かしていくとする。そして、その移動量がハープ102の弦の部分の半分くらいまで移動したことを示せば、手をハープ102の左端に向けて移動させていると先読み判定し、再生開始位置を上記図7の楽譜における右端(図6における仮想ハープの左端)に設定するような処理も行っている。
【0079】
また、本実施形態では、コントローラ7をある程度勢い良く振った場合は、コントローラ7の移動量としては小さい場合でも図7の楽譜を最後まで再生するような処理も行われる。例えば、上記図7の楽譜で言うと、コントローラ7の動きにある程度の勢いが無かった場合であれば、コントローラの移動量としては1音目〜4音目相当の移動量しかなく、4音目で再生を止めるような移動量であっても、ある程度勢いを付けて振り抜くよう操作が行われていれば、同じ移動量でも1音目〜12音目まで順に全て再生するような処理も行っている。また、勢いの強さに応じて、最後まで再生するか、途中までの再生で終わるかを決定するような処理も実行される。例えば、上記のような、勢いが小さな動きだったならば4音目で再生を止めるような場合に、勢いの強さに応じて、1〜8音目まで再生して停止したり、1〜12音目まで再生して停止したりする。また、勢いの強さに応じて、このときの再生速度も適宜設定される。
【0080】
[ゲーム装置3における処理の詳細]
次に、ゲーム装置3によって実行される演奏処理の詳細を説明する。まず、ゲーム処理において用いられる各種データについて説明する。図10は、ゲーム装置3の外部メインメモリ12のメモリマップを示す図である。図10において、外部メインメモリ12は、プログラム記憶領域201およびデータ記憶領域204を含む。
【0081】
プログラム記憶領域201は、CPU10によって実行されるゲームプログラムを記憶し、このゲームプログラムは、演奏操作検出プログラム202と、再生処理プログラム203などによって構成される。演奏操作検出プログラム202は、上述したようなハープ102を演奏するための操作を検出するための処理を実行するプログラムである。
【0082】
再生処理プログラム203は、上記図7で示したような楽譜(後述の楽譜データ209)の再生処理を担当するプログラムである。当該プログラムは、上記演奏操作検出プログラム202から適宜呼び出される(各種処理の実行命令を受ける)プログラムであり、当該再生処理プログラム203による再生処理は、上記演奏操作検出プログラム202の処理と並列的に実行される。例えば、演奏操作検出プログラム202から「再生開始命令」が発行されると、再生処理において、後述の各種データを参照して楽譜の再生速度や再生開始位置、再生方向等が決定され、再生が開始される。また、楽譜の再生中は、現在再生中の位置が当該再生処理によって管理・制御される。更に、再生中は、後述の合成速度データ210が毎フレーム参照され、その内容に応じて再生速度も随時制御される。また、演奏操作検出プログラム202から「再生停止命令」が発行されると、再生を停止するための処理も実行される。
【0083】
データ記憶領域204には、操作データ205、楽譜データ209、合成速度データ210、振り方向データ211、再生開始位置データ212、再生中位置データ213、リセットカウンタ214、勢い値データ215などのデータが記憶されるとともに、その他ゲーム処理の必要な各種データも記憶される。例えば、現在楽譜を再生中であるか否かを示すフラグ等が適宜格納される。
【0084】
操作データ205は、コントローラ7からゲーム装置3へ送信されてくる操作データである。操作データ205には、角速度データ206、加速度データ207、および操作ボタンデータ208が含まれる。角速度データ206は、角速度センサ702によって検出された角速度を示すデータである。ここでは、角速度データ206は、図3に示すXYZの3軸回りのそれぞれの角速度を示す。また、加速度データ207は、加速度センサ701によって検出された加速度(加速度ベクトル)を示すデータである。ここでは、加速度データ207は、図3に示すXYZの3軸の方向に関する加速度を各成分とする3次元の加速度ベクトルを示す。操作ボタンデータ208は、各操作ボタン72a〜72iに対する入力状態を示すデータである。
【0085】
楽譜データ209は、上記図7で示したような楽譜に相当する音楽データである。すなわち、ハープ102の12本の弦に対応する音列が定義されたデータである。なお、上記図7は説明の便宜上楽譜の形式で示しているが、このような内容に相当する音楽データであれば、どのような形式でもよい。
【0086】
合成速度データ210は、上記演奏操作検出プログラム202で実行される処理において、上記角速度データ206および加速度データ207に基づいて算出されるデータである。また、上記再生処理プログラム203で実行される処理では、当該合成速度データ210に基づいて楽譜データ209の再生速度が決定される。
【0087】
振り方向データ211は、コントローラ7が振られている方向を示すためのデータであり、上記演奏操作検出プログラム202で実行される処理において適宜設定される。本実施形態では、当該データの内容としては「右方向」、「左方向」、「振っていない」のうちのいずれかを示す値が設定されるものとする。
【0088】
再生開始位置データ212は、上記再生処理プログラム203による再生処理において再生が開始される上記楽譜上の位置(楽譜データ209における位置)を示すデータである。再生中位置データ213は、再生処理によって現在再生されている上記楽譜上の位置(楽譜データ209における位置)を示すためのデータである。図11は、当該再生開始位置、および、再生中位置の概念を示す図である。図11における楽譜は上記図7と同じものであり、ハープ102の12本の弦に対応した12個の音符が示されている。再生開始位置は、どの音符から再生するかを示す位置、換言すれば、次に再生する音符を示す位置である。本実施形態では、図11で示されるように、計13の位置が設定されている。これは、順方向と逆方向の2つの再生方向があるためである。また、本実施形態では、再生開始位置の初期値として、図11の一番左端の位置が再生開始位置データ212に設定されている。そして、上記演奏操作検出プログラム202で実行される処理において、他の位置を示す内容(具体的には、一番右端か一番左端かのいずれか)に適宜更新される。また、再生処理プログラム203の処理による楽譜の再生処理中は、当該再生処理において再生開始位置データ212の内容は適宜更新されていく(この処理では、1番〜13番のいずれかに更新される)。例えば、再生処理において、図11の楽譜の一番左の音符が再生されれば、当該再生処理において、再生開始位置は初期値の「1番」の位置から「2番」の位置に更新される。また、再生中位置は、現在の再生位置を示す内容であり、再生処理プログラム203による再生処理においてリアルタイムに(毎フレーム)更新される。
【0089】
図10に戻り、リセットカウンタ214は、上記演奏操作兼出プログラムにおいて再生開始位置(右端か左端か)を決定する際に用いられる変数である。当該カウンタは、Aボタン72dを押していない状態でプレイヤがコントローラ7を動かしたときの移動量を示すものとして利用される。
【0090】
勢い値データ215は、コントローラ7をプレイヤが振ったときの、振りの勢い(振りの強さ)を示す値(以下、勢い値と呼ぶ)である。上記合成速度データ210に基づいて算出される。
【0091】
次に、ゲーム装置3において行われる演奏処理の詳細を、図12〜図17を用いて説明する。ゲーム装置3の電源が投入されると、ゲーム装置3のCPU10は、図示しないROMに記憶されている起動プログラムを実行し、これによって外部メインメモリ12等の各ユニットが初期化される。次に、光ディスク4等に記憶されたゲームプログラムが外部メインメモリ12に読み込まれ、CPU10によってゲームプログラムの実行が開始される。そして、当該ゲームの進行上、プレイヤが所定の操作を行うことで上記図5に示したような、プレイヤオブジェクト101がハープ102を構えたときに、以下で説明するような処理が実行される。
【0092】
なお、図12〜図17に示す処理は、単なる一例に過ぎず、同様の結果が得られるのであれば、各ステップの処理順序を入れ替えてもよい。また、変数の値や、判断ステップで利用される閾値も、単なる一例に過ぎず、必要に応じて他の値を採用してもよい。また、本実施形態では、図12〜図17に示すフローチャートの各ステップの処理をCPU10が実行するものとして説明するが、図12〜図17に示すフローチャートの一部のステップの処理を、CPU10以外のプロセッサや専用回路が実行するようにしてもよい。
【0093】
図12は、演奏操作検出処理の詳細を示すフローチャートである。この処理では、加速度データおよび角速度データに基づいてコントローラ7の動きを検出し、楽譜データ209の再生開始位置や再生速度や再生方向等を決定するための処理である。また、諸条件が満たされた際に、再生処理プログラム203に対して再生開始や再生停止の命令を発行する処理も行われる。また、当該フローチャートにかかる処理は、1フレーム毎に繰り返し実行される。
【0094】
図12において、まず、ステップS1で、CPU10は、合成速度・振り方向算出処理を実行する。図13は、当該合成速度・振り方向算出処理の詳細を示すフローチャートである。図13において、まず、ステップS21で、CPU10は、操作データ205を参照し、角速度データ206で示される値(ここではY軸回りの角速度)がマイナスの値であるか否かを判定する。本実施形態では、Y軸回り右方向への回転が検出された場合は正の値が、Y軸回り左方向への回転が検出された場合は負の値が角速度データ206(のY軸回りの角速度を示す値)に設定されているものとする。
【0095】
上記判定の結果、Y軸回りの角速度がマイナス値ではないときは(ステップS21でNO)、ステップS22で、CPU10は振り方向データ211に「右方向」を設定する。一方、マイナス値のときは(ステップS21でYES)、ステップS23で、CPU10は、角速度データに−1を積算することで正の値に変換したうえで、振り方向データ211に「左方向」を設定する。なお、正の値に変換するのは、後続の各種計算処理の便宜のためである。
【0096】
次に、ステップS24で、CPU10は、加速度データ207および角速度データ206を用いて合成速度を算出して合成速度データ210として外部メインメモリ12に格納する。ここで、本実施形態では、上記図6や図8、図9で示したような姿勢を想定し、加速度データ207はコントローラ7のローカル座標系におけるX軸方向にかかる加速度のみを利用するものとする。但し、他の実施形態では、他の軸にかかる加速度を利用しても良いし、例えば、X軸およびY軸のような複数の加速度を組み合わせて利用するようにしても良い。このステップS24の処理をより具体的に説明すると、CPU10は、以下の数式を用いて合成速度を算出する。まず、以下の式で補正角速度を算出する。
補正角速度=角速度×角速度用係数A ・・・式1
ここで、角速度用係数Aは、本実施形態では固定値が用いられる。
【0097】
次に、上記角速度が所定の閾値C以上であるか否かによって、以下のように加速度用係数Bが設定される。
(1)角速度が閾値C以上の場合
加速度用係数B=固定値 ・・・式2
(2)角速度が閾値Cより小さい場合
変数D=(1.0+閾値C)−角速度 ・・・式3
加速度用係数B=固定係数E×(変数D×変数D) ・・・式4
なお、上記式3および式4は、角速度が小さいほど加速度係数Bが大きくなるような式となっている。つまり、角速度が小さいほど、上記図9で示したような第2の動かし方(平行移動)に近い動きであると推測される。そのため、第2の動かし方に近いほど、合成速度における加速度の反映度を大きくしようとするものである。
【0098】
次に、以下の式で補正加速度が算出される。
補正加速度=加速度×加速度用係数B ・・・式5
そして、以下の式で合成速度Fが算出される。
合成速度F=補正角速度+補正加速度 ・・・式6
このように算出された合成速度Fが合成速度データ210として格納される(既に格納されている場合は更新される)。上述のように、上記第2の動かし方に近い動きのときほど、加速度の反映度を大きくして(相対的に角速度の反映度が小さくなる)合成速度Fが算出され、第1の動かし方に近いほど加速度の反映度を小さくして(相対的に角速度の反映度が大きくなる)合成速度Fが算出されることになる。以上で、合成速度・振り方向算出処理は終了する。
【0099】
図12に戻り、次に、ステップS2で、CPU10は、現在楽譜データ209を再生中の状態であるか否かを判定する。その結果、再生中の状態ときは(ステップS2でYES)、後述するステップS4の処理を実行する。一方、再生中の状態ではないときは(ステップS2でNO)、CPU10は、ステップS3の再生開始判定処理を実行する。
【0100】
図14は、ステップS3の再生開始判定処理の詳細を示すフローチャートである。まず、ステップS41で、CPU10は、操作データ205を参照し、Aボタン72dが押されているか否かを判定する。その結果、Aボタン72dが押されていないときは(ステップS41でNO)、当該再生開始判定処理は終了する。
【0101】
一方、Aボタン72dが押されているときは(ステップS41でYES)、続くステップS42で、CPU10は、合成速度データ210を参照し、合成速度Fが再生開始閾値より大きいか否かを判定する。当該再生開始閾値は予め設定されている閾値である。当該判定の結果、合成速度が再生開始閾値より大きいときは(ステップS42でYES)、ステップS43で、CPU10は、再生処理プログラム203に対して再生開始命令を発行する。これに応じて、再生処理プログラム203により再生処理において、楽譜データ209の再生が開始される。この際、当該再生処理では、再生開始位置データ212が参照され、再生を開始する楽譜上の位置が決定される。また、振り方向データ211も参照され、再生する方向(順方向あるいは逆方向)も決定される。更に、合成速度データ210も参照され、合成速度Fに基づいて楽譜データ209の再生速度も決定される。そして、このように決定された各要素に基づいて楽譜データ209の再生が開始されることになる。
【0102】
一方、合成速度が再生開始閾値より大きくないときは(ステップS42でNO)、上記ステップS43の処理はスキップされ、当該再生開始判定処理は終了する。
【0103】
図12に戻り、再生開始判定処理の次に、ステップS5で、CPU10は、再生開始判定処理の結果、楽譜データ209の再生が開始されたか否かを判定する。その結果、開始されていれば(ステップS5でYES)、当該演奏操作検出処理は終了する。一方、再生が開始されていないときは(ステップS5でNO)、CPU10は、ステップS6の再生開始位置更新処理を実行する。この処理は、再生開始位置をハープ102の右端か左端かのいずれかに決めるための処理である。
【0104】
図15は、ステップS6にかかる再生開始位置更新処理の詳細を示すフローチャートである。まず、ステップS51で、CPU10は、合成速度データ210を参照し、合成速度Fが振り判定閾値(その値は予め設定されている)よりも大きいか否かを判定する。当該判定の結果、合成速度Fが振り判定閾値よりも大きいときは(ステップS51でYES)、次に、ステップS52で、CPU10は、振り方向データ211を参照し、現在のフレームにおける振り方向が1フレーム前の処理における振り方向と同じであるか否かを判定する。例えば、1フレーム前の振り方向を示すデータを適宜外部メインメモリ12に格納・更新するようにしておき、当該データと比較することで当該判定が行われる。当該判定の結果、振り方向が1フレーム前と同じではないと判定されたときは(ステップS52でNO)、ステップS53で、CPU10はリセットカウンタ214の値を0クリアする。そして、再生開始位置更新処理を終了する。一方、振り方向が1フレーム前と同じ方向のときは(ステップS52でYES)、ステップS54で、CPU10は合成速度Fに応じた値をリセットカウンタ214に加算する。すなわち、(前回のフレームから)現在のフレームにおいてプレイヤがコントローラ7を動かした量(移動量)が加算されることになる。ここでは、合成速度Fが大きな値であるほど、リセットカウンタ214には大きな値が加算されるとする。
【0105】
次に、ステップS55で、CPU10は、リセットカウンタ214が、予め設定されている所定に閾値を越えたか否かを判定する。この閾値は、例えば、ハープ102の端から、ハープの中央付近までの距離を示すような値である。当該判定の結果、リセットカウンタ214が当該所定の閾値を越えたときは(ステップS55でYES)、ステップS56で、CPU10は、再生開始位置データ212に、現在の振り方向側の端の位置を設定する。図6および図11の例で言うと、コントローラ7の振り方向が(図6における)左方向であれば、図11の再生開始位置「13番」が再生開始位置データ212に設定される。また、振り方向が(図6における)右方向であれば、図11の再生開始位置「1番」が再生開始位置データ212に設定される。なお、現在の振り方向側の端の位置が既に設定済みの場合は、この処理は行わないようにしても良い。
【0106】
一方、リセットカウンタ214が上記所定の閾値を越えていないときは(ステップ55でNO)、上記ステップS56の処理はスキップされ、再生開始位置更新処理は終了する。
【0107】
一方、上記ステップS51の判定の結果、合成速度Fが振り判定閾値よりも大きくないときは(ステップS51でNO)、ステップS57で、CPU10は、リセットカウンタ214の値が0クリアされる。更に、ステップS58で、CPU10は、振り方向データ211に「振っていない」ことを示す値を設定する。そして、再生開始位置更新処理は終了する。
【0108】
図12に戻り、ステップS6の再生開始位置更新処理が終われば、CPU10は演奏操作検出処理を終了する。
【0109】
次に、上記ステップS2の判定の結果、楽譜再生中であるときの処理(ステップS4)について説明する。図16は、ステップS4の楽譜再生中処理の詳細を示すフローチャートである。図16において、まず、ステップS71で、CPU10は、合成速度データ210を参照し、合成速度Fに応じた勢い値を算出し、勢い値データ215として外部メインメモリ12に格納する(既に格納されている場合はその値を更新する)。ここで、勢い値とは、コントローラ7をプレイヤが振ったときの、その振りの勢いの強さを示す値である。例えば、プレイヤがコントローラ7を強く振った場合は、ゆっくるとコントローラ7が振られた場合に比べて、より大きな値が勢い値として算出されることになる。
【0110】
次に、ステップS72で、CPU10は、操作データ205を参照し、Aボタン72dが押されている状態か否かを判定する。その結果、Aボタン72dが押されていないときは(ステップS72でNO)、後述のステップS76に処理が進められる。一方、Aボタン72dが押されているときは(ステップS72でYES)、ステップS73で、CPU10は逆方向再生開始判定処理を実行する。この処理は、楽譜の再生中に、コントローラ7を振る方向が反転したか否かを判定し、反転した場合は楽譜の再生方向も逆方向に切り替えるための処理である。
【0111】
図17は、当該逆方向再生開始判定処理の詳細を示すフローチャートである。図17において、まず、ステップS91で、CPU10は、振り方向データ211を参照して、現在のフレームにかかる処理での振り方向が、1つ前のフレームにおける振り方向と逆方向であるか否かを判定する。その結果、逆方向ではないときは(ステップS91でNO)、当該逆方向再生開始判定処理は終了する。
【0112】
一方、逆方向のときは(ステップS91でYES)、ステップS92で、CPU10は、再生停止命令を再生処理プログラムに対して発行する。これに応じて、再生処理プログラム203による再生処理において、再生を停止するための処理が実行される。具体的には、現在再生している音符にかかる音色の再生は最後まで行うが、次に再生予定の音符の音色は鳴らさないような制御が行われる。
【0113】
次に、ステップS93で、CPU10は、再生開始判定処理を実行する。当該処理は、図12を用いて上述したステップS3と同じ処理であるため、説明は省略する。この処理が行われた結果、1つ前のフレームとは逆方向への再生処理が開始されることになる。なお、逆方向への再生が行われる場合は、現在再生している音符にかかる音色の再生も即時に停止されてから逆方向への再生が開始される。そして、当該逆方向再生開始判定処理は終了する。
【0114】
図16に戻り、ステップS73の次に、ステップS74で、CPU10は、上記逆方向再生開始判定処理の結果、1つ前のフレームでの再生方向とは逆方向への再生が開始されたか否かを判定する。その結果、逆方向への再生が開始されていたときは(ステップS74でYES)、CPU10は楽譜再生中処理を終了する。
【0115】
一方、逆方向への再生が開始されていない(つまり、再生方向の変化が発生していない)ときは(ステップS74でNO)、次に、ステップS75で、合成速度Fが停止判定閾値よりも小さいか否かが判定される。つまり、コントローラ7を動かすプレイヤの手が止まったか否か(演奏を止めたか否か)を判定する。当該判定の結果、合成速度Fが停止判定閾値よりも小さくない(演奏操作が継続している)ときは(ステップS75でNO)、CPU10は楽譜再生中処理を終了する。その結果、再生処理プログラム203による再生処理が継続されることになる。
【0116】
一方、合成速度Fが停止判定閾値よりも小さいときは(ステップS75でYES)、ステップS76で、CPU10は、楽譜データ209の再生を停止するための処理を実行する。具体的には、まず、CPU10は、振り方向データ211に「振っていない」ことを示す内容を設定する。更に、CPU10は、並列して再生処理を実行している再生処理に対して再生停止命令を発行する。これに応じて、再生処理においては再生を停止するための処理が実行される。このとき、再生処理においては、勢い値データ215が参照され、勢い値が所定の閾値を越えていれば、その勢い値に応じて、再生を停止する位置を決定する処理が実行される。例えば、勢いよくコントローラ7が振られたあとAボタン72dが押されていない状態になったようなときに、そのときの勢いに応じた慣性でハープ102の弦の何本かは鳴らしてから再生を停止するような処理が実行される。また、勢い値が所定の閾値を越えていないときは、現在再生している音符にかかる音色の再生は最後まで行うが、次に再生予定の音符の音色は鳴らさないような制御が行われる。また、再生を停止するまでの再生速度についても当該勢い値データ215に基づいて決定され、この再生速度に沿って再生制御が行われる。
【0117】
ステップS76の処理が終われば、楽譜再生中処理は終了する。以上で、本実施形態にかかる演奏処理の詳細な説明を終了する。
【0118】
このように、本実施形態では、加速度センサおよび角速度センサ双方からの出力データを利用してコントローラ7の動きを検出している。そして、コントローラ7の動きの内容(振り速度や振り方向等)に基づき、楽譜データの再生を制御している。これにより、コントローラ7の動きをより正確に反映して楽譜の再生処理を実行でき、楽器を演奏するゲーム等において、より細やかな演奏操作をプレイヤに提供できる。
【0119】
また、プレイヤがコントローラ7を勢い良く振ったときは、その振りの勢いに応じて、本来は(勢いが小さいときは)再生されない音列も再生するような制御を行っている。これにより、例えば手首のスナップをきかせてコントローラ7を小さく、しかし、勢い良く振ったような場合は、もし勢いが小さな動きであれば2〜3本分の弦の音しか再生されないような動きでも、全ての弦の音(つまり、楽譜データ209の全て)を再生することができ、プレイヤに気持ちよい演奏感を与えることが可能となる。
【0120】
なお、再生開始位置の設定に関し、上記実施形態では、再生開始位置としては、ハープ102の右端あるいは左端のいずれかに設定するような処理を行っていた(上記ステップS56)。これに限らず、上記ステップS56の処理においては、コントローラ7の振り方向に応じて(例えば図11の)再生開始位置を隣に一つずつずらしていくように処理しても良い。また、この場合は、再生開始位置をずらす毎にリセットカウンタ214を0クリアするように処理すればよい。
【0121】
また、上記実施形態では、Aボタン72dが押されている間だけ楽譜が再生(音色が出力)されるような処理としていた。これは、例えば、低速でコントローラ7を動かしたような場合に不必要に音が再生されることができる点で有利であるためであるが(換言すれば、非常に低速なコントローラ7の動きであっても再生開始が可能である)、これに限らず、Aボタン72d等の何らかのボタンが押されている、というような条件を用いずに処理しても良い。すなわち、プレイヤオブジェクト101がハープ102を構えて(図5参照)演奏可能な状態となれば、この状態が解除されるまでは、常にコントローラ7の動きに応じて上記のような再生処理を行うようにしても良い。
【0122】
また、上記のAボタン72dが押されている、という条件の代わりに、別の条件を再生されるための条件として利用してもよい。例えば、画面上にカウントダウンを表示し、カウントが0になったタイミングで再生可能な条件が満たされたと判定する処理にしてもよい。その他、ゲーム処理内における所定の条件(例えば、特定のエリアに侵入したときに再生可能、等)を利用しても良い。
【0123】
また、楽譜データに関して、上記実施形態では、ハープ102の弦に対応する音列をそのまま楽譜としたようなデータ(音階となるデータ)を利用していたが、必ずしもハープの弦に対応するような音列とする必要はない。例えば、演奏操作の違和感の少なさという観点では、楽譜上の1つの音符が1本の弦に対応付けられていることが好ましいが、例えば、1つの弦に対して数個の音符を対応付けた通常の楽曲(旋律)が再生されるようにしてもよい。この場合であっても、再生速度や再生方向、再生開始位置については上記の処理で同様に設定されるため、ある楽譜(に基づく楽曲)を再生する場合に、コントローラ7の動きに応じて多彩な演奏操作を行うことが可能となる。
【0124】
また、楽譜データ209を複数用意しておき、ハープ102を演奏する場面に応じて、利用する楽譜データ209を変えるようにしてもよい。また、演奏する楽器についても、ハープに限るものではなく、弦楽器全般についても本発明は適用可能である。更には、弦楽器等の楽器だけに限らず、上記のようなコントローラ7の動きに基づき所定の音楽データ(楽譜データ)を再生する処理が利用できる局面であれば、本発明は適用可能である。また、上記実施形態では、情報処理装置の一例としてゲーム装置を挙げ、音楽を再生(楽器を演奏)するような処理の場合を例として説明したが、このような音楽データの再生処理に限らず、コントローラ7の動きに基づき、例えば動画を再生するような処理についても本発明は適用可能であることは言うまでもない。
【0125】
更に、上記再生開始判定処理や再生開始位置更新処理、楽譜再生中処理に関して、それぞれの処理において、合成速度と所定の閾値とを比較する処理が含まれているが(ステップS42、S51,S75)。この判定処理に先だって、加速度データ単体と所定の閾値との比較処理、および角速度データ単体と所定の閾値との比較処理(の少なくとも一方もしくは両方)を実行するようにしてもよい。これは、例えば、再生開始判定処理を例にすると、プレイヤの手が止まっている状態(コントローラ7が動いていない状態)であるにもかかわらず、計算処理上の誤差等で上記ステップS42において合成速度Fが再生開始閾値より大きいと判定され、音が鳴ってしまうようなことを防ぐためである。つまり、合成速度を用いた判定処理の前に、加速度データ単体を利用して判定を行うことでコントローラ7の動きが発生しているのかを判定し、更に、角速度データ単体でも同様の判定を行うことで、コントローラ7が実際に動いているか否かをより正確に判別するものである。これにより、計算処理上の誤差等により、(特にコントローラ7の動きが小さいような場合に)コントローラ7の実際の動きと音の再生や停止制御が一致しないということを防ぐことが可能となる。
【0126】
また、上記再生処理プログラム203の処理内容に関して、上記実施形態では、楽譜の再生速度については、毎フレームの合成速度に応じて再生速度を変化させるようにしていたが、この他、再生速度が前より速くなる場合のみ再生速度を変化させるような制御を行っても良い。これは、再生速度が遅くなる場合も正確に反映させた場合、特にプレイヤがコントローラ7をゆっくり振っているときに、音の再生される間隔がバラバラになってしまい、気持ち良い演奏感が得られなくなる可能性があるためである。換言すれば、再生速度が速くなる場合のみ再生速度を変化させるような制御を行うことで、ハープの音ができるだけ一定間隔で再生されるようにし、音の再生間隔のバラつきがプレイヤにとって気にならないようにすることが可能となる。また、その他、このような音の再生間隔のバラツキを軽減する手法としては、例えば、直前数フレームの合成速度の値の平均を使用して再生速度を変化させるようにしてもよい。
【0127】
また、上記実施形態においては、コントローラ7の姿勢に基づいてハープ102を演奏するための一連の処理が単一の装置(ゲーム装置3)において実行される場合を説明したが、他の実施形態においては、上記一連の処理が複数の情報処理装置からなる情報処理システムにおいて実行されてもよい。例えば、端末側装置と、当該端末側装置とネットワークを介して通信可能なサーバ側装置とを含む情報処理システムにおいて、上記一連の処理のうちの一部の処理がサーバ側装置によって実行されてもよい。さらには、端末側装置と、当該端末側装置とネットワークを介して通信可能なサーバ側装置とを含む情報処理システムにおいて、上記一連の処理のうちの主要な処理がサーバ側装置によって実行され、当該端末側装置では一部の処理が実行されてもよい。また、上記情報処理システムにおいて、サーバ側のシステムは、複数の情報処理装置によって構成され、サーバ側で実行するべき処理を複数の情報処理装置が分担して実行してもよい。
【符号の説明】
【0128】
1 ゲームシステム
2 モニタ
2a スピーカ
3 ゲーム装置
4 光ディスク
7 コントローラ
10 CPU
11 システムLSI
11a 入出力プロセッサ
11b GPU
11c DSP
11d VRAM
11e 内部メインメモリ
12 外部メインメモリ
13 ROM/RTC
14 ディスクドライブ
15 AV−IC
16 AVコネクタ
17 フラッシュメモリ
18 無線通信モジュール
19 無線コントローラモジュール
20 拡張コネクタ
21 外部メモリカード用コネクタ
22 アンテナ
23 アンテナ
24 電源ボタン
25 リセットボタン
26 イジェクトボタン
71 ハウジング
72 操作部
73 コネクタ
75 通信部
701 加速度センサ
702 角速度センサ
751 マイコン
752 メモリ
753 無線モジュール
754 アンテナ

【特許請求の範囲】
【請求項1】
加速度センサおよび角速度センサを備えた入力装置からの入力に基づいて処理を行う情報処理装置のコンピュータによって実行される情報処理プログラムであって、
前記コンピュータを、
前記加速度センサから出力される加速度データおよび前記角速度センサから出力される角速度データに基づき、前記入力装置の動きに基づいた速度を示す合成速度を設定する合成速度設定手段と、
前記合成速度設定手段で設定された合成速度に基づいて所定の処理を行う処理手段として機能させる、情報処理プログラム。
【請求項2】
前記合成速度設定手段は、前記角速度データで示される角速度の大きさに応じて、前記加速度データを前記合成速度に反映させる割合を変化させて前記合成速度を設定する、請求項1に記載の情報処理プログラム。
【請求項3】
前記合成速度設定手段は、前記角速度データが小さいときほど前記加速度データの反映度が大きくなるように前記合成速度を設定する、請求項1または2に記載の情報処理プログラム。
【請求項4】
前記情報処理プログラムは、
再生の対象となる音楽データを記憶する音楽データ記憶手段として前記コンピュータを更に機能させ、
前記処理手段は、前記合成速度設定手段で設定された合成速度に基づいて前記音楽データを再生する再生制御手段を含む、請求項1乃至3のいずれかに記載の情報処理プログラム。
【請求項5】
前記情報処理プログラムは、前記加速度データおよび角速度データに基づいて、前記音楽データにおける再生開始位置を設定する再生開始位置設定手段として前記コンピュータを更に機能させ、
前記再生制御手段は、前記設定された再生開始位置から前記音楽データの再生を開始する、請求項4に記載の情報処理プログラム。
【請求項6】
前記再生開始位置設定手段は、前記音楽データの始端あるいは終端のいずれか一方を前記再生開始位置として設定する、請求項5に記載の情報処理プログラム。
【請求項7】
前記再生開始位置設定手段は、前記合成速度に基づき、前記再生開始位置を設定する、請求項5または6に記載の情報処理プログラム。
【請求項8】
前記情報処理プログラムは、前記加速度データおよび角速度データに基づいて、前記音楽データの再生方向を設定する再生方向設定手段として前記コンピュータを更に機能させ、
前記再生制御手段は、前記再生方向設定手段で設定された再生方向に沿って前記音楽データを再生する、請求項4乃至7のいずれかに記載の情報処理プログラム。
【請求項9】
前記再生制御手段は、前記合成速度に基づき、前記音楽データを再生する再生速度を設定する再生速度設定手段を含む、請求項4乃至8のいずれかに記載の情報処理プログラム。
【請求項10】
前記合成速度設定手段は、前記合成速度を繰り返し設定し、
前記再生速度設定手段は、前記繰り返し設定される合成速度に基づき、前記再生速度を繰り返し設定する、請求項9に記載の情報処理プログラム。
【請求項11】
前記再生速度設定手段は、前記合成速度に基づき設定される前記再生速度が速くなる場合にのみ前記再生速度の設定を行う、請求項10に記載の情報処理プログラム。
【請求項12】
前記情報処理プログラムは、前記加速度データおよび角速度データに基づいて、再生中の前記音楽データの再生を停止するか否かを判定する再生停止判定手段として更に機能させ、
前記再生制御手段は、前記再生停止判定手段が再生を停止すると判定したとき、前記加速度データおよび角速度データに基づいて前記音楽データ上の再生停止位置を決定し、当該決定した位置で再生を停止する、請求項4乃至11のいずれかに記載の情報処理プログラム。
【請求項13】
前記情報処理プログラムは、音楽の再生のための所定の条件が満たされたか否かを判定する再生条件判定手段として前記コンピュータを更に機能させ、
前記再生制御手段は、前記再生条件判定手段で前記所定の条件が満たされていると判定されている間に前記音楽データの再生を行う、請求項4乃至12のいずれかに記載の情報処理プログラム。
【請求項14】
前記入力装置はさらに所定の入力部を備え、
前記再生条件判定手段は、前記入力部に対して入力があったか否かを判定し、
前記再生制御手段は、前記再生条件判定手段が前記入力部に対して入力があると判定している間に前記音楽データの再生を行う、請求項13に記載の音楽演奏プログラム。
【請求項15】
前記音楽データは、所定の音が等間隔に配置されている楽譜を示すデータである、請求項4乃至14のいずれかに記載の情報処理プログラム。
【請求項16】
加速度センサおよび角速度センサを備えた入力装置からの入力に基づいて音楽を再生する情報処理装置であって、
前記加速度センサから出力される加速度データおよび前記角速度センサから出力される角速度データに基づき、前記入力装置の動きに基づいた速度を示す合成速度を設定する合成速度設定手段と、
前記合成速度設定手段で設定された合成速度に基づいて所定の処理を行う処理手段とを備える、情報処理装置。
【請求項17】
加速度センサおよび角速度センサを備えた入力装置からの入力に基づいて音楽を再生する情報処理システムであって、
前記加速度センサから出力される加速度データおよび前記角速度センサから出力される角速度データに基づき、前記入力装置の動きに基づいた速度を示す合成速度を設定する合成速度設定手段と、
前記合成速度設定手段で設定された合成速度に基づいて所定の処理を行う処理手段とを備える、情報処理システム。
【請求項18】
加速度センサおよび角速度センサを備えた入力装置からの入力に基づいて音楽を再生する情報処理装置または情報処理システムを制御する情報処理制御方法であって、
前記加速度センサから出力される加速度データおよび前記角速度センサから出力される角速度データに基づき、前記入力装置の動きに基づいた速度を示す合成速度を設定する合成速度設定ステップと、
前記合成速度設定ステップで設定された合成速度に基づいて所定の処理を前記情報処理装置に行わせる処理ステップとを備える、情報処理制御方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate


【公開番号】特開2013−101570(P2013−101570A)
【公開日】平成25年5月23日(2013.5.23)
【国際特許分類】
【出願番号】特願2011−245967(P2011−245967)
【出願日】平成23年11月9日(2011.11.9)
【出願人】(000233778)任天堂株式会社 (1,115)
【Fターム(参考)】