音出力プログラムおよび音出力装置
【構成】 ビデオゲーム装置12はCPU36を含み、CPU36はコントローラ22から送信される入力情報データに含まれる加速度データを検出する。加速度データは、コントローラ22に対して設定される3軸方向の加速度についての数値データである。たとえば、コントローラ22の右方向または左方向の振り動作が3軸の内の1軸(x軸)についての加速度に基づいて判定される。また、コントローラ22の下方向の振り動作および振り終わりのコントローラ22の姿勢がその1軸以外の2軸(y軸,z軸)についての加速度に基づいて判定される。したがって、たとえば、ゲーム画面に表示される楽器の演奏が個別に指示される。
【効果】 加速度を検出するだけなので、低コストで正確に振り方向を判定することができる。
【効果】 加速度を検出するだけなので、低コストで正確に振り方向を判定することができる。
【発明の詳細な説明】
【技術分野】
【0001】
この発明は音出力プログラムおよび音出力装置に関し、特にたとえば、加速度センサを含む操作手段の振り動作に応じて楽器の音を出力する、音出力プログラムおよび音出力装置に関する。
【背景技術】
【0002】
この種の背景技術の一例が特許文献1に開示される。この特許文献1によれば、ドラム・スティックの一端部に3つの加速度センサが取り付けられ、X,Y,Zの3方向の加速度が検出される。また、各方向に対応して異なる楽器の音が割り当てられる。したがって、加速度センサの出力から振る動作を検出して、対応する楽器の音を出力することができる。
【0003】
また、背景技術の他の例が特許文献2に開示される。この特許文献2によれば、スティックの把持部に角度検出器が組み込まれる。この角度検出器を構成する複数の水銀スイッチのオン/オフ状態に基づいて角度検出器の地面に対する角度、すなわちスティックの振り上げ角度を検出し、この検出結果に対応した音高データを楽音信号形成回路へ出力する。
【特許文献1】特開昭63−132295号
【特許文献2】特開昭63−192096号
【発明の開示】
【発明が解決しようとする課題】
【0004】
しかし、特許文献1に記載の技術では、1つの振り方向に対して、1つの音色しか出力することができないため、スティックのような操作具の振り方が音色の出力に関連付けされることがない。このため、操作が単調になる恐れがある。
【0005】
また、特許技術文献2に記載の技術では、スティックの振り上げ角度(スティックの傾き)を水銀スイッチで検出するため、コストと、水銀の使用による危険性とを考慮すると、現実的な技術とは言えない。
【0006】
それゆえに、この発明の主たる目的は、新規な、音出力プログラムおよび音出力装置を提供することである。
【0007】
また、この発明の他の目的は、ユーザの振り動作に応じて出力される音を楽しむことができる、音出力プログラムおよび音出力装置を提供することである。
【課題を解決するための手段】
【0008】
本発明は、上記の課題を解決するために、以下の構成を採用した。なお、括弧内の参照符号および補足説明等は、本発明の理解を助けるために後述する実施の形態との対応関係を示したものであって、本発明を何ら限定するものではない。
【0009】
請求項1の発明は、加速度センサを含む操作手段を備える音出力装置の音出力プログラムであって、音出力装置のプロセサを、振り動作検出手段、振り動作終了判断手段、姿勢検出手段、および音出力手段として機能させる。振り動作検出手段は、加速度センサの出力に基づいて操作手段の振り動作を検出する。動作終了判断手段は、振り動作検出手段によって振り動作が検出された後に、加速度センサの出力に基づいて当該振り動作が終了したかどうかを判断する。姿勢検出手段は、振り動作終了判断手段によって振り動作が終了したと判断したとき、加速度センサの出力に基づいて操作手段の姿勢を検出する。音出力手段は、姿勢検出手段の検出結果に応じて、記憶手段に記憶された音色データに基づく音を出力する。
【0010】
請求項1の発明では、音出力プログラムは、加速度センサ(74)を含む操作手段(22)を備える音出力装置(12)に組み込まれる。この音出力プログラムは、音出力装置のプロセサ(36)を、振り動作検出手段(36,S23,S43,S61,S63,S65,S67,S69,S95,S99)、振り動作終了判断手段(36,S27,S47,S69,S105)、姿勢検出手段(36,S71)および音出力手段(36,S29,S49,S73,S75,S109,S111)として機能させる。振り動作検出手段は、加速度センサの出力に基づいて操作手段の振り動作を検出する。たとえば、横方向(左右)の振り動作または縦方向(上下)の振り動作が検出される。動作終了判断手段は、振り動作検出手段によって振り動作が検出された後に、加速度センサの出力に基づいて当該振り動作が終了したかどうを判断する。たとえば、加速度センサからの出力の変化を検出し、変化の方向が変わらない場合には、振り動作は終了していないと判断する。一方、加速度センサの出力の変化が無ければ、つまり加速度センサの出力が一定値またはほぼ一定値となれば、振り動作は終了したと判断する。姿勢検出手段は、振り動作終了判断手段によって振り動作が終了したと判断したとき、加速度センサの出力に基づいて操作手段の姿勢を検出する。たとえば、振り動作における操作手段の位置(高さ)を検出する。音出力手段は、姿勢検出手段の検出結果に応じて、記憶手段に記憶された音色データに基づく音を出力する。たとえば、操作手段の位置に応じた音が出力される。
【0011】
請求項1の発明によれば、操作手段の振り方に応じた音を出力するので、ユーザの振り動作に応じて出力される音を楽しむことができる。また、操作手段の振り方に応じて異なる音が出力されるため、ユーザが実際の楽器を演奏しているような感覚を味わうことができる。
【0012】
請求項2の発明は請求項1に従属し、加速度センサは多軸加速度センサであり、音出力プログラムは、プロセサを、多軸加速度センサの2つの軸についての加速度に基づいて振り動作の方向を判定する方向判定手段としてさらに機能させ、姿勢検出手段は、方向判定手段の判定結果が縦方向を示すとき、2つの軸に直交する軸の加速度に基づいて操作手段と水平面との縦方向の傾きを検出する縦方向傾き検出手段を含み、音出力手段は、縦方向傾き検出手段によって検出された傾きに従う縦方向の位置に応じた音色データを記憶手段から読み出す。
【0013】
請求項2の発明では、また、加速度センサは多軸加速度センサである。音出力プログラムは、音出力装置のプロセサを、方向判定手段(36、S21,S23,S25,S41,S43,S45,S61,S63,S65,S67,S69)としてさらに機能させる。方向判定手段は、多軸加速度センサの2つの軸(22のx軸,y軸)についての加速度に基づいて振り動作の方向を判定する。縦方向傾き検出手段(36,S71)は、方向判定手段の判定結果が縦方向を示すとき(S69で“YES”)、2つの軸(x軸,y軸)に直交する軸(z軸)の加速度に基づいて操作手段と水平面との縦方向の傾きを検出する。音出力手段は、縦方向傾き検出手段によって検出された傾きに従う縦方向の位置に応じた音色データを記憶手段から読み出す。たとえば、縦方向に操作手段を振った場合には、振り終わりの操作手段の傾きに応じて操作手段の縦方向の位置(高さ)が判断され、その高さに応じた音色の音が出力される。
【0014】
請求項2の発明によれば、操作手段を縦方向に振る場合には、その振り終わりの位置に応じた音を出力することができる。
【0015】
請求項3の発明は請求項1または2に従属し、音出力手段は、方向判定手段の判定結果が右方向を示すとき、右方向に応じた音色データを記憶手段から読み出し、方向判定手段の判定結果が左方向を示すとき、左方向に応じた音色データを記憶手段から読み出す。
【0016】
請求項3の発明では、音出力手段は、方向判定手段の判定結果が右方向を示すとき、右方向に応じた音色データを記憶手段から読み出す。一方、音出力手段は、方向判定手段の判定結果が左方向を示すとき、左方向に応じた音色データを記憶手段から読み出す。つまり、音出力手段によって、右方向の振り動作または左方向の振り動作に応じた音が出力される。
【0017】
なお、かかる場合には、振り終わりの姿勢は関係ないため、姿勢検出手段による処理は実行されない。
【0018】
請求項3の発明によれば、操作手段の左右の振り分けに応じた音を出力することができる。
【0019】
請求項4の発明は請求項2または3に従属し、音出力装置は表示手段をさらに備え、音出力プログラムは、プロセサを、振る動作を誘導する誘導画面を表示手段に表示する誘導画面表示手段として機能させ、方向判定手段の判定結果が示す方向は、誘導画面における方向に対応する。
【0020】
請求項4の発明では、音出力プログラムは、音出力装置のプロセサを、誘導画面表示手段(36、S3)としてさらに機能させる。誘導画面表示手段は、振る動作を誘導する誘導画面(100)を表示手段に表示する。方向判定手段の判定結果が示す方向(縦、右または左)は、誘導画面における方向に対応する。たとえば、振り動作の上下左右が誘導画面の上下左右に対応する。
【0021】
請求項4の発明によれば、振り動作の方向と誘導画面の方向とが対応するので、たとえば、誘導画面の上下左右に楽器の画像を表示しておけば、プレイヤは、その楽器の画像を見て操作手段の振り動作によって、所望の楽器を演奏することができる。つまり、振り動作に応じた音を楽しむことができる。
【0022】
請求項5の発明は、加速度センサを含む操作手段を備える音出力装置であって、振り動作検出手段、振り動作終了判断手段、姿勢検出手段、および音出力手段を備える。振り動作検出手段は、加速度センサの出力に基づいて操作手段の振り動作を検出する。振り動作終了判断手段は、振り動作検出手段によって振り動作が検出された後に、加速度センサの出力に基づいて当該振り動作が終了したかどうかを判断する。姿勢検出手段は、振り動作終了判断手段によって振り動作が終了したと判断したとき、加速度センサの出力に基づいて操作手段の姿勢を検出する。音出力手段は、姿勢検出手段の検出結果に応じて、記憶手段に記憶された音色データに基づく音を出力する。
【0023】
請求項5の発明においても、請求項1の発明と同様に、ユーザの振り動作に応じて出力される音を楽しむことができる。
【発明の効果】
【0024】
この発明によれば、操作手段の振り方に応じた音を出力するので、ユーザの振り動作に応じて出力される音を楽しむことができる。また、操作手段の振り方に応じて異なる音が出力されるため、ユーザが実際の楽器を演奏しているような感覚を味わうことができる。
【0025】
この発明の上述の目的,その他の目的,特徴および利点は、図面を参照して行う以下の実施例の詳細な説明から一層明らかとなろう。
【発明を実施するための最良の形態】
【0026】
図1を参照して、この発明の一実施例であるゲームシステム10は、ビデオゲーム装置12を含む。ビデオゲーム装置12は、音楽演奏プログラム(ゲームプログラム)が組み込まれることにより、音楽演奏装置(音出力装置)として機能する。このビデオゲーム装置12は、略立方体のハウジング14を含み、ハウジング14の上端には光ディスクドライブ16が設けられる。光ディスクドライブ16には、ゲームプログラム等を記憶した情報記憶媒体の一例である光ディスク18が装着される。ハウジング14の前面には複数の(実施例では4つの)コネクタ20が設けられる。これらコネクタ20は、ケーブル(図示せず)または受信ユニット24を介して、有線または無線によって、コントローラ22をビデオゲーム装置12に接続するためのものである。図1に示すように、この実施例では、コネクタ20に受信ユニット24が接続され、受信ユニット24を介して、無線でコントローラ22がビデオゲーム装置12に接続される。コントローラ22の詳細については後述する。
【0027】
なお、この実施例では、ビデオゲーム装置12とコントローラ22との間では無線通信を実行するため、本来的には「接続」の用語を用いるべきではない。しかしながら、ビデオゲーム装置12とコントローラ22との間での通信可能な連係状態を表す用語として、有線通信の場合の用語を借りて、便宜上「接続」と表現することとする。
【0028】
また、ビデオゲーム装置12のハウジング14の前面であり、コネクタ20の下方には、1つまたは複数の(この実施例では2つの)メモリスロット28が設けられる。このメモリスロット28にはメモリカード30が挿入される。メモリカード30は、光ディスク18から読み出したゲームプログラム等をローディングして一時的に記憶したり、このゲームシステム10を利用してプレイしたゲームのゲームデータ(ゲームの結果データまたは途中データ)を保存(セーブ)しておいたりするために利用される。
【0029】
さらに、ビデオゲーム装置12のハウジング14の後面には、AVケーブルコネクタ(図示せず)が設けられ、そのコネクタを用いて、AVケーブル32を通してビデオゲーム装置12にモニタ34を接続する。このモニタ34は典型的にはカラーテレビジョン受像機であり、AVケーブル32は、ビデオゲーム装置12からの映像信号をカラーテレビのビデオ入力端子に入力し、音声信号を音声入力端子に入力する。したがって、カラーテレビ(モニタ)34の画面上にたとえば3次元(3D)ビデオゲームのゲーム画像が表示され、左右のスピーカ34aからゲーム音楽や効果音などのステレオゲーム音声が出力される。
【0030】
このゲームシステム10において、ユーザまたはプレイヤがゲーム(または他のアプリケーション)をプレイするために、ユーザはまずビデオゲーム装置12の電源をオンし、次いで、ユーザはビデオゲーム(もしくはプレイしたいと思う他のアプリケーション)をストアしている適宜の光ディスク18を選択し、その光ディスク18をビデオゲーム装置12のディスクドライブ16にローディングする。応じて、ビデオゲーム装置12がその光ディスク18にストアされているソフトウェアに基づいてビデオゲームもしくは他のアプリケーションを実行し始めるようにする。ユーザはビデオゲーム装置12に入力を与えるためにコントローラ22を操作する。たとえば、入力手段26のどれかを操作することによってゲームもしくは他のアプリケーションをスタートさせる。入力手段26の他のものを動かすことによって、動画オブジェクト(プレイヤオブジェクト)を異なる方向に移動させ、または3Dのゲーム世界におけるユーザの視点(カメラ位置)を変化させることができる。
【0031】
図2は図1実施例のビデオゲームシステム10の電気的な構成を示すブロック図である。ビデオゲーム装置12には、CPU36が設けられる。このCPU36は、ビデオゲーム装置12の全体的な制御を担当する。CPU36は、ゲームプロセサとして機能し、このCPU36には、バスを介して、メモリコントローラ38が接続される。メモリコントローラ38は主として、CPU36の制御の下で、バスを介して接続されるメインメモリ40の書込みや読出しを制御する。このメモリコントローラ38にはGPU(Graphics Processing Unit) 42が接続される。
【0032】
GPU42は、描画手段の一部を形成し、たとえばシングルチップASICで構成され、メモリコントローラ38を介してCPU36からのグラフィクスコマンド(作画命令)を受け、そのコマンドに従って、ジオメトリユニット44およびレンダリングユニット46によって3Dのゲーム画像を生成する。つまり、ジオメトリユニット44は、3次元座標系の各種オブジェクト(複数のポリゴンで構成されている。そして、ポリゴンとは少なくとも3つの頂点座標によって定義される多角形平面をいう。)の回転,移動,変形等の座標演算処理を行う。レンダリングユニット46は、各種オブジェクトの各ポリゴンにテクスチャ(模様画像)を貼り付けるなどの画像生成処理を施す。したがって、GPU42によって、ゲーム画面上に表示すべき3Dの画像データが作成され、その画像データがフレームバッファ48内に記憶される。
【0033】
なお、GPU42が作画コマンドを実行するにあたって必要なデータ(プリミティブまたはポリゴンやテクスチャ等)は、GPU42がメモリコントローラ38を介して、メインメモリ40から入手する。
【0034】
フレームバッファ48は、たとえばラスタスキャンモニタ34の1フレーム分の画像データを描画(蓄積)しておくためのメモリであり、GPU42によって1フレーム毎に書き換えられる。具体的には、フレームバッファ48は、1画素(ピクセル)毎に、画像の色情報を順序立てて記憶している。ここで、色情報は、R,G,B,Aについてのデータであり、たとえば、8ビットのR(赤)データ、8ビットのG(緑)データ、8ビットのB(青)データおよび8ビットのA(アルファ)データである。なお、Aデータは、マスク(マット画像)についてのデータである。後述のビデオI/F58がメモリコントローラ38を介してフレームバッファ48のデータを読み出すことによって、モニタ34の画面上に3Dのゲーム画像が表示される。
【0035】
また、Zバッファ50は、フレームバッファ48に対応する画素数×1画素当たりの奥行きデータのビット数に相当する記憶容量を有し、フレームバッファ48の各記憶位置に対応するドットの奥行き情報または奥行きデータ(Z値)を記憶するものである。
【0036】
なお、フレームバッファ48およびZバッファ50は、ともにメインメモリ40の一部を用いて構成されてもよく、また、これらはGPU42の内部に設けられてもよい。
【0037】
メモリコントローラ38はまた、DSP(Digital Signal Processor)52を介して、オーディオ用のRAM(以下、「ARAM」という。)54に接続される。したがって、メモリコントローラ38は、メインメモリ40だけでなく、サブメモリとしてのARAM54の書込みおよび/または読出しを制御する。
【0038】
DSP52は、サウンドプロセサとして働き、メインメモリ40に記憶されたサウンドデータ(図示せず)を用いたり、ARAM54に書き込まれている音波形(音色)データ(図11参照)を用いたりして、ゲームに必要な音、音声或いは音楽に対応するオーディオデータを生成する。
【0039】
メモリコントローラ38は、さらに、バスによって、各インタフェース(I/F)56,58,60,62および64に接続される。コントローラI/F56は、ビデオゲーム装置12に受信ユニット24を介して接続されるコントローラ22のためのインタフェースである。具体的に言うと、受信ユニット24は、コントローラ22から送信される入力情報データを受信し、コントローラI/F56は、受信ユニット24によって受信された入力情報データを、メモリコントローラ38を通してCPU36に与える。ただし、この実施例では、入力情報データは、後述する操作データおよび加速度データの少なくとも一方を含むデータを意味する。ビデオI/F58は、フレームバッファ48にアクセスし、GPU42で作成した画像データを読み出して、画像信号または画像データ(ディジタルRGBAピクセル値)をAVケーブル32(図1)を介してモニタ34に与える。
【0040】
外部メモリI/F60は、ビデオゲーム装置12の前面に挿入されるメモリカード30(図1)をメモリコントローラ38に連係させる。それによって、メモリコントローラ38を介して、CPU36がこのメモリカード30にデータを書込み、またはメモリカード30からデータを読み出すことができる。オーディオI/F62は、メモリコントローラ38を通してDSP52から与えられるオーディオデータまたは光ディスク18から読み出されたオーディオストリームを受け、それらに応じたオーディオ信号(音声信号)をモニタ34のスピーカ34aに与える。
【0041】
そして、ディスクI/F64は、ディスクドライブ16をメモリコントローラ38に接続し、したがって、CPU36がディスクドライブ16を制御する。このディスクドライブ16によって光ディスク18から読み出されたプログラムデータやテクスチャデータ等が、CPU36の制御の下で、メインメモリ40に書き込まれる。
【0042】
図3(A)および図3(B)は、コントローラ22の外観構成を示す斜視図である。図3(A)および図3(B)を参照して、コントローラ22は、たとえばプラスチック成型によって形成されたハウジング22aを有している。ハウジング22aは、略直方体形状であり、ユーザが片手で把持可能な大きさである。上述したように、ハウジング22a(コントローラ22)には、操作手段(複数のボタンないしスイッチ)26が設けられる。具体的には、図3(A)に示すように、ハウジング22a(コントローラ22)の上面には、十字キー26a,Xボタン26b,Yボタン26c,Aボタン26d,セレクトスイッチ26e,メニュー(ホーム)スイッチ26f,スタートスイッチ26gおよび電源スイッチ26hが設けられる。また、図3(B)に示すように、ハウジング22aの下面に凹部が形成されており、この凹部の後方傾斜面に、Bトリガースイッチ26iが設けられる。
【0043】
十字キー26aは、4方向プッシュスイッチであり、矢印で示す4つの方向、前(または上)、後ろ(または下)、右および左の操作部を含む。この操作部のいずれか1つを操作することによって、プレイヤによって操作可能なキャラクタまたはオブジェクト(プレイヤキャラクタまたはプレイヤオブジェクト)の移動方向を指示したり、カーソルの移動方向を指示したりすることができる。
【0044】
Xボタン26bおよびYボタン26cは、それぞれ、押しボタンスイッチであり、3次元ゲーム画像を表示する際の視点位置や視点方向、すなわち仮想カメラの位置や画角を調整するために使用される。または、Xボタン26bおよびYボタン26cは、Aボタン26dおよびBトリガースイッチ26iと同じ操作或いは補助的な操作をする場合に用いることもあり得る。
【0045】
Aボタンスイッチ26dは、押しボタンスイッチであり、プレイヤキャラクタまたはプレイヤオブジェクトに、方向指示以外の動作、すなわち、打つ(パンチ)、投げる、つかむ(取得)、乗る、ジャンプするなどの任意のアクションをさせるために使用される。たとえば、アクションゲームにおいては、ジャンプ、パンチ、武器を動かすなどを指示することができる。また、ロールプレイングゲーム(RPG)やシミュレーションRPGにおいては、アイテムの取得、武器やコマンドの選択および決定等を指示することができる。
【0046】
セレクトスイッチ26e、メニュースイッチ26f、スタートスイッチ26gおよび電源スイッチ26hもまた、押しボタンスイッチである。セレクトスイッチ26eは、ゲームモードを選択するために使用される。メニュースイッチ26fは、ゲームメニュー(メニュー画面)を表示するために使用される。スタートスイッチ26gは、開始(再開)したり、一時提示したりするなどのために使用される。電源スイッチ26hは、ビデオゲーム装置12の電源を遠隔操作によってオン/オフするために使用される。
【0047】
なお、この実施例では、コントローラ22自体をオン/オフするための電源スイッチは設けておらず、コントローラ22の入力手段26のいずれかを操作することによってコントローラ22はオンとなり、一定時間(たとえば、30秒)以上操作しなければ自動的にオフとなるようにしてある。
【0048】
Bトリガースイッチ26iもまた、押しボタンスイッチであり、主として、弾を撃つなどのトリガーを入力するために使用される。一定の場合には、通常のBボタンと同様に機能し、Aボタン26dによって決定したアクションを取り消すなどのために使用される。
【0049】
また、コントローラ22には、外部拡張コネクタ22bおよびインジケータ22cが設けられる。外部拡張コネクタ22bは、図示しない別のコントローラを接続するためなどに使用される。インジケータ22cは、たとえば、4つのLEDで構成され、4つのうちのいずれか1つを点灯することにより、コントローラ22の識別情報(コントローラ番号)を示す。
【0050】
なお、図3に示したコントローラ22の形状や、各入力手段26の形状、数および設置位置等は単なる一例に過ぎず、それらが適宜改変された場合であっても、本発明を実現できることは言うまでもない。
【0051】
図4はコントローラ22の電気的な構成を示すブロック図である。この図4を参照して、コントローラ22はマイコン70を含み、このマイコン70には、内部バス(図示せず)によって、入力手段26、メモリ72、加速度センサ74および無線モジュール76が接続される。また、無線モジュール76には、アンテナ78が接続される。
【0052】
なお、図示は省略するが、上述した拡張コネクタ22bおよびインジケータ22c(LED)もインタフェースまたはドライバを介してマイコン70に接続される。
【0053】
マイコン70は、コントローラ22の全体制御を司り、入力手段26および加速度センサ74のような入力手段によって入力された情報(入力情報)を、入力情報データとして無線モジュール76およびアンテナ78を介してビデオゲーム装置12に送信(入力)する。このとき、マイコン70は、メモリ72を作業領域ないしバッファ領域として用いる。
【0054】
上述した入力手段26(26a−26i)からの操作信号(操作データ)は、マイコン70に入力され、マイコン70は操作データを一旦メモリ72に記憶する。
【0055】
また、加速度センサ74は、コントローラ22の縦方向(図3に示すy軸方向)、横方向(図3に示すx軸方向)および前後方向(図3に示すz軸方向)の3軸で各々の加速度を検出する。この加速度センサ74は、典型的には、静電容量式の加速度センサであるが、他の方式のものを用いるようにしてもよい。図3(A)および図3(B)からも分かるように、この実施例では、コントローラ22の上面の垂直上方を、y軸の正の方向とし、y軸に垂直であり、コントローラ22の右方向をx軸の正の方向とし、x軸とy軸とに垂直であり、コントローラ22の長手方向であり、Xボタン26bから十字スイッチ26aに向かう方向をz軸の正の方向としてある。
【0056】
たとえば、加速度センサ74は、第1所定時間(たとえば、200msec)毎に、x軸,y軸,z軸の各々についての加速度(ax,ay,az)を検出し、検出した加速度のデータ(加速度データ)をマイコン70に入力する。たとえば、加速度センサ74は、各軸方向の加速度を、−2.0g〜2.0g(gは重力加速度である。以下、同じ。)の範囲で検出する。マイコン70は、加速度センサ74から与えられる加速度データを、第2所定時間(たとえば、1フレーム:画面更新単位時間(1/60sec))毎に検出し、一旦メモリ72の記憶する。マイコン70は、操作データおよび加速度データの少なくとも一方を含む入力情報データを作成し、作成した入力情報データを、第3所定時間(1フレーム)毎にビデオゲーム装置12に送信する。
【0057】
なお、図3では省略したが、この実施例では、加速度センサ74は、ハウジング22aの内部であり、十字キー26aが配置される付近に設けられる。
【0058】
無線モジュール76は、たとえばBluetooth(登録商標)の技術を用いて、所定周波数の搬送波を入力情報データで変調し、その微弱電波信号をアンテナ78から放射する。つまり、入力情報データは、無線モジュール76によって微弱電波信号に変調されてアンテナ78(コントローラ22)から送信される。この微弱電波信号が上述したビデオゲーム装置12に装着された受信ユニット24によって受信される。受信された微弱電波は、復調および復号の処理を施され、したがって、ビデオゲーム装置12(CPU36)は、コントローラ22からの入力情報データを取得することができる。そして、CPU36は、取得した入力情報データとプログラム(ゲームプログラム)とに従ってゲーム処理を行う。
【0059】
図5(A)は、モニタ34に表示される演奏画面(ゲーム画面)100の一例を示す。また、図5(B)は、図5(A)に示すゲーム画面100を見て、疑似的に楽器を演奏する場合におけるコントローラ22の操作方法の一例を示す。すなわち、プレイヤは、ゲーム画面100に誘導されて、コントローラ22を操作する。
【0060】
図5(A)に示すように、ゲーム画面100では、4つの楽器の画像102,104,106,108が表示される。たとえば、ゲーム画面100の上部には、クラッシュシンバルの画像102が表示される。また、ゲーム画面100の左部には、ハイハットシンバルの画像104が表示される。さらに、ゲーム画面100の下部には、バスドラムの画像106が表示される。さらにまた、ゲーム画面100の右部には、スネアドラムの画像108が表示される。
【0061】
プレイヤは、コントローラ22を横方向(右方向または左方向)または縦方向(上方向または下方向)に振ることにより、ゲーム画面100に表示される楽器を叩く(打撃する)。ただし、この実施例では、コントローラ22を用いてゲーム画面100に表示される楽器を叩くように操作するため、縦方向においては、下方向に振る場合にのみ、楽器を叩いたと判断するようにしてある。なお、コントローラ22を縦に振る場合に、上方向へ振る動作であるか、下方向へ振る動作であるかの判定方法は後で詳細に説明する。
【0062】
たとえば、プレイヤがコントローラ22を右方向に振ると、スネアドラム(画像108)を叩くことができる。また、プレイヤがコントローラ22を左方向に振ると、ハイハットシンバル(画像104)を叩くことができる。さらに、プレイヤがコントローラ22を下方向に振り、比較的高い位置(上部)で振り動作を止めると、クラッシュシンバル(画像102)を叩くことができる。さらにまた、プレイヤがコントローラ22を下方向に振り、水平位置付近ないしそれよりも低い位置(下部)で振り動作を止めると、バスドラム(画像106)を叩くことができる。
【0063】
以下、図6−図10を参照して、コントローラ22の操作方法(振り動作)および振り方向の判定方法について説明する。図6に示すように、横方向(左右)にコントローラ22を振る場合には、コントローラ22の上面側の向きが実空間座標系のZ軸のマイナス方向に設定される。つまり、コントローラ22の上面は、図5(B)に示したゲーム画面100(モニタ34)と同じ向きである。したがって、図6に示すように、コントローラ22を横方向に振る場合には、コントローラ22は、実空間座標系のXY平面内でZ軸を中心として回動される。具体的には、コントローラ22を右方向に振る場合には、コントローラ22のz軸のプラス方向が実空間座標系のX軸のプラス方向と成す角度が小さくなるように、コントローラ22が傾けられる。一方、コントローラ22を左方向に振る場合には、コントローラ22のz軸のプラス方向が実空間座標系のX軸のマイナス方向と成す角度が小さくなるように、コントローラ22が傾けられる。
【0064】
ここで、図6で示すように、この実施例では、コントローラ22のx軸のプラス方向が実空間座標系のX軸のプラス方向と一致し、コントローラ22のy軸のプラス方向が実空間座標系のZ軸のマイナス方向と一致し、コントローラ22のz軸のプラス方向がY軸のプラス方向と一致する場合を、コントローラ22の基準姿勢とする。ただし、基本姿勢では、コントローラ22は、十字キー26aが上側になるように、その方向(姿勢)が決定される。また、この実施例では、簡単のため、基準姿勢からコントローラ22を振る場合について説明するが、実際には、基準姿勢からコントローラ22を振る必要はない。以下、同じ。
【0065】
また、図7に示すように、下方向にコントローラ22を振る場合には、コントローラ22は、実空間座標系におけるYZ平面内でX軸を中心に回動される。図7の(1)では、コントローラ22を下向きに振り、比較的高い位置(上部)で止めた状態を示す。つまり、コントローラ22は、そのz軸が実空間座標系のY軸に対して少し傾いた位置で停止される。このような場合に、上述したように、ゲーム画面100の上部に表示されたクラッシュシンバルを叩くことができる。一方、図7の(2)では、コントローラ22を下向きに振り、水平位置で止めた状態を示す。つまり、コントローラ22は、そのz軸が実空間座標系のZ軸に平行になるまで傾けた位置で停止される。このような場合に、上述したように、ゲーム画面100の下部に表示されたバスドラムを叩くことができる。
【0066】
図8(A1)は、コントローラ22を右方向に振る場合のコントローラ22の軸方向の変化を示す。上述したように、コントローラ22を右方向に振る場合には、コントローラ22のz軸のプラス方向が実空間座標系のX軸のプラス方向と成す角度が小さくなるように、コントローラ22が傾けられる。ただし、図8(A1)では、コントローラ22を基本姿勢から右方向に振った場合についての軸方向の変化が示される。かかる場合には、コントローラ22のx軸およびy軸に現れる加速度ax,azは、図8(A2)に示すように、変化する。つまり、コントローラ22を振る前では、コントローラ22には、z軸のマイナス方向に重力加速度gの大きさの加速度azが現れる。そして、コントローラ22を振った後では、x軸のプラス方向およびz軸のマイナス方向に、振り動作が終了したときのコントローラ22の傾きに応じて重力加速度gの大きさが分解された加速度axおよび加速度azが現れる。ただし、図8(A1)からも分かるように、コントローラ22を右方向に振る場合には、コントローラ22のy軸は、重力が働く実空間座標系のY軸に直交するため、y軸方向には加速度は現れない(ay=0)。これは、コントローラ22を左方向に振る場合も同じである。
【0067】
また、図8(B1)は、コントローラ22を左方向に振る場合のコントローラ22の軸方向の変化を示す。上述したように、コントローラ22を左方向に振る場合には、コントローラ22のz軸のプラス方向が実空間座標系のX軸のマイナス方向と成す角度が小さくなるように、コントローラ22が傾けられる。ただし、図8(A1)では、コントローラ22を基本姿勢から左方向に振った場合についての軸方向の変化が示される。かかる場合には、コントローラ22のx軸およびy軸に現れる加速度ax,azは、図8(B2)に示すように、変化する。つまり、コントローラ22を振る前では、コントローラ22には、z軸のマイナス方向に重力加速度gの大きさの加速度azが現れる。そして、コントローラ22を振った後では、x軸のマイナス方向およびz軸のマイナス方向に、振り動作が終了したときのコントローラ22の傾きに応じて重力加速度gの大きさが分解された加速度axおよび加速度azが現れる。
【0068】
したがって、コントローラ22の振り終わりを検出して、振り終わり時におけるコントローラ22のx軸の加速度axの数値またはその符号(プラス,マイナス)によって、右方向または左方向に振ったことを判定することが考えられる。
【0069】
しかし、上述したように、この実施例では、コントローラ22で楽器を叩くように操作するため、振り終わり時におけるコントローラ22のx軸方向の加速度axの数値またはその符号のみで、右方向または左方向の振り動作を判定した場合には、プレイヤが叩き操作をしていないにも拘わらず、誤って叩き操作をしたと判断してしまう恐れがある。たとえば、ゆっくりとコントローラ22を右方向または左方向に傾けた場合であっても、コントローラ22のx軸方向には、重力加速度gによって、加速度axが現れるからである。また、単なる手ぶれを叩き操作(振り動作)と判断しないようにするためでもある。
【0070】
そこで、この実施例では、右方向または左方向の振り動作は、振り動作の初期ないしは途中におけるx軸方向の加速度axの値に応じて、右方向または左方向への振り動作を判定するようにしてある。具体的には、重力加速度gを考慮して、x軸の加速度axが第1閾値(たとえば、1.2g)以上になると、右方向への振り動作であると判定する。また、同様に、重力加速度gを考慮して、x軸の加速度axが第2閾値(たとえば、−1.2g)以下になると、左方向への振り動作であると判定する。
【0071】
なお、詳細な説明は省略するが、コントローラ22を右方向および左方向に振る場合には、遠心力による加速度がz軸方向に現れるが、これはコントローラ22を縦方向に振る場合も同じであるため、z軸方向の加速度azによって、コントローラ22を振る方向を判定することはできない。
【0072】
また、図示は省略するが、右方向または左方向にコントローラ22を振る場合には、その振り終わりを加速度axの増加または減少が終了したか否かで判断する。そして、コントローラ22を振り終わったときに、楽器を叩いたと判定して(当たったと判定して)、コントローラ22を振った方向に応じた楽器の音を出力したり、ゲーム画面100の表示を更新したりする。
【0073】
図9(A1)は、コントローラ22を下方向に振り、上部で止めた場合のコントローラ22の軸方向の変化を示す。つまり、図7の(1)に示したように、コントローラ22は、基本姿勢から実空間座標系のX軸を中心に回動するように振られ、そのz軸が実空間座標系のY軸に対して少し傾いた位置で停止される。かかる場合には、コントローラ22のy軸およびz軸に現れる加速度ay,azは、図9(A2)に示すように、変化する。つまり、コントローラ22を振る前では、コントローラ22には、z軸のマイナス方向に重力加速度gの大きさの加速度azが現れる。そして、コントローラ22を振った後では、y軸のマイナス方向およびz軸のマイナス方向に、振り動作が終了したときのコントローラ22の傾きに応じて重力加速度gの大きさが分解された加速度ayおよび加速度azが現れる。ただし、図9(A1)からも分かるように、コントローラ22を下方向に振る場合には、コントローラ22のx軸は、重力が働く実空間座標系のY軸に直交するため、x軸方向には加速度は現れない(ax=0)。
【0074】
また、図9(B1)は、コントローラ22を下方向に振り、水平位置で止めた場合のコントローラ22の軸方向の変化を示す。つまり、図7の(2)に示したように、コントローラ22は、基本姿勢から実空間座標系のX軸を中心に回動するように振られ、そのz軸が実空間座標系のZ軸に平行になるまで傾けた位置で停止される。かかる場合には、コントローラ22のy軸およびz軸に現れる加速度ay,azは、図9(B2)に示すように、変化する。つまり、コントローラ22を振る前では、コントローラ22には、z軸のマイナス方向に重力加速度gの大きさの加速度azが現れる。そして、コントローラ22を振った後では、y軸のマイナス方向に、重力加速度gの大きさの加速度ayが現れる。ただし、コントローラ22のz軸は、重力が働く実空間座標系のY軸に直交するため、z軸方向には加速度は現れない(az=0)。
【0075】
ここで、コントローラ22を下方向に振る場合には、コントローラ22を横方向に振る場合とは異なり、比較的上部でコントローラ22を止める場合および水平位置付近或いは下部でコントローラ22を止める場合のいずれの場合であっても、コントローラ22を同じ方向に振る。このため、コントローラ22を比較的上部で止めたか、水平位置付近或いは下部で止めたかを判定するには、横方向に振る場合のような判定方法を適用することはできない。つまり、たとえば、y軸方向の加速度ayのみで、その判定をすることは難しいと言える。
【0076】
したがって、この実施例では、下方向にコントローラ22を振った場合には、その振り終わりを判断し、振り終わったときのコントローラ22の姿勢に応じて、比較的上部で止めたか、水平位置付近或いは下部で止めたかを判別するようにしてある。具体的には、図9(A2)および図9(B2)を比較して分かるように、コントローラ22の振り終わりにおけるz軸方向の加速度azに基づいて、その姿勢が判断される。つまり、図9(A2)に示すように、比較的上部でコントローラ22が停止された場合には、その停止状態において、重力による加速度azがマイナス方向に大きく現れる。一方、図9(B)に示すように、水平位置でコントローラ22が停止された場合には、その停止状態において、z軸のマイナス方向に現れる加速度azは、図9(A)に示す場合よりも大きい。図示は省略するが、コントローラ22が水平位置よりもさらに下方向に振られた位置で停止された場合には、z軸のプラス方向に加速度azが現れる。つまり、さらに加速度azは大きくなる。
【0077】
したがって、この実施例では、コントローラ22を下方向に振る場合には、第3閾値(たとえば、−0.5g)が設定され、この第3閾値を用いて、コントローラ22の停止位置を判定する。具体的には、コントローラ22が停止した時のz軸方向の加速度azを検出する。そして、加速度azが第3閾値よりも小さい場合には、比較的上部でコントローラ22が停止されたと判断する。逆に、加速度azが第3閾値以上である場合には、水平位置付近または下部でコントローラ22が停止されたと判断する。
【0078】
なお、縦方向にコントローラ22を振っているか否かは、y軸方向の加速度の変化によって知ることができる。
【0079】
また、図10は、コントローラ22を下から上向き(上向き)に振った後に、コントローラ22を上から下向き(下向き)に振った場合に、y軸方向に現れる加速度ayの時間変化を示すグラフである。このグラフは、実施例で示されるコントローラ22の実機を実際に上下(縦方向)に振った場合に得られたものである。
【0080】
図10に示すグラフから分かるように、コントローラ22を上向きに振る場合と、コントローラ22を下向きに振る場合とでは、y軸方向に現れる加速度ayの時間変化は、いずれも、負のピーク値が現れた後に、正のピーク値が現れる。つまり、互いに類似している。
【0081】
ここで、上述したように、この実施例では、ゲーム画面100に表示された楽器を叩くように、コントローラ22を振る。したがって、コントローラ22を上向きに振った場合に、楽器の音が鳴ると、プレイヤは違和感を覚えてしまう。このため、この実施例では、コントローラ22を縦方向に振る場合には、コントローラ22を下向きに振ったときだけ、楽器の音を鳴らすようにしてある。
【0082】
この実施例では、図10の丸印Pで示す局所的なピーク値を検出した場合に、コントローラ22が下向きに振られたと判定するようにしてある。その後、丸印Qで示す負のピーク値を検出したときに、コントローラ22の振り終わりを判断するようにしてある。
【0083】
具体的には、コントローラ22のy軸方向の加速度ayが−0.3g以上になった後に、所定値(0.8g)を超えることなく、丸印Qで示す負のピーク値を検出したかどうかを判断する。ここで、負のピーク値を検出することなく、加速度ayが所定値を超えた場合には、丸印Pで示すピーク値が無いため、上方向への振り動作であると判定する。一方、負のピーク値を検出すると、下方向への振り動作であると判定する。
【0084】
また、負のピーク値は、最新(現フレーム)の加速度ayを含む過去3フレーム分の加速度ayを用いて検出される。具体的に説明すると、3つの加速度ayの値をα,β,γ(いずれも負の数)とし、α,β,γの順で検出されたと仮定する。つまり、γが現フレームの加速度ayである。このとき、数1を満たせば、負のピーク値が検出される。
【0085】
[数1]
α−β>0かつγ−β>0
なお、この実施例では、丸印Qで示す負のピーク値を検出したときに、コントローラ22の振り終わりを判断するようにした。しかし、これに限定される必要はなく、丸印Rで示すピーク値を検出したときに、コントローラ22の振り終わりを判断するようにしてもよい。いずれを選択するかは、開発者ないし設計者が任意に選択すべき事項である。
【0086】
図11は、図2に示したメインメモリ40のメモリマップである。この図11を参照して、メインメモリ40は、プログラム記憶領域90およびデータ記憶領域92を含む。プログラム記憶領域90には、音楽演奏プログラム(ゲームプログラム)が記憶され、この音楽演奏プログラムは、加速度検出プログラム90a、振り方向判定プログラム90b、音色選択プログラム90c、音出力プログラム90d、画像生成プログラム90eおよび画像表示プログラム90fなどによって構成される。
【0087】
加速度検出プログラム90aは、コントローラ22から入力される入力情報データから加速度データを検出し、検出した加速度データをデータ記憶領域92に時系列に従って記憶(一時記憶)するためのプログラムである。振り方向判定プログラム90bは、加速度データに基づいてコントローラ22の振り方向を判定するためのプログラムである。また、この振り方向判定プログラム90bは、振り方向の判定に際して、後述する右方向フラグ92b、左方向フラグ92cおよび下方向フラグ92dの各々の成立(オン)および不成立(オフ)を実行する。
【0088】
音色選択プログラム90cは、コントローラ22によって叩かれた楽器すなわち画像(102,104,106,108)を判定(当たり判定)し、判定結果に応じた楽器の音色を選択するためのプログラムである。音出力プログラム90dは、音色選択プログラム90cに従って選択された音色の音を出力するためのプログラムである。また、音出力プログラム90dは、必要に応じて、BGMやオーケストラのような音も出力する。
【0089】
なお、図示は省略するが、BGMやオーケストラのような音に対応するデータ(サウンドデータ)は、データ記憶領域92に記憶される。
【0090】
画像生成プログラム90eは、後述する画像データ92fを用いて、楽器のようなオブジェクトを含むゲーム画像を生成するためのプログラムである。また、画像生成プログラム90eは、アニメーションデータに従って楽器の画像(102,104,106,108)を変化させる。画像表示プログラム90fは、画像生成プログラム90eに従って生成されたゲーム画像をモニタ34に表示(出力)するためのプログラムである。
【0091】
なお、図示は省略するが、プログラム記憶領域90には、バックアッププログラムなども記憶される。バックアッププログラムは、音楽演奏ゲームの途中データや結果データをメモリカード30にセーブするためのプログラムである。
【0092】
データ記憶領域92には、加速度データ92a、右方向フラグ92b、左方向フラグ92c、下方向フラグ92dおよび画像データ92eなどが記憶される。
【0093】
加速度データ92aは、コントローラ22に対して固定的に決定される各軸(x軸,y軸,z軸)に現れる加速度(ax,ay,az)の数値データであり、上述したように、加速度検出プログラム90aに従って時系列に記憶される。ただし、この実施例では、加速度ax,ay,azは、重力加速度gを用いて現される。右方向フラグ92bは、コントローラ22が右方向に振られたか否かを判断するためのフラグであり、振り方向判定プログラム90bに従ってオン/オフされる。たとえば、右方向フラグ92b(他のフラグ92c,92dも同じ。)は、1ビットのレジスタで構成され、フラグがオンされると、レジスタにデータ値「1」が設定され、フラグがオフされると、レジスタにデータ値「0」が設定される。たとえば、右方向フラグ92bは、コントローラ22の振り方向が右方向であると判定されたときにオンされ、それ以外ではオフされる。
【0094】
左方向フラグ92bは、コントローラ22が左方向に振られたか否かを判断するためのフラグであり、振り方向判定プログラム90bに従ってオン/オフされる。たとえば、左方向フラグ92bは、コントローラ22の振り方向が左方向であると判定されたときにオンされ、それ以外ではオフされる。下方向フラグ90dは、コントローラ22が下向きに振られたか否かを判断するためのフラグであり、振り方向判定プログラム90bに従ってオン/オフされる。たとえば、下方向フラグ90dは、コントローラ22の振り方向が下方向であると判定されたときにオンされ、それ以外ではオフされる。
【0095】
画像データ92eは、上述したように、ゲーム画像を生成するためのデータ(ポリゴンデータ、テクスチャデータなど)である。また、画像データ92eには、オブジェクト(たとえば、楽器)をアニメーション表示するためのアニメーションデータも含まれる。
【0096】
なお、図示は省略するが、データ記憶領域92には、他のデータや他のフラグなども記憶される。
【0097】
図12は図2に示したARAM54のメモリマップを示す。ARAM54は、音色データ(音波形データ)を記憶する。たとえば、音色データは、光ディスク18から読み出され、一旦メインメモリ40の所定領域に書き込まれた後、一度に全部または部分的かつ順次的に、ARAM54に書き込まれる。図12に示すように、ARAM54には、スネアドラムの音色についての音色Aデータ54a、クラッシュシンバルの音色についての音色Bデータ54b、ハイハットシンバルの音色についての音色Cデータ54cおよびバスドラムの音色についての音色Dデータ54dなどが記憶される。したがって、CPU36は、上述した音出力プログラム90cに従って、音色選択プログラム90cに従って選択された音色データ54a,54b,54c,54d,…を読み出し、読み出した音色データ54a,54b,54c,54d,…をDSP44に与える。DSP44は、CPU36の指示の下、音色データ54a,54b,54c,54dに所定の処理を施して、メインメモリ40およびオーディオI/F62を介してスピーカ34aに出力する。
【0098】
具体的には、図2に示すCPU36が図13に示すフロー図に従って音楽演奏処理を実行する。図13に示すように、CPU36は音楽演奏処理を開始すると、ステップS1で、初期化処理を実行する。つまり、CPU36は、各フラグ92b,92c,92dをオフしたり、バッファ領域をクリアしたりする。次のステップS3では、演奏画面すなわちゲーム画面100を生成し、モニタ34に表示する。続いて、ステップS5では、加速度の検出を開始する。つまり、CPU36は、コントローラ22から入力される入力情報データから加速度データ92aを検出し、検出した加速度データ92aのデータ記憶領域92への記憶を開始する。したがって、図示は省略するが、音楽演奏処理の実行中では、加速度データ92aが時系列に従ってデータ記憶領域92に記憶される。
【0099】
続くステップS7では、後述する振り方向判定および音出力処理(図14−図16参照)を実行する。そして、ステップS9では、演奏終了かどうかを判断する。ここでは、CPU36は、プレイヤから音楽演奏の終了指示があるかどうかを判断する。ただし、この実施例では、コントローラ22から入力情報データが入力されない状態が所定時間以上続いた場合にも、音楽演奏を終了したと判断するようにしてある。ステップS9で“NO”であれば、つまり演奏終了でなければ、そのままステップS7に戻る。一方、ステップS9で“YES”であれば、つまり演奏終了であれば、音楽演奏処理を終了する。
【0100】
図13のステップS7に示した振り方向判定および音出力処理は、図14−図16の各々に示すフロー図に従って並列的に(マルチタスクで)実行される。図14は、コントローラ22を右に振る動作であるか否かを判定し、判定結果に応じた音を出力するための、振り方向判定および音出力処理を示すフロー図である。
【0101】
図14に示すように、CPU36は、振り方向判定および音出力処理を開始すると、ステップS21で、右方向フラグ92bがオンであるかどうかを判断する。ステップS21で“YES”であれば、つまり右方向フラグ92bがオンであれば、そのままステップS27に進む。しかし、ステップS21で“NO”であれば、つまり右方向フラグ92bがオフであれば、ステップS23で、コントローラ22のx軸方向の加速度axが1.2g以上であるかどうかを判断する。
【0102】
ステップS23で“NO”であれば、つまり加速度axが1.2g未満であれば、コントローラ22を右方向に振っていないと判定して、図13に示した音楽演奏処理にリターンする。一方、ステップS23で“YES”であれば、つまり加速度axが1.2g以上であれば、コントローラ22を右方向に振ったと判定し、ステップS25で、右方向フラグ92bをオンして、ステップS27に進む。
【0103】
なお、右方向フラグ92b、左方向フラグ92cおよび下方向フラグ92cのいずれか2つ以上が同時にオンされることはないため、CPU36は、右方向フラグ92bをオンするときに、他のすべてのフラグ(92c,92d)をオフするようにしてある。以下、同様である。
【0104】
ステップS27では、コントローラ22のx軸方向の加速度axの増加が終了したかどうかを判断する。ここでは、CPU36は、たとえば、数フレーム前から現フレームまでの加速度axを検出し、加速度axが変化(増加)しているか否かを判断する。加速度axが増加している場合には、振り動作を終了していないと判断する。しかし、加速度axが増加していない場合には、つまり加速度axが一定値またはほぼ一定値である場合には、振り動作を終了したと判断する。
【0105】
ステップS27で“NO”であれば、つまり加速度axの増加が終了していなければ、そのまま音楽演奏処理にリターンする。一方、ステップS27で“YES”であれば、つまり加速度axの増加が終了すれば、右方向への振り動作を終了したと判断する。すなわち、CPU36は、右方向への振り動作によって楽器を叩いたと判断する。したがって、ステップS29で、プレイヤから見て右側に配置(表示)される楽器(図5のゲーム画面100では、スネアドラム)の音を鳴らす処理を実行する。
【0106】
具体的には、CPU36は、プレイヤから見てゲーム画面100の右部に表示される楽器を判断し、当該楽器に応じた音色データを選択する。次に、CPU36の指示の下、DSP52が、選択された音色データに所定の処理を施し、所定の処理を施した音色データを出力する。以下、音を出力する場合について同様である。また、CPU36は、楽器の音を出力するとともに、当該楽器が叩かれた様子を表現すべくゲーム画面100の表示を変化させる。つまり、CPU36は、音を鳴らす楽器に対応するアニメーションデータに従って当該楽器の画像(オブジェクト)をアニメーション表示する。以下、ゲーム画面100の表示を変化させる場合について同様である。
【0107】
続いて、ステップS31では、バッファをクリアする。つまり、データ記憶領域92に記憶される加速度データ92aを消去する。そして、ステップS33で、右方向フラグ92bをオフして、音楽演奏処理にリターンする。
【0108】
図15は、コントローラ22を左に振る動作であるか否かを判定し、判定結果に応じた音を出力するための、振り方向判定および音出力処理を示すフロー図である。この処理は、図14に示した処理と同様であるため、重複する内容については簡単に説明することにする。
【0109】
図15に示すように、CPU36は、振り方向判定および音出力処理を開始すると、ステップS41で、左方向フラグ92cがオンであるかどうかを判断する。ステップS41で“YES”であれば、つまり左方向フラグ92cがオンであれば、そのままステップS47に進む。しかし、ステップS41で“NO”であれば、つまり左方向フラグ92cがオフであれば、ステップS43で、コントローラ22のx軸方向の加速度axが−1.2g以下であるかどうかを判断する。
【0110】
ステップS43で“NO”であれば、つまり加速度axが−1.2gよりも大きければ、コントローラ22を左方向に振っていないと判定して、図13に示した音楽演奏処理にリターンする。一方、ステップS43で“YES”であれば、つまり加速度axが−1.2g以下であれば、コントローラ22を左方向に振ったと判定し、ステップS45で、左方向フラグ92cをオンして、ステップS47に進む。図示は省略するが、このとき、右方向フラグ92bおよび下方向フラグ92dはオフされる。
【0111】
ステップS47では、コントローラ22のx軸方向の加速度axの減少が終了したかどうかを判断する。ここでは、CPU36は、たとえば、数フレーム前から現フレームまでの加速度axを検出し、加速度axが変化(減少)しているか否かを判断する。加速度axが減少している場合には、左方向への振り動作が終了していないと判断する。しかし、加速度axが減少していない場合、すなわち加速度axが一定値またはほぼ一定値であれば、左方向への振り動作が終了したと判断する。
【0112】
ステップS47で“NO”であれば、つまり加速度axの減少が終了していなければ、そのまま音楽演奏処理にリターンする。一方、ステップS47で“YES”であれば、つまり加速度axの減少が終了すれば、左方向への振り動作を終了したと判断する。すなわち、左方向への振り動作によって楽器が叩かれたと判断する。したがって、ステップS49で、プレイヤから見て左側に配置(表示)される楽器(図5のゲーム画面100では、ハイハットシンバル)の音を鳴らす処理を実行する。ここでは、ハイハットシンバルの音が出力されるとともに、ハイハットシンバルが叩かれた様子を示すゲーム画面100が表示される。
【0113】
続いて、ステップS51では、バッファをクリアする。そして、ステップS53で、左方向フラグ92cをオフして、音楽演奏処理にリターンする。
【0114】
図16は、コントローラ22を縦(下方向)に振る動作であるか否かを判定し、判定結果に応じた音を出力するための、振り方向判定および音出力処理を示すフロー図である。図16に示すように、CPU36は、振り方向判定および音出出力処理を開始すると、ステップS61で、コントローラ22のy軸方向の加速度ayが−0.3g以上であるかどうかを判断する。ステップS61で“NO”であれば、つまり加速度ayが−0.3g未満であれば、そのままステップS65に進む。一方、ステップS61で“YES”であれば、つまり加速度ayが−0.3g以上であれば、ステップS63で、下方向フラグ92dをオンし、ステップS65に進む。図示は省略するが、このとき、右方向フラグ92bおよび左方向フラグ92cはオフされる。
【0115】
ステップS65では、コントローラ22のy軸方向の加速度ayが0.8g以上であるかどうかを判断する。ステップS65で“YES”であれば、つまり加速度ayが−0.3g以上となった後に、負のピーク値を検出することなく、加速度ayが0.8g以上になった場合には、上方向の振り動作であると判断して、ステップS79で、下方向フラグ92dをオフして、図13に示した音楽演奏処理にリターンする。
【0116】
しかし、ステップS65で“NO”であれば、つまり加速度ayが0.8g未満であれば、ステップS67で、数1に従って負のピーク値を検出する。続くステップS69では、負のピーク値を検出したかどうかを判断する。つまり、現フレームの加速度ayを含む過去3フレーム分の加速度ayが、数1を満たしたかどうかを判断する。ステップS69で“NO”であれば、つまり負のピーク値を検出していなければ、そのままステップS65に戻る。一方、ステップS69で“YES”であれば、つまり負のピーク値を検出すれば、下方向の振り動作に対応して音を鳴らすべく、ステップS71に進む。
【0117】
このように、ステップS61−S69の処理によって、図10に示した丸印Pで示す局所的なピーク値に続く丸印Qで示す負のピーク値を検出することにより、下方向の振り動作を正しく判定しているのである。
【0118】
ステップS71では、コントローラ22のz軸方向の加速度azが−0.5gよりも大きいか否かを判断する。つまり、下方向の振り動作が終了した後のコントローラ22の姿勢(停止位置)が判断される。ステップS71で“NO”であれば、つまり加速度azが−0.5g以下であれば、コントローラ22は比較的高い位置で停止していると判断し、ステップS73で、プレイヤから見て上側に配置(表示)される楽器(図5に示すゲーム画面100では、クラッシュシンバル)の音を鳴らす処理を実行して、ステップS77に進む。ただし、ステップS73では、クラッシュシンバルの音が出力されるとともに、クラッシュシンバルが叩かれる様子を現すゲーム画面100が表示される。
【0119】
一方、ステップS71“YES”であれば、つまり加速度azが−0.5未満であれば、コントローラ22は水平位置付近またはそれよりも低い位置で停止していると判断し、ステップS75で、プレイヤから見て下側に配置(表示)される楽器(図5に示すゲーム画面100では、バスドラム)の音を鳴らす処理を実行して、ステップS77に進む。ただし、ステップS75では、バスドラムの音が出力されるとともに、バスドラムが叩かれる様子を現すゲーム画面100が表示される。
【0120】
ステップS77では、バッファをクリアする。つまり、データ記憶領域92に記憶された加速度データ92aが削除される。そして、ステップS79で、下方向フラグ92dをオフして、音楽演奏処理にリターンする。
【0121】
この実施例によれば、コントローラの振り方に応じた音を出力するので、ユーザの振り動作に応じて出力される音を楽しむことができる。
【0122】
また、この実施例では、1つの加速度センサの検出結果に基づいて振り動作の方向を判定するとともに、振り終わりのコントローラの姿勢を判定するので、低コストでプレイヤの振り動作を正確に判定することができる。
【0123】
なお、この実施例では、ゲーム画面の上部、下部、左部、右部のそれぞれに1の楽器の画像を表示した場合について説明した。しかし、これに限定されるべきではなく、さらに多数の楽器の画像を表示し、上下左右のみならず、詳細な振り動作を判別可能にすることもできる。
【0124】
たとえば、図17に示すように、4つの楽器の画像A,B,C,Dが横方向並んで配置される場合では、コントローラ22のx軸方向の加速度axの大きさで、各方向に配置(表示)される楽器のいずれが叩かれたかを判別することができる。ただし、図17においては、楽器Aおよび楽器Bがゲーム画面の中央から左側に配置に表示され、楽器Cおよび楽器Dがゲーム画面の中央から右側に配置されるものとする。具体的には、左方向または右方向の振り動作を判定するための閾値(上述の第1閾値および第2閾値)とは別に、叩かれた楽器を判別するための閾値を設ける。つまり、図17の下部に示すように、コントローラ22を左方向に振り、楽器Aを叩く場合には、楽器Bを叩く場合よりも、基本姿勢からの左方向への傾き角度が大きくなるため、振る動作を早く(強く)すると考えられる。同様に、コントローラ22を右方向に振り、楽器Dを叩く場合には、楽器Cを叩く場合よりも、基本姿勢から右方向への傾き角度が大きくなるため、振る動作を早く(強く)すると考えられる。
【0125】
かかる場合には、図14に示したフロー図は、図18および図19に示すように変更される。以下、図18および図19に示す処理について説明するが、上述の実施例で説明した処理と同じ処理については簡単に説明することにする。
【0126】
図18に示すように、CPU36は、振り方向判定および音出出力処理を開始すると、ステップS91で、右方向2フラグがオンであるかどうかを判断する。ここで、右方向2フラグは、x軸方向の加速度axが第1閾値(ここでは、1.2g)のみならず、第4閾値(ここでは、1.6g)以上であることを示すフラグである。具体的には、図17の(IV)で示すように、コントローラ22が、基本姿勢から右方向へ大きく傾くように振られた状態を示す。ステップS91で“YES”であれば、つまり右方向2フラグがオンであれば、そのまま図19に示すステップS105に進む。しかし、ステップS91で“NO”であれば、つまり右方向2フラグがオフであれば、ステップS93で、右方向1フラグがオンであるかどうかを判断する。この右方向1フラグは、x軸方向の加速度axが第1閾値以上であり、第4閾値未満であるとことを示すフラグである。具体的には、図17の(III)で示すように、コントローラ22が、基本姿勢から右方向へ少し傾くように振られた状態を示す。
【0127】
ステップS93で“YES”であれば、つまり右方向1フラグがオンであれば、そのままステップS99に進む。一方、ステップS93で“NO”であれば、つまり右方向1フラグがオフであれば、ステップS95で、加速度axが1.2g以上であるかどうかを判断する。つまり、右方向の振り動作か否かを判断する。ステップS95で“NO”であれば、図19に示すように、そのまま図13に示した音楽演奏処理にリターンする。しかし、ステップS95で“YES”であれば、ステップS97で、右方向1フラグをオンして、ステップS99に進む。
【0128】
ステップS99では、加速度axが第4閾値(ここでは、1.6g)以上であるかどうかを判断する。ステップS99で“NO”であれば、つまり加速度axが1.6g未満であれば、そのままステップS105に進む。一方、ステップS99で“YES”であれば、つまり加速度axが1.6g以上であれば、ステップS101で、右方向2フラグをオンし、ステップS103で、右方向1フラグをオフし、ステップS105に進む。
【0129】
なお、ステップS103で、右方向1フラグをオフするのは、楽器Cまたは楽器Dのいずれが叩かれたかを正しく判断するためである。
【0130】
図19に示すように、ステップS105では、加速度axの増加が終了したかどうかを判断する。つまり、コントローラ22の右方向への振り動作が終了したかどうかを判断する。ステップS105で“NO”であれば、そのまま音楽演奏処理にリターンする。一方、ステップS105で“YES”であれば、つまり加速度axの増加が終了すれば、ステップS107で、右方向1フラグがオンであるかどうかを判断する。
【0131】
ステップS107で“YES”であれば、つまり右方向1フラグがオンであれば、ステップS109で、プレイヤから見て右側であり、ゲーム画面の中央よりに配置(表示)される楽器の音を鳴らす処理を実行して、ステップS113に進む。一方、ステップS107で“NO”であれば、つまり右方向2フラグがオンであれば、ステップS111で、プレイヤから見て右側であり、ゲーム画面の右端よりに配置(表示)される楽器の音を鳴らす処理を実行して、ステップS113に進む。そして、ステップS113で、バッファをクリアし、ステップS115で、右方向1フラグまたは右方向2フラグをオフして、音楽演奏処理にリターンする。
【0132】
なお、図示は省略するが、左方向についても同様に、2つの閾値を設定することにより、2つの楽器(図17に示す例では、A,B)のいずれが叩かれたかを正確に判断して、叩かれた楽器の音を鳴らす処理を実行することができる。
【0133】
また、縦方向についても3つ以上の楽器を配置して、いずれの楽器が叩かれたかを正確に判断して、叩かれた楽器の音を鳴らすことができる。上述の実施例で説明したように、縦方向では、振り動作が終了したときのz軸方向の加速度azの値で、コントローラ22の姿勢すなわち停止状態を判断して、いずれの楽器を叩いたかを判断するようにしてある。このため、コントローラ22の停止状態を判断するための閾値を、表示する楽器の個数に応じて設定すればよい。
【0134】
たとえば、図20に示すように、3つの楽器A,B,Cを縦に並べて配置(表示)する場合には、2つの閾値が設定される。具体的には、図20の(I)で示すように、閾値m(−0.75g)および閾値n(0.75g)が設定される。ただし、図20においては、加速度azの検出範囲は、−2.25g〜2.25gに設定してある。これは、図20の(I)に示すように、楽器A,B,Cを判別する場合の加速度azの範囲を均等にするためである。したがって、図16に示したように、ステップS69で“YES”となり、楽器の音を鳴らす場合には、加速度azの値を検出し、2つの閾値m,nを用いて、楽器A,B,Cのいずれが叩かれたかを判断するのである。具体的には、加速度azが閾値m以下である場合には、楽器Aが叩かれたと判断される。また、加速度azが閾値mより大きく閾値n以下である場合には、楽器Bが叩かれたと判断される。さらに、加速度azが閾値nより大きい場合には、楽器Cが叩かれたと判断される。
【0135】
このように、横方向の振り動作に対しては、1軸(たとえば、x軸)についての加速度に基づいて、振り方向および叩いた楽器を判別することができる。また、縦方向の振り動作に対しては、2軸のうちの一方の軸(たとえば、y軸)の加速度に基づいて下方向の振り動作を判定することができ、振り動作が終了した後に、他方の1軸(たとえば、z軸)についての加速度に基づいて、叩いた楽器を判断することができる。
【0136】
さらに、詳細な説明は省略するが、たとえば、ビデオゲーム装置が指示する楽器を叩いて音を鳴らすようなゲームでは、今回叩くべき楽器が叩かれたことを正確に判断するために、その都度、閾値を変化させることも可能である。たとえば、楽器Aを叩く場面においては、図20の(II)に示すように、たとえば、閾値mが−0.5gに設定(変更)される。つまり、楽器Aが叩かれたと判定される加速度azの範囲が大きくされる。また、楽器Bを叩く場面においては、図20の(III)に示すように、閾値mが−1.0gに設定され、閾値nが1.0gに設定される。つまり、楽器Bが叩かれたと判定される加速度azの範囲が大きくされる。さらに、楽器Cを叩く場面においては、図20の(IV)に示すように、閾値nが0.5gに設定される。つまり、楽器Cが叩かれたと判定される加速度azの範囲が大きくされる。
【0137】
このように、閾値を可変的に設定するようにすれば、比較的多くの楽器を表示する場合であっても、プレイヤが叩いた楽器を正確に判断することができる。
【図面の簡単な説明】
【0138】
【図1】図1はこの発明のゲームシステムの一実施例を示す図解図である。
【図2】図2は図1に示すゲームシステムの電気的な構成を示すブロック図である。
【図3】図3は図1に示すコントローラの外観構成の一例を示す斜視図である。
【図4】図4は図3に示すコントローラの電気的な構成を示すブロック図である。
【図5】図5は図1および図2に示すモニタに表示されるゲーム画面の一例を示す図解図およびコントローラの操作方法を説明するための図解図である。
【図6】図6はコントローラを横方向に振る動作を説明するための図解図である。
【図7】図7はコントローラを横方向に振る場合の振り方向の判定方法を説明するための図解図である。
【図8】図8はコントローラを縦方向に振る動作を説明するための図解図である。
【図9】図9はコントローラを縦方向に振る場合の振り方向の判定方法を説明するための図解図である。
【図10】図10はコントローラを縦方向に振った場合におけるy軸方向の加速度の時間変化を示すグラフである。
【図11】図11は図2に示すメインメモリのメモリマップの一例を示す図解図である。
【図12】図12は図2に示すARAMのメモリマップの一例を示す図解図である。
【図13】図13は図2に示すCPUの音楽演奏処理を示すフロー図である。
【図14】図14は図2に示すCPUの右方向についての振り方向判定および音出力処理を示すフロー図である。
【図15】図15は図2に示すCPUの左方向についての振り方向判定および音出力処理を示すフロー図である。
【図16】図16は図2に示すCPUの縦方向についての振り方向判定および音出力処理を示すフロー図である。
【図17】図17はこの発明の他のゲーム画面に表示される楽器の配列の例およびその操作方法を説明するための図解図である。
【図18】図18は図17に示すゲーム画面が表示されている場合における、CPUの右方向についての振り方向判定および音出力処理の一部を示すフロー図である。
【図19】図19は図17に示すゲーム画面が表示されている場合における、CPUの右方向についての振り方向判定および音出力処理の他の一部であって、図18に後続するフロー図である。
【図20】図20はこの発明のその他のゲーム画面に表示される楽器の配列の例およびゲームの異なる場面における閾値の設定方法を説明するための図解図である。
【符号の説明】
【0139】
10 …ゲームシステム
12 …ビデオゲーム装置
18 …光ディスク
22 …コントローラ
24 …受信ユニット
30 …メモリカード
34 …モニタ
34a …スピーカ
36 …CPU
38 …メモリコントローラ
40 …メインメモリ
42 …GPU
52 …DSP
54 …ARAM
62 …オーディオI/F
70 …マイコン
74 …加速度センサ
【技術分野】
【0001】
この発明は音出力プログラムおよび音出力装置に関し、特にたとえば、加速度センサを含む操作手段の振り動作に応じて楽器の音を出力する、音出力プログラムおよび音出力装置に関する。
【背景技術】
【0002】
この種の背景技術の一例が特許文献1に開示される。この特許文献1によれば、ドラム・スティックの一端部に3つの加速度センサが取り付けられ、X,Y,Zの3方向の加速度が検出される。また、各方向に対応して異なる楽器の音が割り当てられる。したがって、加速度センサの出力から振る動作を検出して、対応する楽器の音を出力することができる。
【0003】
また、背景技術の他の例が特許文献2に開示される。この特許文献2によれば、スティックの把持部に角度検出器が組み込まれる。この角度検出器を構成する複数の水銀スイッチのオン/オフ状態に基づいて角度検出器の地面に対する角度、すなわちスティックの振り上げ角度を検出し、この検出結果に対応した音高データを楽音信号形成回路へ出力する。
【特許文献1】特開昭63−132295号
【特許文献2】特開昭63−192096号
【発明の開示】
【発明が解決しようとする課題】
【0004】
しかし、特許文献1に記載の技術では、1つの振り方向に対して、1つの音色しか出力することができないため、スティックのような操作具の振り方が音色の出力に関連付けされることがない。このため、操作が単調になる恐れがある。
【0005】
また、特許技術文献2に記載の技術では、スティックの振り上げ角度(スティックの傾き)を水銀スイッチで検出するため、コストと、水銀の使用による危険性とを考慮すると、現実的な技術とは言えない。
【0006】
それゆえに、この発明の主たる目的は、新規な、音出力プログラムおよび音出力装置を提供することである。
【0007】
また、この発明の他の目的は、ユーザの振り動作に応じて出力される音を楽しむことができる、音出力プログラムおよび音出力装置を提供することである。
【課題を解決するための手段】
【0008】
本発明は、上記の課題を解決するために、以下の構成を採用した。なお、括弧内の参照符号および補足説明等は、本発明の理解を助けるために後述する実施の形態との対応関係を示したものであって、本発明を何ら限定するものではない。
【0009】
請求項1の発明は、加速度センサを含む操作手段を備える音出力装置の音出力プログラムであって、音出力装置のプロセサを、振り動作検出手段、振り動作終了判断手段、姿勢検出手段、および音出力手段として機能させる。振り動作検出手段は、加速度センサの出力に基づいて操作手段の振り動作を検出する。動作終了判断手段は、振り動作検出手段によって振り動作が検出された後に、加速度センサの出力に基づいて当該振り動作が終了したかどうかを判断する。姿勢検出手段は、振り動作終了判断手段によって振り動作が終了したと判断したとき、加速度センサの出力に基づいて操作手段の姿勢を検出する。音出力手段は、姿勢検出手段の検出結果に応じて、記憶手段に記憶された音色データに基づく音を出力する。
【0010】
請求項1の発明では、音出力プログラムは、加速度センサ(74)を含む操作手段(22)を備える音出力装置(12)に組み込まれる。この音出力プログラムは、音出力装置のプロセサ(36)を、振り動作検出手段(36,S23,S43,S61,S63,S65,S67,S69,S95,S99)、振り動作終了判断手段(36,S27,S47,S69,S105)、姿勢検出手段(36,S71)および音出力手段(36,S29,S49,S73,S75,S109,S111)として機能させる。振り動作検出手段は、加速度センサの出力に基づいて操作手段の振り動作を検出する。たとえば、横方向(左右)の振り動作または縦方向(上下)の振り動作が検出される。動作終了判断手段は、振り動作検出手段によって振り動作が検出された後に、加速度センサの出力に基づいて当該振り動作が終了したかどうを判断する。たとえば、加速度センサからの出力の変化を検出し、変化の方向が変わらない場合には、振り動作は終了していないと判断する。一方、加速度センサの出力の変化が無ければ、つまり加速度センサの出力が一定値またはほぼ一定値となれば、振り動作は終了したと判断する。姿勢検出手段は、振り動作終了判断手段によって振り動作が終了したと判断したとき、加速度センサの出力に基づいて操作手段の姿勢を検出する。たとえば、振り動作における操作手段の位置(高さ)を検出する。音出力手段は、姿勢検出手段の検出結果に応じて、記憶手段に記憶された音色データに基づく音を出力する。たとえば、操作手段の位置に応じた音が出力される。
【0011】
請求項1の発明によれば、操作手段の振り方に応じた音を出力するので、ユーザの振り動作に応じて出力される音を楽しむことができる。また、操作手段の振り方に応じて異なる音が出力されるため、ユーザが実際の楽器を演奏しているような感覚を味わうことができる。
【0012】
請求項2の発明は請求項1に従属し、加速度センサは多軸加速度センサであり、音出力プログラムは、プロセサを、多軸加速度センサの2つの軸についての加速度に基づいて振り動作の方向を判定する方向判定手段としてさらに機能させ、姿勢検出手段は、方向判定手段の判定結果が縦方向を示すとき、2つの軸に直交する軸の加速度に基づいて操作手段と水平面との縦方向の傾きを検出する縦方向傾き検出手段を含み、音出力手段は、縦方向傾き検出手段によって検出された傾きに従う縦方向の位置に応じた音色データを記憶手段から読み出す。
【0013】
請求項2の発明では、また、加速度センサは多軸加速度センサである。音出力プログラムは、音出力装置のプロセサを、方向判定手段(36、S21,S23,S25,S41,S43,S45,S61,S63,S65,S67,S69)としてさらに機能させる。方向判定手段は、多軸加速度センサの2つの軸(22のx軸,y軸)についての加速度に基づいて振り動作の方向を判定する。縦方向傾き検出手段(36,S71)は、方向判定手段の判定結果が縦方向を示すとき(S69で“YES”)、2つの軸(x軸,y軸)に直交する軸(z軸)の加速度に基づいて操作手段と水平面との縦方向の傾きを検出する。音出力手段は、縦方向傾き検出手段によって検出された傾きに従う縦方向の位置に応じた音色データを記憶手段から読み出す。たとえば、縦方向に操作手段を振った場合には、振り終わりの操作手段の傾きに応じて操作手段の縦方向の位置(高さ)が判断され、その高さに応じた音色の音が出力される。
【0014】
請求項2の発明によれば、操作手段を縦方向に振る場合には、その振り終わりの位置に応じた音を出力することができる。
【0015】
請求項3の発明は請求項1または2に従属し、音出力手段は、方向判定手段の判定結果が右方向を示すとき、右方向に応じた音色データを記憶手段から読み出し、方向判定手段の判定結果が左方向を示すとき、左方向に応じた音色データを記憶手段から読み出す。
【0016】
請求項3の発明では、音出力手段は、方向判定手段の判定結果が右方向を示すとき、右方向に応じた音色データを記憶手段から読み出す。一方、音出力手段は、方向判定手段の判定結果が左方向を示すとき、左方向に応じた音色データを記憶手段から読み出す。つまり、音出力手段によって、右方向の振り動作または左方向の振り動作に応じた音が出力される。
【0017】
なお、かかる場合には、振り終わりの姿勢は関係ないため、姿勢検出手段による処理は実行されない。
【0018】
請求項3の発明によれば、操作手段の左右の振り分けに応じた音を出力することができる。
【0019】
請求項4の発明は請求項2または3に従属し、音出力装置は表示手段をさらに備え、音出力プログラムは、プロセサを、振る動作を誘導する誘導画面を表示手段に表示する誘導画面表示手段として機能させ、方向判定手段の判定結果が示す方向は、誘導画面における方向に対応する。
【0020】
請求項4の発明では、音出力プログラムは、音出力装置のプロセサを、誘導画面表示手段(36、S3)としてさらに機能させる。誘導画面表示手段は、振る動作を誘導する誘導画面(100)を表示手段に表示する。方向判定手段の判定結果が示す方向(縦、右または左)は、誘導画面における方向に対応する。たとえば、振り動作の上下左右が誘導画面の上下左右に対応する。
【0021】
請求項4の発明によれば、振り動作の方向と誘導画面の方向とが対応するので、たとえば、誘導画面の上下左右に楽器の画像を表示しておけば、プレイヤは、その楽器の画像を見て操作手段の振り動作によって、所望の楽器を演奏することができる。つまり、振り動作に応じた音を楽しむことができる。
【0022】
請求項5の発明は、加速度センサを含む操作手段を備える音出力装置であって、振り動作検出手段、振り動作終了判断手段、姿勢検出手段、および音出力手段を備える。振り動作検出手段は、加速度センサの出力に基づいて操作手段の振り動作を検出する。振り動作終了判断手段は、振り動作検出手段によって振り動作が検出された後に、加速度センサの出力に基づいて当該振り動作が終了したかどうかを判断する。姿勢検出手段は、振り動作終了判断手段によって振り動作が終了したと判断したとき、加速度センサの出力に基づいて操作手段の姿勢を検出する。音出力手段は、姿勢検出手段の検出結果に応じて、記憶手段に記憶された音色データに基づく音を出力する。
【0023】
請求項5の発明においても、請求項1の発明と同様に、ユーザの振り動作に応じて出力される音を楽しむことができる。
【発明の効果】
【0024】
この発明によれば、操作手段の振り方に応じた音を出力するので、ユーザの振り動作に応じて出力される音を楽しむことができる。また、操作手段の振り方に応じて異なる音が出力されるため、ユーザが実際の楽器を演奏しているような感覚を味わうことができる。
【0025】
この発明の上述の目的,その他の目的,特徴および利点は、図面を参照して行う以下の実施例の詳細な説明から一層明らかとなろう。
【発明を実施するための最良の形態】
【0026】
図1を参照して、この発明の一実施例であるゲームシステム10は、ビデオゲーム装置12を含む。ビデオゲーム装置12は、音楽演奏プログラム(ゲームプログラム)が組み込まれることにより、音楽演奏装置(音出力装置)として機能する。このビデオゲーム装置12は、略立方体のハウジング14を含み、ハウジング14の上端には光ディスクドライブ16が設けられる。光ディスクドライブ16には、ゲームプログラム等を記憶した情報記憶媒体の一例である光ディスク18が装着される。ハウジング14の前面には複数の(実施例では4つの)コネクタ20が設けられる。これらコネクタ20は、ケーブル(図示せず)または受信ユニット24を介して、有線または無線によって、コントローラ22をビデオゲーム装置12に接続するためのものである。図1に示すように、この実施例では、コネクタ20に受信ユニット24が接続され、受信ユニット24を介して、無線でコントローラ22がビデオゲーム装置12に接続される。コントローラ22の詳細については後述する。
【0027】
なお、この実施例では、ビデオゲーム装置12とコントローラ22との間では無線通信を実行するため、本来的には「接続」の用語を用いるべきではない。しかしながら、ビデオゲーム装置12とコントローラ22との間での通信可能な連係状態を表す用語として、有線通信の場合の用語を借りて、便宜上「接続」と表現することとする。
【0028】
また、ビデオゲーム装置12のハウジング14の前面であり、コネクタ20の下方には、1つまたは複数の(この実施例では2つの)メモリスロット28が設けられる。このメモリスロット28にはメモリカード30が挿入される。メモリカード30は、光ディスク18から読み出したゲームプログラム等をローディングして一時的に記憶したり、このゲームシステム10を利用してプレイしたゲームのゲームデータ(ゲームの結果データまたは途中データ)を保存(セーブ)しておいたりするために利用される。
【0029】
さらに、ビデオゲーム装置12のハウジング14の後面には、AVケーブルコネクタ(図示せず)が設けられ、そのコネクタを用いて、AVケーブル32を通してビデオゲーム装置12にモニタ34を接続する。このモニタ34は典型的にはカラーテレビジョン受像機であり、AVケーブル32は、ビデオゲーム装置12からの映像信号をカラーテレビのビデオ入力端子に入力し、音声信号を音声入力端子に入力する。したがって、カラーテレビ(モニタ)34の画面上にたとえば3次元(3D)ビデオゲームのゲーム画像が表示され、左右のスピーカ34aからゲーム音楽や効果音などのステレオゲーム音声が出力される。
【0030】
このゲームシステム10において、ユーザまたはプレイヤがゲーム(または他のアプリケーション)をプレイするために、ユーザはまずビデオゲーム装置12の電源をオンし、次いで、ユーザはビデオゲーム(もしくはプレイしたいと思う他のアプリケーション)をストアしている適宜の光ディスク18を選択し、その光ディスク18をビデオゲーム装置12のディスクドライブ16にローディングする。応じて、ビデオゲーム装置12がその光ディスク18にストアされているソフトウェアに基づいてビデオゲームもしくは他のアプリケーションを実行し始めるようにする。ユーザはビデオゲーム装置12に入力を与えるためにコントローラ22を操作する。たとえば、入力手段26のどれかを操作することによってゲームもしくは他のアプリケーションをスタートさせる。入力手段26の他のものを動かすことによって、動画オブジェクト(プレイヤオブジェクト)を異なる方向に移動させ、または3Dのゲーム世界におけるユーザの視点(カメラ位置)を変化させることができる。
【0031】
図2は図1実施例のビデオゲームシステム10の電気的な構成を示すブロック図である。ビデオゲーム装置12には、CPU36が設けられる。このCPU36は、ビデオゲーム装置12の全体的な制御を担当する。CPU36は、ゲームプロセサとして機能し、このCPU36には、バスを介して、メモリコントローラ38が接続される。メモリコントローラ38は主として、CPU36の制御の下で、バスを介して接続されるメインメモリ40の書込みや読出しを制御する。このメモリコントローラ38にはGPU(Graphics Processing Unit) 42が接続される。
【0032】
GPU42は、描画手段の一部を形成し、たとえばシングルチップASICで構成され、メモリコントローラ38を介してCPU36からのグラフィクスコマンド(作画命令)を受け、そのコマンドに従って、ジオメトリユニット44およびレンダリングユニット46によって3Dのゲーム画像を生成する。つまり、ジオメトリユニット44は、3次元座標系の各種オブジェクト(複数のポリゴンで構成されている。そして、ポリゴンとは少なくとも3つの頂点座標によって定義される多角形平面をいう。)の回転,移動,変形等の座標演算処理を行う。レンダリングユニット46は、各種オブジェクトの各ポリゴンにテクスチャ(模様画像)を貼り付けるなどの画像生成処理を施す。したがって、GPU42によって、ゲーム画面上に表示すべき3Dの画像データが作成され、その画像データがフレームバッファ48内に記憶される。
【0033】
なお、GPU42が作画コマンドを実行するにあたって必要なデータ(プリミティブまたはポリゴンやテクスチャ等)は、GPU42がメモリコントローラ38を介して、メインメモリ40から入手する。
【0034】
フレームバッファ48は、たとえばラスタスキャンモニタ34の1フレーム分の画像データを描画(蓄積)しておくためのメモリであり、GPU42によって1フレーム毎に書き換えられる。具体的には、フレームバッファ48は、1画素(ピクセル)毎に、画像の色情報を順序立てて記憶している。ここで、色情報は、R,G,B,Aについてのデータであり、たとえば、8ビットのR(赤)データ、8ビットのG(緑)データ、8ビットのB(青)データおよび8ビットのA(アルファ)データである。なお、Aデータは、マスク(マット画像)についてのデータである。後述のビデオI/F58がメモリコントローラ38を介してフレームバッファ48のデータを読み出すことによって、モニタ34の画面上に3Dのゲーム画像が表示される。
【0035】
また、Zバッファ50は、フレームバッファ48に対応する画素数×1画素当たりの奥行きデータのビット数に相当する記憶容量を有し、フレームバッファ48の各記憶位置に対応するドットの奥行き情報または奥行きデータ(Z値)を記憶するものである。
【0036】
なお、フレームバッファ48およびZバッファ50は、ともにメインメモリ40の一部を用いて構成されてもよく、また、これらはGPU42の内部に設けられてもよい。
【0037】
メモリコントローラ38はまた、DSP(Digital Signal Processor)52を介して、オーディオ用のRAM(以下、「ARAM」という。)54に接続される。したがって、メモリコントローラ38は、メインメモリ40だけでなく、サブメモリとしてのARAM54の書込みおよび/または読出しを制御する。
【0038】
DSP52は、サウンドプロセサとして働き、メインメモリ40に記憶されたサウンドデータ(図示せず)を用いたり、ARAM54に書き込まれている音波形(音色)データ(図11参照)を用いたりして、ゲームに必要な音、音声或いは音楽に対応するオーディオデータを生成する。
【0039】
メモリコントローラ38は、さらに、バスによって、各インタフェース(I/F)56,58,60,62および64に接続される。コントローラI/F56は、ビデオゲーム装置12に受信ユニット24を介して接続されるコントローラ22のためのインタフェースである。具体的に言うと、受信ユニット24は、コントローラ22から送信される入力情報データを受信し、コントローラI/F56は、受信ユニット24によって受信された入力情報データを、メモリコントローラ38を通してCPU36に与える。ただし、この実施例では、入力情報データは、後述する操作データおよび加速度データの少なくとも一方を含むデータを意味する。ビデオI/F58は、フレームバッファ48にアクセスし、GPU42で作成した画像データを読み出して、画像信号または画像データ(ディジタルRGBAピクセル値)をAVケーブル32(図1)を介してモニタ34に与える。
【0040】
外部メモリI/F60は、ビデオゲーム装置12の前面に挿入されるメモリカード30(図1)をメモリコントローラ38に連係させる。それによって、メモリコントローラ38を介して、CPU36がこのメモリカード30にデータを書込み、またはメモリカード30からデータを読み出すことができる。オーディオI/F62は、メモリコントローラ38を通してDSP52から与えられるオーディオデータまたは光ディスク18から読み出されたオーディオストリームを受け、それらに応じたオーディオ信号(音声信号)をモニタ34のスピーカ34aに与える。
【0041】
そして、ディスクI/F64は、ディスクドライブ16をメモリコントローラ38に接続し、したがって、CPU36がディスクドライブ16を制御する。このディスクドライブ16によって光ディスク18から読み出されたプログラムデータやテクスチャデータ等が、CPU36の制御の下で、メインメモリ40に書き込まれる。
【0042】
図3(A)および図3(B)は、コントローラ22の外観構成を示す斜視図である。図3(A)および図3(B)を参照して、コントローラ22は、たとえばプラスチック成型によって形成されたハウジング22aを有している。ハウジング22aは、略直方体形状であり、ユーザが片手で把持可能な大きさである。上述したように、ハウジング22a(コントローラ22)には、操作手段(複数のボタンないしスイッチ)26が設けられる。具体的には、図3(A)に示すように、ハウジング22a(コントローラ22)の上面には、十字キー26a,Xボタン26b,Yボタン26c,Aボタン26d,セレクトスイッチ26e,メニュー(ホーム)スイッチ26f,スタートスイッチ26gおよび電源スイッチ26hが設けられる。また、図3(B)に示すように、ハウジング22aの下面に凹部が形成されており、この凹部の後方傾斜面に、Bトリガースイッチ26iが設けられる。
【0043】
十字キー26aは、4方向プッシュスイッチであり、矢印で示す4つの方向、前(または上)、後ろ(または下)、右および左の操作部を含む。この操作部のいずれか1つを操作することによって、プレイヤによって操作可能なキャラクタまたはオブジェクト(プレイヤキャラクタまたはプレイヤオブジェクト)の移動方向を指示したり、カーソルの移動方向を指示したりすることができる。
【0044】
Xボタン26bおよびYボタン26cは、それぞれ、押しボタンスイッチであり、3次元ゲーム画像を表示する際の視点位置や視点方向、すなわち仮想カメラの位置や画角を調整するために使用される。または、Xボタン26bおよびYボタン26cは、Aボタン26dおよびBトリガースイッチ26iと同じ操作或いは補助的な操作をする場合に用いることもあり得る。
【0045】
Aボタンスイッチ26dは、押しボタンスイッチであり、プレイヤキャラクタまたはプレイヤオブジェクトに、方向指示以外の動作、すなわち、打つ(パンチ)、投げる、つかむ(取得)、乗る、ジャンプするなどの任意のアクションをさせるために使用される。たとえば、アクションゲームにおいては、ジャンプ、パンチ、武器を動かすなどを指示することができる。また、ロールプレイングゲーム(RPG)やシミュレーションRPGにおいては、アイテムの取得、武器やコマンドの選択および決定等を指示することができる。
【0046】
セレクトスイッチ26e、メニュースイッチ26f、スタートスイッチ26gおよび電源スイッチ26hもまた、押しボタンスイッチである。セレクトスイッチ26eは、ゲームモードを選択するために使用される。メニュースイッチ26fは、ゲームメニュー(メニュー画面)を表示するために使用される。スタートスイッチ26gは、開始(再開)したり、一時提示したりするなどのために使用される。電源スイッチ26hは、ビデオゲーム装置12の電源を遠隔操作によってオン/オフするために使用される。
【0047】
なお、この実施例では、コントローラ22自体をオン/オフするための電源スイッチは設けておらず、コントローラ22の入力手段26のいずれかを操作することによってコントローラ22はオンとなり、一定時間(たとえば、30秒)以上操作しなければ自動的にオフとなるようにしてある。
【0048】
Bトリガースイッチ26iもまた、押しボタンスイッチであり、主として、弾を撃つなどのトリガーを入力するために使用される。一定の場合には、通常のBボタンと同様に機能し、Aボタン26dによって決定したアクションを取り消すなどのために使用される。
【0049】
また、コントローラ22には、外部拡張コネクタ22bおよびインジケータ22cが設けられる。外部拡張コネクタ22bは、図示しない別のコントローラを接続するためなどに使用される。インジケータ22cは、たとえば、4つのLEDで構成され、4つのうちのいずれか1つを点灯することにより、コントローラ22の識別情報(コントローラ番号)を示す。
【0050】
なお、図3に示したコントローラ22の形状や、各入力手段26の形状、数および設置位置等は単なる一例に過ぎず、それらが適宜改変された場合であっても、本発明を実現できることは言うまでもない。
【0051】
図4はコントローラ22の電気的な構成を示すブロック図である。この図4を参照して、コントローラ22はマイコン70を含み、このマイコン70には、内部バス(図示せず)によって、入力手段26、メモリ72、加速度センサ74および無線モジュール76が接続される。また、無線モジュール76には、アンテナ78が接続される。
【0052】
なお、図示は省略するが、上述した拡張コネクタ22bおよびインジケータ22c(LED)もインタフェースまたはドライバを介してマイコン70に接続される。
【0053】
マイコン70は、コントローラ22の全体制御を司り、入力手段26および加速度センサ74のような入力手段によって入力された情報(入力情報)を、入力情報データとして無線モジュール76およびアンテナ78を介してビデオゲーム装置12に送信(入力)する。このとき、マイコン70は、メモリ72を作業領域ないしバッファ領域として用いる。
【0054】
上述した入力手段26(26a−26i)からの操作信号(操作データ)は、マイコン70に入力され、マイコン70は操作データを一旦メモリ72に記憶する。
【0055】
また、加速度センサ74は、コントローラ22の縦方向(図3に示すy軸方向)、横方向(図3に示すx軸方向)および前後方向(図3に示すz軸方向)の3軸で各々の加速度を検出する。この加速度センサ74は、典型的には、静電容量式の加速度センサであるが、他の方式のものを用いるようにしてもよい。図3(A)および図3(B)からも分かるように、この実施例では、コントローラ22の上面の垂直上方を、y軸の正の方向とし、y軸に垂直であり、コントローラ22の右方向をx軸の正の方向とし、x軸とy軸とに垂直であり、コントローラ22の長手方向であり、Xボタン26bから十字スイッチ26aに向かう方向をz軸の正の方向としてある。
【0056】
たとえば、加速度センサ74は、第1所定時間(たとえば、200msec)毎に、x軸,y軸,z軸の各々についての加速度(ax,ay,az)を検出し、検出した加速度のデータ(加速度データ)をマイコン70に入力する。たとえば、加速度センサ74は、各軸方向の加速度を、−2.0g〜2.0g(gは重力加速度である。以下、同じ。)の範囲で検出する。マイコン70は、加速度センサ74から与えられる加速度データを、第2所定時間(たとえば、1フレーム:画面更新単位時間(1/60sec))毎に検出し、一旦メモリ72の記憶する。マイコン70は、操作データおよび加速度データの少なくとも一方を含む入力情報データを作成し、作成した入力情報データを、第3所定時間(1フレーム)毎にビデオゲーム装置12に送信する。
【0057】
なお、図3では省略したが、この実施例では、加速度センサ74は、ハウジング22aの内部であり、十字キー26aが配置される付近に設けられる。
【0058】
無線モジュール76は、たとえばBluetooth(登録商標)の技術を用いて、所定周波数の搬送波を入力情報データで変調し、その微弱電波信号をアンテナ78から放射する。つまり、入力情報データは、無線モジュール76によって微弱電波信号に変調されてアンテナ78(コントローラ22)から送信される。この微弱電波信号が上述したビデオゲーム装置12に装着された受信ユニット24によって受信される。受信された微弱電波は、復調および復号の処理を施され、したがって、ビデオゲーム装置12(CPU36)は、コントローラ22からの入力情報データを取得することができる。そして、CPU36は、取得した入力情報データとプログラム(ゲームプログラム)とに従ってゲーム処理を行う。
【0059】
図5(A)は、モニタ34に表示される演奏画面(ゲーム画面)100の一例を示す。また、図5(B)は、図5(A)に示すゲーム画面100を見て、疑似的に楽器を演奏する場合におけるコントローラ22の操作方法の一例を示す。すなわち、プレイヤは、ゲーム画面100に誘導されて、コントローラ22を操作する。
【0060】
図5(A)に示すように、ゲーム画面100では、4つの楽器の画像102,104,106,108が表示される。たとえば、ゲーム画面100の上部には、クラッシュシンバルの画像102が表示される。また、ゲーム画面100の左部には、ハイハットシンバルの画像104が表示される。さらに、ゲーム画面100の下部には、バスドラムの画像106が表示される。さらにまた、ゲーム画面100の右部には、スネアドラムの画像108が表示される。
【0061】
プレイヤは、コントローラ22を横方向(右方向または左方向)または縦方向(上方向または下方向)に振ることにより、ゲーム画面100に表示される楽器を叩く(打撃する)。ただし、この実施例では、コントローラ22を用いてゲーム画面100に表示される楽器を叩くように操作するため、縦方向においては、下方向に振る場合にのみ、楽器を叩いたと判断するようにしてある。なお、コントローラ22を縦に振る場合に、上方向へ振る動作であるか、下方向へ振る動作であるかの判定方法は後で詳細に説明する。
【0062】
たとえば、プレイヤがコントローラ22を右方向に振ると、スネアドラム(画像108)を叩くことができる。また、プレイヤがコントローラ22を左方向に振ると、ハイハットシンバル(画像104)を叩くことができる。さらに、プレイヤがコントローラ22を下方向に振り、比較的高い位置(上部)で振り動作を止めると、クラッシュシンバル(画像102)を叩くことができる。さらにまた、プレイヤがコントローラ22を下方向に振り、水平位置付近ないしそれよりも低い位置(下部)で振り動作を止めると、バスドラム(画像106)を叩くことができる。
【0063】
以下、図6−図10を参照して、コントローラ22の操作方法(振り動作)および振り方向の判定方法について説明する。図6に示すように、横方向(左右)にコントローラ22を振る場合には、コントローラ22の上面側の向きが実空間座標系のZ軸のマイナス方向に設定される。つまり、コントローラ22の上面は、図5(B)に示したゲーム画面100(モニタ34)と同じ向きである。したがって、図6に示すように、コントローラ22を横方向に振る場合には、コントローラ22は、実空間座標系のXY平面内でZ軸を中心として回動される。具体的には、コントローラ22を右方向に振る場合には、コントローラ22のz軸のプラス方向が実空間座標系のX軸のプラス方向と成す角度が小さくなるように、コントローラ22が傾けられる。一方、コントローラ22を左方向に振る場合には、コントローラ22のz軸のプラス方向が実空間座標系のX軸のマイナス方向と成す角度が小さくなるように、コントローラ22が傾けられる。
【0064】
ここで、図6で示すように、この実施例では、コントローラ22のx軸のプラス方向が実空間座標系のX軸のプラス方向と一致し、コントローラ22のy軸のプラス方向が実空間座標系のZ軸のマイナス方向と一致し、コントローラ22のz軸のプラス方向がY軸のプラス方向と一致する場合を、コントローラ22の基準姿勢とする。ただし、基本姿勢では、コントローラ22は、十字キー26aが上側になるように、その方向(姿勢)が決定される。また、この実施例では、簡単のため、基準姿勢からコントローラ22を振る場合について説明するが、実際には、基準姿勢からコントローラ22を振る必要はない。以下、同じ。
【0065】
また、図7に示すように、下方向にコントローラ22を振る場合には、コントローラ22は、実空間座標系におけるYZ平面内でX軸を中心に回動される。図7の(1)では、コントローラ22を下向きに振り、比較的高い位置(上部)で止めた状態を示す。つまり、コントローラ22は、そのz軸が実空間座標系のY軸に対して少し傾いた位置で停止される。このような場合に、上述したように、ゲーム画面100の上部に表示されたクラッシュシンバルを叩くことができる。一方、図7の(2)では、コントローラ22を下向きに振り、水平位置で止めた状態を示す。つまり、コントローラ22は、そのz軸が実空間座標系のZ軸に平行になるまで傾けた位置で停止される。このような場合に、上述したように、ゲーム画面100の下部に表示されたバスドラムを叩くことができる。
【0066】
図8(A1)は、コントローラ22を右方向に振る場合のコントローラ22の軸方向の変化を示す。上述したように、コントローラ22を右方向に振る場合には、コントローラ22のz軸のプラス方向が実空間座標系のX軸のプラス方向と成す角度が小さくなるように、コントローラ22が傾けられる。ただし、図8(A1)では、コントローラ22を基本姿勢から右方向に振った場合についての軸方向の変化が示される。かかる場合には、コントローラ22のx軸およびy軸に現れる加速度ax,azは、図8(A2)に示すように、変化する。つまり、コントローラ22を振る前では、コントローラ22には、z軸のマイナス方向に重力加速度gの大きさの加速度azが現れる。そして、コントローラ22を振った後では、x軸のプラス方向およびz軸のマイナス方向に、振り動作が終了したときのコントローラ22の傾きに応じて重力加速度gの大きさが分解された加速度axおよび加速度azが現れる。ただし、図8(A1)からも分かるように、コントローラ22を右方向に振る場合には、コントローラ22のy軸は、重力が働く実空間座標系のY軸に直交するため、y軸方向には加速度は現れない(ay=0)。これは、コントローラ22を左方向に振る場合も同じである。
【0067】
また、図8(B1)は、コントローラ22を左方向に振る場合のコントローラ22の軸方向の変化を示す。上述したように、コントローラ22を左方向に振る場合には、コントローラ22のz軸のプラス方向が実空間座標系のX軸のマイナス方向と成す角度が小さくなるように、コントローラ22が傾けられる。ただし、図8(A1)では、コントローラ22を基本姿勢から左方向に振った場合についての軸方向の変化が示される。かかる場合には、コントローラ22のx軸およびy軸に現れる加速度ax,azは、図8(B2)に示すように、変化する。つまり、コントローラ22を振る前では、コントローラ22には、z軸のマイナス方向に重力加速度gの大きさの加速度azが現れる。そして、コントローラ22を振った後では、x軸のマイナス方向およびz軸のマイナス方向に、振り動作が終了したときのコントローラ22の傾きに応じて重力加速度gの大きさが分解された加速度axおよび加速度azが現れる。
【0068】
したがって、コントローラ22の振り終わりを検出して、振り終わり時におけるコントローラ22のx軸の加速度axの数値またはその符号(プラス,マイナス)によって、右方向または左方向に振ったことを判定することが考えられる。
【0069】
しかし、上述したように、この実施例では、コントローラ22で楽器を叩くように操作するため、振り終わり時におけるコントローラ22のx軸方向の加速度axの数値またはその符号のみで、右方向または左方向の振り動作を判定した場合には、プレイヤが叩き操作をしていないにも拘わらず、誤って叩き操作をしたと判断してしまう恐れがある。たとえば、ゆっくりとコントローラ22を右方向または左方向に傾けた場合であっても、コントローラ22のx軸方向には、重力加速度gによって、加速度axが現れるからである。また、単なる手ぶれを叩き操作(振り動作)と判断しないようにするためでもある。
【0070】
そこで、この実施例では、右方向または左方向の振り動作は、振り動作の初期ないしは途中におけるx軸方向の加速度axの値に応じて、右方向または左方向への振り動作を判定するようにしてある。具体的には、重力加速度gを考慮して、x軸の加速度axが第1閾値(たとえば、1.2g)以上になると、右方向への振り動作であると判定する。また、同様に、重力加速度gを考慮して、x軸の加速度axが第2閾値(たとえば、−1.2g)以下になると、左方向への振り動作であると判定する。
【0071】
なお、詳細な説明は省略するが、コントローラ22を右方向および左方向に振る場合には、遠心力による加速度がz軸方向に現れるが、これはコントローラ22を縦方向に振る場合も同じであるため、z軸方向の加速度azによって、コントローラ22を振る方向を判定することはできない。
【0072】
また、図示は省略するが、右方向または左方向にコントローラ22を振る場合には、その振り終わりを加速度axの増加または減少が終了したか否かで判断する。そして、コントローラ22を振り終わったときに、楽器を叩いたと判定して(当たったと判定して)、コントローラ22を振った方向に応じた楽器の音を出力したり、ゲーム画面100の表示を更新したりする。
【0073】
図9(A1)は、コントローラ22を下方向に振り、上部で止めた場合のコントローラ22の軸方向の変化を示す。つまり、図7の(1)に示したように、コントローラ22は、基本姿勢から実空間座標系のX軸を中心に回動するように振られ、そのz軸が実空間座標系のY軸に対して少し傾いた位置で停止される。かかる場合には、コントローラ22のy軸およびz軸に現れる加速度ay,azは、図9(A2)に示すように、変化する。つまり、コントローラ22を振る前では、コントローラ22には、z軸のマイナス方向に重力加速度gの大きさの加速度azが現れる。そして、コントローラ22を振った後では、y軸のマイナス方向およびz軸のマイナス方向に、振り動作が終了したときのコントローラ22の傾きに応じて重力加速度gの大きさが分解された加速度ayおよび加速度azが現れる。ただし、図9(A1)からも分かるように、コントローラ22を下方向に振る場合には、コントローラ22のx軸は、重力が働く実空間座標系のY軸に直交するため、x軸方向には加速度は現れない(ax=0)。
【0074】
また、図9(B1)は、コントローラ22を下方向に振り、水平位置で止めた場合のコントローラ22の軸方向の変化を示す。つまり、図7の(2)に示したように、コントローラ22は、基本姿勢から実空間座標系のX軸を中心に回動するように振られ、そのz軸が実空間座標系のZ軸に平行になるまで傾けた位置で停止される。かかる場合には、コントローラ22のy軸およびz軸に現れる加速度ay,azは、図9(B2)に示すように、変化する。つまり、コントローラ22を振る前では、コントローラ22には、z軸のマイナス方向に重力加速度gの大きさの加速度azが現れる。そして、コントローラ22を振った後では、y軸のマイナス方向に、重力加速度gの大きさの加速度ayが現れる。ただし、コントローラ22のz軸は、重力が働く実空間座標系のY軸に直交するため、z軸方向には加速度は現れない(az=0)。
【0075】
ここで、コントローラ22を下方向に振る場合には、コントローラ22を横方向に振る場合とは異なり、比較的上部でコントローラ22を止める場合および水平位置付近或いは下部でコントローラ22を止める場合のいずれの場合であっても、コントローラ22を同じ方向に振る。このため、コントローラ22を比較的上部で止めたか、水平位置付近或いは下部で止めたかを判定するには、横方向に振る場合のような判定方法を適用することはできない。つまり、たとえば、y軸方向の加速度ayのみで、その判定をすることは難しいと言える。
【0076】
したがって、この実施例では、下方向にコントローラ22を振った場合には、その振り終わりを判断し、振り終わったときのコントローラ22の姿勢に応じて、比較的上部で止めたか、水平位置付近或いは下部で止めたかを判別するようにしてある。具体的には、図9(A2)および図9(B2)を比較して分かるように、コントローラ22の振り終わりにおけるz軸方向の加速度azに基づいて、その姿勢が判断される。つまり、図9(A2)に示すように、比較的上部でコントローラ22が停止された場合には、その停止状態において、重力による加速度azがマイナス方向に大きく現れる。一方、図9(B)に示すように、水平位置でコントローラ22が停止された場合には、その停止状態において、z軸のマイナス方向に現れる加速度azは、図9(A)に示す場合よりも大きい。図示は省略するが、コントローラ22が水平位置よりもさらに下方向に振られた位置で停止された場合には、z軸のプラス方向に加速度azが現れる。つまり、さらに加速度azは大きくなる。
【0077】
したがって、この実施例では、コントローラ22を下方向に振る場合には、第3閾値(たとえば、−0.5g)が設定され、この第3閾値を用いて、コントローラ22の停止位置を判定する。具体的には、コントローラ22が停止した時のz軸方向の加速度azを検出する。そして、加速度azが第3閾値よりも小さい場合には、比較的上部でコントローラ22が停止されたと判断する。逆に、加速度azが第3閾値以上である場合には、水平位置付近または下部でコントローラ22が停止されたと判断する。
【0078】
なお、縦方向にコントローラ22を振っているか否かは、y軸方向の加速度の変化によって知ることができる。
【0079】
また、図10は、コントローラ22を下から上向き(上向き)に振った後に、コントローラ22を上から下向き(下向き)に振った場合に、y軸方向に現れる加速度ayの時間変化を示すグラフである。このグラフは、実施例で示されるコントローラ22の実機を実際に上下(縦方向)に振った場合に得られたものである。
【0080】
図10に示すグラフから分かるように、コントローラ22を上向きに振る場合と、コントローラ22を下向きに振る場合とでは、y軸方向に現れる加速度ayの時間変化は、いずれも、負のピーク値が現れた後に、正のピーク値が現れる。つまり、互いに類似している。
【0081】
ここで、上述したように、この実施例では、ゲーム画面100に表示された楽器を叩くように、コントローラ22を振る。したがって、コントローラ22を上向きに振った場合に、楽器の音が鳴ると、プレイヤは違和感を覚えてしまう。このため、この実施例では、コントローラ22を縦方向に振る場合には、コントローラ22を下向きに振ったときだけ、楽器の音を鳴らすようにしてある。
【0082】
この実施例では、図10の丸印Pで示す局所的なピーク値を検出した場合に、コントローラ22が下向きに振られたと判定するようにしてある。その後、丸印Qで示す負のピーク値を検出したときに、コントローラ22の振り終わりを判断するようにしてある。
【0083】
具体的には、コントローラ22のy軸方向の加速度ayが−0.3g以上になった後に、所定値(0.8g)を超えることなく、丸印Qで示す負のピーク値を検出したかどうかを判断する。ここで、負のピーク値を検出することなく、加速度ayが所定値を超えた場合には、丸印Pで示すピーク値が無いため、上方向への振り動作であると判定する。一方、負のピーク値を検出すると、下方向への振り動作であると判定する。
【0084】
また、負のピーク値は、最新(現フレーム)の加速度ayを含む過去3フレーム分の加速度ayを用いて検出される。具体的に説明すると、3つの加速度ayの値をα,β,γ(いずれも負の数)とし、α,β,γの順で検出されたと仮定する。つまり、γが現フレームの加速度ayである。このとき、数1を満たせば、負のピーク値が検出される。
【0085】
[数1]
α−β>0かつγ−β>0
なお、この実施例では、丸印Qで示す負のピーク値を検出したときに、コントローラ22の振り終わりを判断するようにした。しかし、これに限定される必要はなく、丸印Rで示すピーク値を検出したときに、コントローラ22の振り終わりを判断するようにしてもよい。いずれを選択するかは、開発者ないし設計者が任意に選択すべき事項である。
【0086】
図11は、図2に示したメインメモリ40のメモリマップである。この図11を参照して、メインメモリ40は、プログラム記憶領域90およびデータ記憶領域92を含む。プログラム記憶領域90には、音楽演奏プログラム(ゲームプログラム)が記憶され、この音楽演奏プログラムは、加速度検出プログラム90a、振り方向判定プログラム90b、音色選択プログラム90c、音出力プログラム90d、画像生成プログラム90eおよび画像表示プログラム90fなどによって構成される。
【0087】
加速度検出プログラム90aは、コントローラ22から入力される入力情報データから加速度データを検出し、検出した加速度データをデータ記憶領域92に時系列に従って記憶(一時記憶)するためのプログラムである。振り方向判定プログラム90bは、加速度データに基づいてコントローラ22の振り方向を判定するためのプログラムである。また、この振り方向判定プログラム90bは、振り方向の判定に際して、後述する右方向フラグ92b、左方向フラグ92cおよび下方向フラグ92dの各々の成立(オン)および不成立(オフ)を実行する。
【0088】
音色選択プログラム90cは、コントローラ22によって叩かれた楽器すなわち画像(102,104,106,108)を判定(当たり判定)し、判定結果に応じた楽器の音色を選択するためのプログラムである。音出力プログラム90dは、音色選択プログラム90cに従って選択された音色の音を出力するためのプログラムである。また、音出力プログラム90dは、必要に応じて、BGMやオーケストラのような音も出力する。
【0089】
なお、図示は省略するが、BGMやオーケストラのような音に対応するデータ(サウンドデータ)は、データ記憶領域92に記憶される。
【0090】
画像生成プログラム90eは、後述する画像データ92fを用いて、楽器のようなオブジェクトを含むゲーム画像を生成するためのプログラムである。また、画像生成プログラム90eは、アニメーションデータに従って楽器の画像(102,104,106,108)を変化させる。画像表示プログラム90fは、画像生成プログラム90eに従って生成されたゲーム画像をモニタ34に表示(出力)するためのプログラムである。
【0091】
なお、図示は省略するが、プログラム記憶領域90には、バックアッププログラムなども記憶される。バックアッププログラムは、音楽演奏ゲームの途中データや結果データをメモリカード30にセーブするためのプログラムである。
【0092】
データ記憶領域92には、加速度データ92a、右方向フラグ92b、左方向フラグ92c、下方向フラグ92dおよび画像データ92eなどが記憶される。
【0093】
加速度データ92aは、コントローラ22に対して固定的に決定される各軸(x軸,y軸,z軸)に現れる加速度(ax,ay,az)の数値データであり、上述したように、加速度検出プログラム90aに従って時系列に記憶される。ただし、この実施例では、加速度ax,ay,azは、重力加速度gを用いて現される。右方向フラグ92bは、コントローラ22が右方向に振られたか否かを判断するためのフラグであり、振り方向判定プログラム90bに従ってオン/オフされる。たとえば、右方向フラグ92b(他のフラグ92c,92dも同じ。)は、1ビットのレジスタで構成され、フラグがオンされると、レジスタにデータ値「1」が設定され、フラグがオフされると、レジスタにデータ値「0」が設定される。たとえば、右方向フラグ92bは、コントローラ22の振り方向が右方向であると判定されたときにオンされ、それ以外ではオフされる。
【0094】
左方向フラグ92bは、コントローラ22が左方向に振られたか否かを判断するためのフラグであり、振り方向判定プログラム90bに従ってオン/オフされる。たとえば、左方向フラグ92bは、コントローラ22の振り方向が左方向であると判定されたときにオンされ、それ以外ではオフされる。下方向フラグ90dは、コントローラ22が下向きに振られたか否かを判断するためのフラグであり、振り方向判定プログラム90bに従ってオン/オフされる。たとえば、下方向フラグ90dは、コントローラ22の振り方向が下方向であると判定されたときにオンされ、それ以外ではオフされる。
【0095】
画像データ92eは、上述したように、ゲーム画像を生成するためのデータ(ポリゴンデータ、テクスチャデータなど)である。また、画像データ92eには、オブジェクト(たとえば、楽器)をアニメーション表示するためのアニメーションデータも含まれる。
【0096】
なお、図示は省略するが、データ記憶領域92には、他のデータや他のフラグなども記憶される。
【0097】
図12は図2に示したARAM54のメモリマップを示す。ARAM54は、音色データ(音波形データ)を記憶する。たとえば、音色データは、光ディスク18から読み出され、一旦メインメモリ40の所定領域に書き込まれた後、一度に全部または部分的かつ順次的に、ARAM54に書き込まれる。図12に示すように、ARAM54には、スネアドラムの音色についての音色Aデータ54a、クラッシュシンバルの音色についての音色Bデータ54b、ハイハットシンバルの音色についての音色Cデータ54cおよびバスドラムの音色についての音色Dデータ54dなどが記憶される。したがって、CPU36は、上述した音出力プログラム90cに従って、音色選択プログラム90cに従って選択された音色データ54a,54b,54c,54d,…を読み出し、読み出した音色データ54a,54b,54c,54d,…をDSP44に与える。DSP44は、CPU36の指示の下、音色データ54a,54b,54c,54dに所定の処理を施して、メインメモリ40およびオーディオI/F62を介してスピーカ34aに出力する。
【0098】
具体的には、図2に示すCPU36が図13に示すフロー図に従って音楽演奏処理を実行する。図13に示すように、CPU36は音楽演奏処理を開始すると、ステップS1で、初期化処理を実行する。つまり、CPU36は、各フラグ92b,92c,92dをオフしたり、バッファ領域をクリアしたりする。次のステップS3では、演奏画面すなわちゲーム画面100を生成し、モニタ34に表示する。続いて、ステップS5では、加速度の検出を開始する。つまり、CPU36は、コントローラ22から入力される入力情報データから加速度データ92aを検出し、検出した加速度データ92aのデータ記憶領域92への記憶を開始する。したがって、図示は省略するが、音楽演奏処理の実行中では、加速度データ92aが時系列に従ってデータ記憶領域92に記憶される。
【0099】
続くステップS7では、後述する振り方向判定および音出力処理(図14−図16参照)を実行する。そして、ステップS9では、演奏終了かどうかを判断する。ここでは、CPU36は、プレイヤから音楽演奏の終了指示があるかどうかを判断する。ただし、この実施例では、コントローラ22から入力情報データが入力されない状態が所定時間以上続いた場合にも、音楽演奏を終了したと判断するようにしてある。ステップS9で“NO”であれば、つまり演奏終了でなければ、そのままステップS7に戻る。一方、ステップS9で“YES”であれば、つまり演奏終了であれば、音楽演奏処理を終了する。
【0100】
図13のステップS7に示した振り方向判定および音出力処理は、図14−図16の各々に示すフロー図に従って並列的に(マルチタスクで)実行される。図14は、コントローラ22を右に振る動作であるか否かを判定し、判定結果に応じた音を出力するための、振り方向判定および音出力処理を示すフロー図である。
【0101】
図14に示すように、CPU36は、振り方向判定および音出力処理を開始すると、ステップS21で、右方向フラグ92bがオンであるかどうかを判断する。ステップS21で“YES”であれば、つまり右方向フラグ92bがオンであれば、そのままステップS27に進む。しかし、ステップS21で“NO”であれば、つまり右方向フラグ92bがオフであれば、ステップS23で、コントローラ22のx軸方向の加速度axが1.2g以上であるかどうかを判断する。
【0102】
ステップS23で“NO”であれば、つまり加速度axが1.2g未満であれば、コントローラ22を右方向に振っていないと判定して、図13に示した音楽演奏処理にリターンする。一方、ステップS23で“YES”であれば、つまり加速度axが1.2g以上であれば、コントローラ22を右方向に振ったと判定し、ステップS25で、右方向フラグ92bをオンして、ステップS27に進む。
【0103】
なお、右方向フラグ92b、左方向フラグ92cおよび下方向フラグ92cのいずれか2つ以上が同時にオンされることはないため、CPU36は、右方向フラグ92bをオンするときに、他のすべてのフラグ(92c,92d)をオフするようにしてある。以下、同様である。
【0104】
ステップS27では、コントローラ22のx軸方向の加速度axの増加が終了したかどうかを判断する。ここでは、CPU36は、たとえば、数フレーム前から現フレームまでの加速度axを検出し、加速度axが変化(増加)しているか否かを判断する。加速度axが増加している場合には、振り動作を終了していないと判断する。しかし、加速度axが増加していない場合には、つまり加速度axが一定値またはほぼ一定値である場合には、振り動作を終了したと判断する。
【0105】
ステップS27で“NO”であれば、つまり加速度axの増加が終了していなければ、そのまま音楽演奏処理にリターンする。一方、ステップS27で“YES”であれば、つまり加速度axの増加が終了すれば、右方向への振り動作を終了したと判断する。すなわち、CPU36は、右方向への振り動作によって楽器を叩いたと判断する。したがって、ステップS29で、プレイヤから見て右側に配置(表示)される楽器(図5のゲーム画面100では、スネアドラム)の音を鳴らす処理を実行する。
【0106】
具体的には、CPU36は、プレイヤから見てゲーム画面100の右部に表示される楽器を判断し、当該楽器に応じた音色データを選択する。次に、CPU36の指示の下、DSP52が、選択された音色データに所定の処理を施し、所定の処理を施した音色データを出力する。以下、音を出力する場合について同様である。また、CPU36は、楽器の音を出力するとともに、当該楽器が叩かれた様子を表現すべくゲーム画面100の表示を変化させる。つまり、CPU36は、音を鳴らす楽器に対応するアニメーションデータに従って当該楽器の画像(オブジェクト)をアニメーション表示する。以下、ゲーム画面100の表示を変化させる場合について同様である。
【0107】
続いて、ステップS31では、バッファをクリアする。つまり、データ記憶領域92に記憶される加速度データ92aを消去する。そして、ステップS33で、右方向フラグ92bをオフして、音楽演奏処理にリターンする。
【0108】
図15は、コントローラ22を左に振る動作であるか否かを判定し、判定結果に応じた音を出力するための、振り方向判定および音出力処理を示すフロー図である。この処理は、図14に示した処理と同様であるため、重複する内容については簡単に説明することにする。
【0109】
図15に示すように、CPU36は、振り方向判定および音出力処理を開始すると、ステップS41で、左方向フラグ92cがオンであるかどうかを判断する。ステップS41で“YES”であれば、つまり左方向フラグ92cがオンであれば、そのままステップS47に進む。しかし、ステップS41で“NO”であれば、つまり左方向フラグ92cがオフであれば、ステップS43で、コントローラ22のx軸方向の加速度axが−1.2g以下であるかどうかを判断する。
【0110】
ステップS43で“NO”であれば、つまり加速度axが−1.2gよりも大きければ、コントローラ22を左方向に振っていないと判定して、図13に示した音楽演奏処理にリターンする。一方、ステップS43で“YES”であれば、つまり加速度axが−1.2g以下であれば、コントローラ22を左方向に振ったと判定し、ステップS45で、左方向フラグ92cをオンして、ステップS47に進む。図示は省略するが、このとき、右方向フラグ92bおよび下方向フラグ92dはオフされる。
【0111】
ステップS47では、コントローラ22のx軸方向の加速度axの減少が終了したかどうかを判断する。ここでは、CPU36は、たとえば、数フレーム前から現フレームまでの加速度axを検出し、加速度axが変化(減少)しているか否かを判断する。加速度axが減少している場合には、左方向への振り動作が終了していないと判断する。しかし、加速度axが減少していない場合、すなわち加速度axが一定値またはほぼ一定値であれば、左方向への振り動作が終了したと判断する。
【0112】
ステップS47で“NO”であれば、つまり加速度axの減少が終了していなければ、そのまま音楽演奏処理にリターンする。一方、ステップS47で“YES”であれば、つまり加速度axの減少が終了すれば、左方向への振り動作を終了したと判断する。すなわち、左方向への振り動作によって楽器が叩かれたと判断する。したがって、ステップS49で、プレイヤから見て左側に配置(表示)される楽器(図5のゲーム画面100では、ハイハットシンバル)の音を鳴らす処理を実行する。ここでは、ハイハットシンバルの音が出力されるとともに、ハイハットシンバルが叩かれた様子を示すゲーム画面100が表示される。
【0113】
続いて、ステップS51では、バッファをクリアする。そして、ステップS53で、左方向フラグ92cをオフして、音楽演奏処理にリターンする。
【0114】
図16は、コントローラ22を縦(下方向)に振る動作であるか否かを判定し、判定結果に応じた音を出力するための、振り方向判定および音出力処理を示すフロー図である。図16に示すように、CPU36は、振り方向判定および音出出力処理を開始すると、ステップS61で、コントローラ22のy軸方向の加速度ayが−0.3g以上であるかどうかを判断する。ステップS61で“NO”であれば、つまり加速度ayが−0.3g未満であれば、そのままステップS65に進む。一方、ステップS61で“YES”であれば、つまり加速度ayが−0.3g以上であれば、ステップS63で、下方向フラグ92dをオンし、ステップS65に進む。図示は省略するが、このとき、右方向フラグ92bおよび左方向フラグ92cはオフされる。
【0115】
ステップS65では、コントローラ22のy軸方向の加速度ayが0.8g以上であるかどうかを判断する。ステップS65で“YES”であれば、つまり加速度ayが−0.3g以上となった後に、負のピーク値を検出することなく、加速度ayが0.8g以上になった場合には、上方向の振り動作であると判断して、ステップS79で、下方向フラグ92dをオフして、図13に示した音楽演奏処理にリターンする。
【0116】
しかし、ステップS65で“NO”であれば、つまり加速度ayが0.8g未満であれば、ステップS67で、数1に従って負のピーク値を検出する。続くステップS69では、負のピーク値を検出したかどうかを判断する。つまり、現フレームの加速度ayを含む過去3フレーム分の加速度ayが、数1を満たしたかどうかを判断する。ステップS69で“NO”であれば、つまり負のピーク値を検出していなければ、そのままステップS65に戻る。一方、ステップS69で“YES”であれば、つまり負のピーク値を検出すれば、下方向の振り動作に対応して音を鳴らすべく、ステップS71に進む。
【0117】
このように、ステップS61−S69の処理によって、図10に示した丸印Pで示す局所的なピーク値に続く丸印Qで示す負のピーク値を検出することにより、下方向の振り動作を正しく判定しているのである。
【0118】
ステップS71では、コントローラ22のz軸方向の加速度azが−0.5gよりも大きいか否かを判断する。つまり、下方向の振り動作が終了した後のコントローラ22の姿勢(停止位置)が判断される。ステップS71で“NO”であれば、つまり加速度azが−0.5g以下であれば、コントローラ22は比較的高い位置で停止していると判断し、ステップS73で、プレイヤから見て上側に配置(表示)される楽器(図5に示すゲーム画面100では、クラッシュシンバル)の音を鳴らす処理を実行して、ステップS77に進む。ただし、ステップS73では、クラッシュシンバルの音が出力されるとともに、クラッシュシンバルが叩かれる様子を現すゲーム画面100が表示される。
【0119】
一方、ステップS71“YES”であれば、つまり加速度azが−0.5未満であれば、コントローラ22は水平位置付近またはそれよりも低い位置で停止していると判断し、ステップS75で、プレイヤから見て下側に配置(表示)される楽器(図5に示すゲーム画面100では、バスドラム)の音を鳴らす処理を実行して、ステップS77に進む。ただし、ステップS75では、バスドラムの音が出力されるとともに、バスドラムが叩かれる様子を現すゲーム画面100が表示される。
【0120】
ステップS77では、バッファをクリアする。つまり、データ記憶領域92に記憶された加速度データ92aが削除される。そして、ステップS79で、下方向フラグ92dをオフして、音楽演奏処理にリターンする。
【0121】
この実施例によれば、コントローラの振り方に応じた音を出力するので、ユーザの振り動作に応じて出力される音を楽しむことができる。
【0122】
また、この実施例では、1つの加速度センサの検出結果に基づいて振り動作の方向を判定するとともに、振り終わりのコントローラの姿勢を判定するので、低コストでプレイヤの振り動作を正確に判定することができる。
【0123】
なお、この実施例では、ゲーム画面の上部、下部、左部、右部のそれぞれに1の楽器の画像を表示した場合について説明した。しかし、これに限定されるべきではなく、さらに多数の楽器の画像を表示し、上下左右のみならず、詳細な振り動作を判別可能にすることもできる。
【0124】
たとえば、図17に示すように、4つの楽器の画像A,B,C,Dが横方向並んで配置される場合では、コントローラ22のx軸方向の加速度axの大きさで、各方向に配置(表示)される楽器のいずれが叩かれたかを判別することができる。ただし、図17においては、楽器Aおよび楽器Bがゲーム画面の中央から左側に配置に表示され、楽器Cおよび楽器Dがゲーム画面の中央から右側に配置されるものとする。具体的には、左方向または右方向の振り動作を判定するための閾値(上述の第1閾値および第2閾値)とは別に、叩かれた楽器を判別するための閾値を設ける。つまり、図17の下部に示すように、コントローラ22を左方向に振り、楽器Aを叩く場合には、楽器Bを叩く場合よりも、基本姿勢からの左方向への傾き角度が大きくなるため、振る動作を早く(強く)すると考えられる。同様に、コントローラ22を右方向に振り、楽器Dを叩く場合には、楽器Cを叩く場合よりも、基本姿勢から右方向への傾き角度が大きくなるため、振る動作を早く(強く)すると考えられる。
【0125】
かかる場合には、図14に示したフロー図は、図18および図19に示すように変更される。以下、図18および図19に示す処理について説明するが、上述の実施例で説明した処理と同じ処理については簡単に説明することにする。
【0126】
図18に示すように、CPU36は、振り方向判定および音出出力処理を開始すると、ステップS91で、右方向2フラグがオンであるかどうかを判断する。ここで、右方向2フラグは、x軸方向の加速度axが第1閾値(ここでは、1.2g)のみならず、第4閾値(ここでは、1.6g)以上であることを示すフラグである。具体的には、図17の(IV)で示すように、コントローラ22が、基本姿勢から右方向へ大きく傾くように振られた状態を示す。ステップS91で“YES”であれば、つまり右方向2フラグがオンであれば、そのまま図19に示すステップS105に進む。しかし、ステップS91で“NO”であれば、つまり右方向2フラグがオフであれば、ステップS93で、右方向1フラグがオンであるかどうかを判断する。この右方向1フラグは、x軸方向の加速度axが第1閾値以上であり、第4閾値未満であるとことを示すフラグである。具体的には、図17の(III)で示すように、コントローラ22が、基本姿勢から右方向へ少し傾くように振られた状態を示す。
【0127】
ステップS93で“YES”であれば、つまり右方向1フラグがオンであれば、そのままステップS99に進む。一方、ステップS93で“NO”であれば、つまり右方向1フラグがオフであれば、ステップS95で、加速度axが1.2g以上であるかどうかを判断する。つまり、右方向の振り動作か否かを判断する。ステップS95で“NO”であれば、図19に示すように、そのまま図13に示した音楽演奏処理にリターンする。しかし、ステップS95で“YES”であれば、ステップS97で、右方向1フラグをオンして、ステップS99に進む。
【0128】
ステップS99では、加速度axが第4閾値(ここでは、1.6g)以上であるかどうかを判断する。ステップS99で“NO”であれば、つまり加速度axが1.6g未満であれば、そのままステップS105に進む。一方、ステップS99で“YES”であれば、つまり加速度axが1.6g以上であれば、ステップS101で、右方向2フラグをオンし、ステップS103で、右方向1フラグをオフし、ステップS105に進む。
【0129】
なお、ステップS103で、右方向1フラグをオフするのは、楽器Cまたは楽器Dのいずれが叩かれたかを正しく判断するためである。
【0130】
図19に示すように、ステップS105では、加速度axの増加が終了したかどうかを判断する。つまり、コントローラ22の右方向への振り動作が終了したかどうかを判断する。ステップS105で“NO”であれば、そのまま音楽演奏処理にリターンする。一方、ステップS105で“YES”であれば、つまり加速度axの増加が終了すれば、ステップS107で、右方向1フラグがオンであるかどうかを判断する。
【0131】
ステップS107で“YES”であれば、つまり右方向1フラグがオンであれば、ステップS109で、プレイヤから見て右側であり、ゲーム画面の中央よりに配置(表示)される楽器の音を鳴らす処理を実行して、ステップS113に進む。一方、ステップS107で“NO”であれば、つまり右方向2フラグがオンであれば、ステップS111で、プレイヤから見て右側であり、ゲーム画面の右端よりに配置(表示)される楽器の音を鳴らす処理を実行して、ステップS113に進む。そして、ステップS113で、バッファをクリアし、ステップS115で、右方向1フラグまたは右方向2フラグをオフして、音楽演奏処理にリターンする。
【0132】
なお、図示は省略するが、左方向についても同様に、2つの閾値を設定することにより、2つの楽器(図17に示す例では、A,B)のいずれが叩かれたかを正確に判断して、叩かれた楽器の音を鳴らす処理を実行することができる。
【0133】
また、縦方向についても3つ以上の楽器を配置して、いずれの楽器が叩かれたかを正確に判断して、叩かれた楽器の音を鳴らすことができる。上述の実施例で説明したように、縦方向では、振り動作が終了したときのz軸方向の加速度azの値で、コントローラ22の姿勢すなわち停止状態を判断して、いずれの楽器を叩いたかを判断するようにしてある。このため、コントローラ22の停止状態を判断するための閾値を、表示する楽器の個数に応じて設定すればよい。
【0134】
たとえば、図20に示すように、3つの楽器A,B,Cを縦に並べて配置(表示)する場合には、2つの閾値が設定される。具体的には、図20の(I)で示すように、閾値m(−0.75g)および閾値n(0.75g)が設定される。ただし、図20においては、加速度azの検出範囲は、−2.25g〜2.25gに設定してある。これは、図20の(I)に示すように、楽器A,B,Cを判別する場合の加速度azの範囲を均等にするためである。したがって、図16に示したように、ステップS69で“YES”となり、楽器の音を鳴らす場合には、加速度azの値を検出し、2つの閾値m,nを用いて、楽器A,B,Cのいずれが叩かれたかを判断するのである。具体的には、加速度azが閾値m以下である場合には、楽器Aが叩かれたと判断される。また、加速度azが閾値mより大きく閾値n以下である場合には、楽器Bが叩かれたと判断される。さらに、加速度azが閾値nより大きい場合には、楽器Cが叩かれたと判断される。
【0135】
このように、横方向の振り動作に対しては、1軸(たとえば、x軸)についての加速度に基づいて、振り方向および叩いた楽器を判別することができる。また、縦方向の振り動作に対しては、2軸のうちの一方の軸(たとえば、y軸)の加速度に基づいて下方向の振り動作を判定することができ、振り動作が終了した後に、他方の1軸(たとえば、z軸)についての加速度に基づいて、叩いた楽器を判断することができる。
【0136】
さらに、詳細な説明は省略するが、たとえば、ビデオゲーム装置が指示する楽器を叩いて音を鳴らすようなゲームでは、今回叩くべき楽器が叩かれたことを正確に判断するために、その都度、閾値を変化させることも可能である。たとえば、楽器Aを叩く場面においては、図20の(II)に示すように、たとえば、閾値mが−0.5gに設定(変更)される。つまり、楽器Aが叩かれたと判定される加速度azの範囲が大きくされる。また、楽器Bを叩く場面においては、図20の(III)に示すように、閾値mが−1.0gに設定され、閾値nが1.0gに設定される。つまり、楽器Bが叩かれたと判定される加速度azの範囲が大きくされる。さらに、楽器Cを叩く場面においては、図20の(IV)に示すように、閾値nが0.5gに設定される。つまり、楽器Cが叩かれたと判定される加速度azの範囲が大きくされる。
【0137】
このように、閾値を可変的に設定するようにすれば、比較的多くの楽器を表示する場合であっても、プレイヤが叩いた楽器を正確に判断することができる。
【図面の簡単な説明】
【0138】
【図1】図1はこの発明のゲームシステムの一実施例を示す図解図である。
【図2】図2は図1に示すゲームシステムの電気的な構成を示すブロック図である。
【図3】図3は図1に示すコントローラの外観構成の一例を示す斜視図である。
【図4】図4は図3に示すコントローラの電気的な構成を示すブロック図である。
【図5】図5は図1および図2に示すモニタに表示されるゲーム画面の一例を示す図解図およびコントローラの操作方法を説明するための図解図である。
【図6】図6はコントローラを横方向に振る動作を説明するための図解図である。
【図7】図7はコントローラを横方向に振る場合の振り方向の判定方法を説明するための図解図である。
【図8】図8はコントローラを縦方向に振る動作を説明するための図解図である。
【図9】図9はコントローラを縦方向に振る場合の振り方向の判定方法を説明するための図解図である。
【図10】図10はコントローラを縦方向に振った場合におけるy軸方向の加速度の時間変化を示すグラフである。
【図11】図11は図2に示すメインメモリのメモリマップの一例を示す図解図である。
【図12】図12は図2に示すARAMのメモリマップの一例を示す図解図である。
【図13】図13は図2に示すCPUの音楽演奏処理を示すフロー図である。
【図14】図14は図2に示すCPUの右方向についての振り方向判定および音出力処理を示すフロー図である。
【図15】図15は図2に示すCPUの左方向についての振り方向判定および音出力処理を示すフロー図である。
【図16】図16は図2に示すCPUの縦方向についての振り方向判定および音出力処理を示すフロー図である。
【図17】図17はこの発明の他のゲーム画面に表示される楽器の配列の例およびその操作方法を説明するための図解図である。
【図18】図18は図17に示すゲーム画面が表示されている場合における、CPUの右方向についての振り方向判定および音出力処理の一部を示すフロー図である。
【図19】図19は図17に示すゲーム画面が表示されている場合における、CPUの右方向についての振り方向判定および音出力処理の他の一部であって、図18に後続するフロー図である。
【図20】図20はこの発明のその他のゲーム画面に表示される楽器の配列の例およびゲームの異なる場面における閾値の設定方法を説明するための図解図である。
【符号の説明】
【0139】
10 …ゲームシステム
12 …ビデオゲーム装置
18 …光ディスク
22 …コントローラ
24 …受信ユニット
30 …メモリカード
34 …モニタ
34a …スピーカ
36 …CPU
38 …メモリコントローラ
40 …メインメモリ
42 …GPU
52 …DSP
54 …ARAM
62 …オーディオI/F
70 …マイコン
74 …加速度センサ
【特許請求の範囲】
【請求項1】
加速度センサを含む操作手段を備える音出力装置の音出力プログラムであって、
前記音出力装置のプロセサを、
前記加速度センサの出力に基づいて前記操作手段の振り動作を検出する振り動作検出手段、
前記振り動作検出手段によって振り動作が検出された後に、前記加速度センサの出力に基づいて当該振り動作が終了したかどうかを判断する振り動作終了判断手段、
前記振り動作終了判断手段によって振り動作が終了したと判断したとき、前記加速度センサの出力に基づいて前記操作手段の姿勢を検出する姿勢検出手段、および
前記姿勢検出手段の検出結果に応じて、記憶手段に記憶された音色データに基づく音を出力する音出力手段として機能させる、音出力プログラム。
【請求項2】
前記加速度センサは多軸加速度センサであり、
前記音出力プログラムは、前記プロセサを、前記多軸加速度センサの2つの軸についての加速度に基づいて前記振り動作の方向を判定する方向判定手段としてさらに機能させ、
前記姿勢検出手段は、前記方向判定手段の判定結果が縦方向を示すとき、前記2つの軸に直交する軸の加速度に基づいて前記操作手段と水平面との縦方向の傾きを検出する縦方向傾き検出手段を含み、
前記音出力手段は、前記縦方向傾き検出手段によって検出された傾きに従う縦方向の位置に応じた音色データを記憶手段から読み出す、請求項1記載の音出力プログラム。
【請求項3】
前記音出力手段は、前記方向判定手段の判定結果が右方向を示すとき、当該右方向に応じた音色データを記憶手段から読み出し、前記方向判定手段の判定結果が左方向を示すとき、当該左方向に応じた音色データを記憶手段から読み出す、請求項1または2記載の音出力プログラム。
【請求項4】
前記音出力装置は表示手段をさらに備え、
前記音出力プログラムは、前記プロセサを、前記振る動作を誘導する誘導画面を前記表示手段に表示する誘導画面表示手段として機能させ、
前記方向判定手段の判定結果が示す方向は、前記誘導画面における方向に対応する、請求項2または3記載の音出力プログラム。
【請求項5】
加速度センサを含む操作手段を備える音出力装置であって、
前記加速度センサの出力に基づいて前記操作手段の振り動作を検出する振り動作検出手段、
前記振り動作検出手段によって振り動作が検出された後に、前記加速度センサの出力に基づいて当該振り動作が終了したかどうかを判断する振り動作終了判断手段、
前記振り動作終了判断手段によって振り動作が終了したと判断したとき、前記加速度センサの出力に基づいて前記操作手段の姿勢を検出する姿勢検出手段、および
前記姿勢検出手段の検出結果に応じて、記憶手段に記憶された音色データに基づく音を出力する音出力手段を備える、音出力装置。
【請求項1】
加速度センサを含む操作手段を備える音出力装置の音出力プログラムであって、
前記音出力装置のプロセサを、
前記加速度センサの出力に基づいて前記操作手段の振り動作を検出する振り動作検出手段、
前記振り動作検出手段によって振り動作が検出された後に、前記加速度センサの出力に基づいて当該振り動作が終了したかどうかを判断する振り動作終了判断手段、
前記振り動作終了判断手段によって振り動作が終了したと判断したとき、前記加速度センサの出力に基づいて前記操作手段の姿勢を検出する姿勢検出手段、および
前記姿勢検出手段の検出結果に応じて、記憶手段に記憶された音色データに基づく音を出力する音出力手段として機能させる、音出力プログラム。
【請求項2】
前記加速度センサは多軸加速度センサであり、
前記音出力プログラムは、前記プロセサを、前記多軸加速度センサの2つの軸についての加速度に基づいて前記振り動作の方向を判定する方向判定手段としてさらに機能させ、
前記姿勢検出手段は、前記方向判定手段の判定結果が縦方向を示すとき、前記2つの軸に直交する軸の加速度に基づいて前記操作手段と水平面との縦方向の傾きを検出する縦方向傾き検出手段を含み、
前記音出力手段は、前記縦方向傾き検出手段によって検出された傾きに従う縦方向の位置に応じた音色データを記憶手段から読み出す、請求項1記載の音出力プログラム。
【請求項3】
前記音出力手段は、前記方向判定手段の判定結果が右方向を示すとき、当該右方向に応じた音色データを記憶手段から読み出し、前記方向判定手段の判定結果が左方向を示すとき、当該左方向に応じた音色データを記憶手段から読み出す、請求項1または2記載の音出力プログラム。
【請求項4】
前記音出力装置は表示手段をさらに備え、
前記音出力プログラムは、前記プロセサを、前記振る動作を誘導する誘導画面を前記表示手段に表示する誘導画面表示手段として機能させ、
前記方向判定手段の判定結果が示す方向は、前記誘導画面における方向に対応する、請求項2または3記載の音出力プログラム。
【請求項5】
加速度センサを含む操作手段を備える音出力装置であって、
前記加速度センサの出力に基づいて前記操作手段の振り動作を検出する振り動作検出手段、
前記振り動作検出手段によって振り動作が検出された後に、前記加速度センサの出力に基づいて当該振り動作が終了したかどうかを判断する振り動作終了判断手段、
前記振り動作終了判断手段によって振り動作が終了したと判断したとき、前記加速度センサの出力に基づいて前記操作手段の姿勢を検出する姿勢検出手段、および
前記姿勢検出手段の検出結果に応じて、記憶手段に記憶された音色データに基づく音を出力する音出力手段を備える、音出力装置。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【公開番号】特開2007−293191(P2007−293191A)
【公開日】平成19年11月8日(2007.11.8)
【国際特許分類】
【出願番号】特願2006−123426(P2006−123426)
【出願日】平成18年4月27日(2006.4.27)
【出願人】(000233778)任天堂株式会社 (1,115)
【Fターム(参考)】
【公開日】平成19年11月8日(2007.11.8)
【国際特許分類】
【出願日】平成18年4月27日(2006.4.27)
【出願人】(000233778)任天堂株式会社 (1,115)
【Fターム(参考)】
[ Back to top ]