(57)【特許請求の範囲】
【請求項１】
操作手段の操作に応じて音を出力手段から出力する音出力制御装置の音出力制御プログラムであって、
前記操作手段は少なくとも２つの互いに直交する軸方向の加速度を検出する加速度センサを備えていて、
前記音出力制御装置のプロセッサに、
前記加速度センサによって検出された加速度を取得する取得ステップ、
前記取得ステップによって取得された２軸の加速度の和を算出する算出ステップ、
前記算出ステップによって算出された加速度の和の変化に応じて、前記操作手段を振る操作における操作位置を特定する位置特定ステップ、
前記位置特定ステップによって特定された操作位置に応じて、少なくとも出力する音を決定する音決定ステップ、
前記音決定ステップによって決定された音を出力するための制御信号を生成する音制御ステップ、および
前記音制御ステップによって生成された制御信号に基づいて前記出力手段から音を出力させる音出力ステップを実行させる、音出力制御プログラム。
【請求項２】
前記位置特定ステップは、前記算出ステップによって算出された加速度の和の変化が、前記操作位置に対応して段階的に複数設定されている閾値のいずれかと所定の関係になったか否かを判別し、前記加速度の和の変化が前記複数設定されている閾値のいずれかと所定の関係になったと判別されるとき、当該閾値に対応して操作位置を特定する、請求項１記載の音出力制御プログラム。
【請求項３】
前記取得ステップ、前記算出ステップ、前記位置特定ステップ、前記音決定ステップ、前記音制御ステップおよび前記音出力ステップを繰り返す繰り返し制御ステップを、前記プロセッサにさらに実行させる、請求項２記載の音出力制御プログラム。
【請求項４】
前記操作手段は、音を出力するか否かを指示するための発音指示手段をさらに備えていて、
前記音制御ステップは、前記発音指示手段からの指示に応じて音の出力の有無を制御する、請求項１ないし３のいずれかに記載の音出力制御プログラム。
【請求項５】
少なくとも２つの互いに直交する軸方向の加速度を検出する加速度センサを有する操作手段の操作に応じて音を出力手段から出力する音出力制御装置であって、
前記加速度センサによって検出された加速度を取得する取得手段、
前記取得手段によって取得された２軸の加速度の和を算出する算出手段、
前記算出手段によって算出された加速度の和の変化に応じて、前記操作手段を振る操作における操作位置を特定する位置特定手段、
前記位置特定手段によって特定された操作位置に応じて、少なくとも出力する音を決定する音決定手段、
前記音決定手段によって決定された音を出力するための制御信号を生成する音制御手段、および
前記音制御手段によって生成された制御信号に基づいて前記出力手段から音を出力させる音出力手段を備える、音出力制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、音出力制御プログラムおよび音出力制御装置に関し、特にたとえば、操作装置を振る操作に応じてサウンドを出力することによって模擬的な演奏を行うための音出力制御プログラムおよび音出力制御装置に関する。
【背景技術】
【０００２】
操作装置を振る動作に応じて楽器音が出力される模擬的な演奏装置の一例が、たとえば特許文献１および２に開示されている。特許文献１の技術では、手のひらに衝撃センサが取り付けられ、スティックを振った際に、衝撃センサとスティックとが衝突することによって生ずる衝撃が検出されて、その検出に応じてドラムなどの楽器音が出力される。
【０００３】
また、特許文献２の技術では、操作部材を振る動作の角度に応じて異なる制御信号が発生される。具体的には、水銀と複数の接点とが利用され、操作部材の傾きに応じて水銀が異なる接点に達することに基づいて振り上げ角度が検出され、その検出角度に応じた音高の楽器音が出力される。
【特許文献１】特開２０００-３３０５６７号公報
【特許文献２】特開昭６３−１９２０９６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
特許文献１の技術では、スティックの振り操作の衝撃が検出されるので、打楽器以外の模擬的な楽器演奏を実現するのは困難であった。たとえばギターストローク演奏のような手首のスナップの効かされる演奏にこの技術を適用しようとしても、演奏の動作がギターストローク演奏とは全く異なったものとなってしまう。また、特許文献２の技術では、操作部材の振り上げ角度が水銀スイッチで検出されるため、コストと使用部材の危険性を考慮すると、あまり現実的な技術とは言えない。さらに、ギターストローク演奏のような動作の状態を適切に検出することは困難であると思われる。
【０００５】
それゆえに、この発明の主たる目的は、コントローラを振るといった操作によって模擬的なストローク演奏を行うことを可能にする、音出力制御プログラムおよび音出力制御装置を提供することである。
【課題を解決するための手段】
【０００６】
第１の発明（請求項１の発明）は、操作手段の操作に応じて音を出力手段から出力する音出力制御装置の音出力制御プログラムである。操作手段は少なくとも２つの互いに直交する軸方向の加速度を検出する加速度センサを備えている。この音出力制御プログラムは、音出力制御装置のプロセッサに、取得ステップ、算出ステップ、位置特定ステップ、音決定ステップ、音制御ステップ、および音出力ステップを実行させる。取得ステップは、加速度センサによって検出された加速度を取得する。算出ステップは、取得ステップによって取得された２軸の加速度の和を算出する。位置特定ステップは、算出ステップによって算出された加速度の和に応じて、操作手段を振る操作における操作位置を特定する。音決定ステップは、位置特定ステップによって特定された操作位置に応じて、少なくとも出力する音を決定する。音制御ステップは、音決定ステップによって決定された音を出力するための制御信号を生成する。音出力ステップは、音制御ステップによって生成された制御信号に基づいて出力手段から音を出力させる。
【０００７】
請求項１の発明では、音出力制御プログラムは、ユーザによる操作手段（１４：実施例で相当する参照符号。以下同じ。）の操作に応じて音を出力手段（２４）から出力するためのものであり、音出力制御装置（１０）のプロセッサ（２６）に実行させる以下のステップを含む。ただし、操作手段には、少なくとも２つの互いに直交する軸方向の加速度を検出する加速度センサ（６０）が設けられる。ユーザは、この操作手段を把持して、振るような操作、たとえばギターのストローク奏法のような操作を行う。取得ステップ（Ｓ３）では、加速度センサによって検出された加速度が取得され、算出ステップ（Ｓ２５）では、２軸の加速度の和が算出される。この加速度の和は、ユーザによる操作手段に対するストローク操作の状態を示している。位置特定ステップ（Ｓ２７−Ｓ３７）では、加速度の和の変化に応じて、操作手段を振る操作における操作位置を特定する。音決定ステップ（Ｓ４１）では、操作位置に応じて、少なくとも出力する音を決定する。音制御ステップ（Ｓ３９、Ｓ４１）では、決定された音を出力するための制御信号が生成される。音出力ステップ（Ｓ４３）では、制御信号に基づいて出力手段から音が出力される。このようにして、ユーザのストローク操作の状態に応じた音が出力される。
【０００８】
請求項１の発明によれば、たとえばギターのストローク演奏などのように単純なポインティングでは再現できないような演奏に関して、２軸の加速度の和によって示される操作の状態に応じて音出力を行うことができる。したがって、模擬的なストローク演奏を実現できる。
【０００９】
請求項２の発明は、請求項１の発明に従属し、位置特定ステップは、算出ステップによって算出された加速度の和の変化が、操作位置に対応して段階的に複数設定されている閾値のいずれかと所定の関係になったか否かを判別し、加速度の和の変化が複数設定されている閾値のいずれかと所定の関係になったと判別されるとき、当該閾値に対応して操作位置を特定する。
【００１０】
請求項２の発明では、位置特定ステップは、算出された加速度の和の変化が、操作位置に対応して段階的に複数設定されている閾値のいずれかと所定の関係になったか否かを判別し（Ｓ３３、Ｓ３７）、加速度の和の変化が複数設定されている閾値のいずれかと所定の関係になったと判別されるとき（Ｓ３３またはＳ３７で“ＹＥＳ”）、当該閾値に対応して操作位置を特定する。後述の実施例では複数の閾値は、ギターのような弦楽器の各弦に対応付けられて弦閾値テーブルデータとして記憶されている。所定の関係とは、加速度の和が閾値を越えて変化したことであり、具体的には、当該閾値に対応付けられた弦が弾かれたことを意味する。
【００１１】
請求項２の発明によれば、更に、加速度の和が予め定められた複数の閾値のそれぞれを越えたか否かに応じて音出力が制御されるようにしたので、たとえばギターの６つの弦のそれぞれに対応する閾値を設定しておくことによって、操作に応じて複数の音が実際のギターのように時間差を伴って鳴るような状況を模擬的に作り出すことができる。
【００１２】
請求項３の発明は、請求項２の発明に従属し、取得ステップ、算出ステップ、位置特定ステップ、音決定ステップ、音制御ステップおよび音出力ステップを繰り返す繰り返し制御ステップを、プロセッサにさらに実行させる。
【００１３】
請求項３の発明では、繰り返し制御ステップ（Ｓ３、Ｓ５（Ｓ２５−Ｓ４３）、Ｓ９）では、取得ステップ、算出ステップ、位置特定ステップ、音決定ステップ音制御ステップおよび音出力ステップを繰り返す。つまり、１回の操作手段を振る操作で様々な音が段階的に出力される。したがって、たとえばギターの６つの弦にそれぞれ異なる音色を設定しておけば、たとえば閾値ごとに異なる音色がなるようにできるので、更に実際のコードに応じた模擬的なギター演奏を実現することができる。
【００１４】
請求項４の発明は、請求項１ないし３のいずれかの発明に従属し、操作手段は、音を出力するか否かを指示するための発音指示手段をさらに備えている。音制御ステップは、発音指示手段からの指示に応じて音の出力の有無を制御する。
【００１５】
請求項４の発明では、操作手段には発音指示手段（５２ｄ）が設けられる。ユーザの発音指示手段に対する操作に応じて音を出力するか否かが指示される。音制御ステップでは、当該指示に応じて音の出力の有無が制御される。したがって、更に、実際にスピーカなどから音を鳴らすのか鳴らさないのかを制御するようにしたので、加速度の和の変化に応じた音出力に対して更に発音の有無を調整することが可能になり、たとえば、模擬的なギター演奏において単独の弦についてのみ当該サウンドを出力することができる。
【００１６】
第２の発明（請求項５の発明）は、少なくとも２つの互いに直交する軸方向の加速度を検出する加速度センサを有する操作手段の操作に応じて音を出力手段から出力する音出力制御装置である。この音出力制御装置は、取得手段、算出手段、位置特定手段、音決定手段、音制御手段、および音出力手段を備える。取得手段は、加速度センサによって検出された加速度を取得する。算出手段は、取得手段によって取得された２軸の加速度の和を算出する。位置特定手段は、算出手段によって算出された加速度の和に応じて、操作手段を振る操作における操作位置を特定する。音決定手段は、位置特定手段によって特定された操作位置に応じて、少なくとも出力する音を決定する。音制御手段は、音決定手段によって決定された音を出力するための制御信号を生成する。音出力手段は、音制御手段によって生成された制御信号に基づいて出力手段から音を出力させる。
【００１７】
請求項５の発明は、上述の第１の発明に対応する音出力制御装置であり、上述の第１の発明と同様の効果を奏する。
【発明の効果】
【００１８】
この発明によれば、操作手段に設けた加速度センサによって検出される２軸の加速度の和の変化に応じて音が制御されるようにしたので、ギターのストローク演奏のような手首のスナップを効かせた操作による演奏を模擬的に行うことができる。単純なポインティングでは再現できないような演奏に対して、操作手段の振りなど操作の状態に応じて音の出力を制御できるので、今までに無い娯楽的な音出力が可能な装置を提供することができる。
【００１９】
この発明の上述の目的，その他の目的，特徴および利点は、図面を参照して行う以下の実施例の詳細な説明から一層明らかとなろう。
【発明を実施するための最良の形態】
【００２０】
図１を参照して、この実施例の音出力制御装置１０は、一例としてゲームシステムの形態で実現される。ゲームシステム１０はゲーム装置１２およびコントローラ１４を含む。ゲーム装置１２は、据置型ゲーム装置であり、家庭用テレビジョン受像機のようなディスプレイないしモニタ１６にケーブルを介して接続される。コントローラ１４は、プレイヤないしユーザによって操作される操作装置であり、ゲーム装置１２に操作データを与える。
【００２１】
ゲーム装置１２には、接続端子を介して受信ユニット１８が接続される。受信ユニット１８は、コントローラ１４から無線送信される操作データを受信する。具体的には、コントローラ１４は、たとえばＢｌｕｅｔｏｏｔｈ（ブルートゥース）（登録商標）のような無線通信技術を用いて、受信ユニット１８が接続されたゲーム装置１２へ操作データを送信する。
【００２２】
また、ゲーム装置１２には、当該ゲーム装置１２に対して交換可能に用いられる情報記憶媒体の一例である光ディスク２０が脱着される。ゲーム装置１２の上部主面には、当該ゲーム装置１２の電源ＯＮ／ＯＦＦスイッチ、ゲーム処理のリセットスイッチ、およびゲーム装置１２上部の蓋を開くＯＰＥＮスイッチが設けられている。ここで、プレイヤがＯＰＥＮスイッチを押下することによって上記蓋が開き、光ディスク２０の脱着が可能となる。また、ゲーム装置１２には、外部メモリカード２２が必要に応じて着脱自在に装着される。当該メモリカード２２に搭載されるフラッシュメモリ等にはセーブデータ等が記憶される。
【００２３】
ゲーム装置１２は、光ディスク２０に記憶されたゲームプログラムを実行することによって、その結果をゲーム画像としてモニタ１６に表示する。なお、ゲーム装置１２は、外部メモリカード２２に記憶されたセーブデータを用いて、過去に実行されたゲーム状態を再現して、当該ゲーム画像をモニタ１６に表示することもできる。また、モニタ１６に備えられるスピーカ２４（図２参照）からはゲームサウンド（この実施例ではユーザの演奏に応じたサウンド）が出力される。そして、プレイヤは、コントローラ１４を操作することによって、仮想ゲームをプレイする（この実施例では模擬演奏を行う）。
【００２４】
図２にはゲーム装置１２の電気的構成の一例が示される。ゲーム装置１２は、各種プログラムを実行するたとえばリスク（ＲＩＳＣ）ＣＰＵ（セントラルプロセッシングユニット）２６を含む。ＣＰＵ２６は、図示しないブートＲＯＭに記憶された起動プログラムを実行し、メインメモリ２８等のメモリの初期化等を行った後、光ディスク２０に記憶されているゲームプログラム（この実施例では音出力制御プログラム）およびデータをロードし、当該ゲームプログラムに従ってゲーム処理を行う。
【００２５】
ＣＰＵ２６には、メモリコントローラ３０を介して、ＧＰＵ（Graphics Processing Unit）３２、メインメモリ２８、ＤＳＰ（Digital Signal Processor）３４、およびＡＲＡＭ（Audio RAM）３６が接続される。また、メモリコントローラ３０には、所定のバスを介して、コントローラＩ／Ｆ（インターフェース）３８、ビデオＩ／Ｆ４０、外部メモリＩ／Ｆ４２、オーディオＩ／Ｆ４４、およびディスクＩ／Ｆ４６が接続され、それぞれ受信ユニット１８、モニタ１６、外部メモリカード２２、スピーカ２４、およびディスクドライブ４８が接続されている。
【００２６】
ＧＰＵ３２は、ＣＰＵ２６の命令に従って画像処理を行う。ＧＰＵ３２は、たとえば、３Ｄグラフィックスの表示に必要な計算処理を行う半導体チップで構成される。ＧＰＵ３２は、図示しない画像処理専用のメモリやメインメモリ２８の一部の記憶領域を用いて画像処理を行う。ＧＰＵ３２は、表示すべきゲーム画像データやムービー映像を生成し、適宜メモリコントローラ３０およびビデオＩ／Ｆ４０を介してモニタ１６に出力する。
【００２７】
メインメモリ２８は、ＣＰＵ２６によって使用される記憶領域であり、ＣＰＵ２６の処理に必要なゲームプログラムおよびデータを適宜記憶する。たとえば、メインメモリ２８は、ＣＰＵ２６によって光ディスク２０から読み出されたゲームプログラムや各種データ等を記憶する。
【００２８】
ＤＳＰ３４はサウンドプロセサとして機能し、ＤＳＰ３４にはサウンドデータ等を記憶するためのＡＲＡＭ３６が接続される。ＡＲＡＭ３６は、ＤＳＰ３４が所定の処理（たとえば、先読みしておいたゲームプログラムやサウンドデータの記憶）を行う際に用いられる。ＤＳＰ３４は、ＡＲＡＭ３６に記憶されたサウンドデータ（音波形データ）を読み出し、ＣＰＵ２６からの音制御データと当該音波形データ等に基づいて音出力のためのデータを生成し、メモリコントローラ３０およびオーディオＩ／Ｆ４４を介してモニタ１６に備えられるスピーカ２４から音を出力させる。
【００２９】
メモリコントローラ３０は、データ転送を統括的に制御し、メモリコントローラ３０には上述した各種Ｉ／Ｆが接続される。コントローラＩ／Ｆ３８は、たとえば４つのコントローラＩ／Ｆで構成され、それらが有するコネクタを介して外部機器とゲーム装置１２とを通信可能に接続する。たとえば、受信ユニット１８は、上記コネクタと嵌合し、コントローラＩ／Ｆ３８を介してゲーム装置１２と接続される。上述したように受信ユニット１８は、コントローラ１４からの操作データを受信し、コントローラＩ／Ｆ３８を介して当該操作データをＣＰＵ２６へ出力する。なお、他の実施例では、ゲーム装置１２には、受信ユニット１８に代えて、コントローラ１４から送信されてくる操作データを受信する受信モジュールがその内部に設けられてよい。この場合、受信モジュールが受信した送信データは、所定のバスを介してＣＰＵ２６に出力される。
【００３０】
ビデオＩ／Ｆ４０にはモニタ１６が接続され、モニタ１６にはビデオＩ／Ｆ４０からの画像信号によってゲーム画像が表示される。外部メモリＩ／Ｆ４２には外部メモリカード２２が接続され、ＣＰＵ２６は、メモリコントローラ３０を介して外部メモリカード２２に設けられたフラッシュメモリ等にアクセスする。
【００３１】
オーディオＩ／Ｆ４４にはモニタ１６に内蔵されるスピーカ２４が接続される。オーディオＩ／Ｆ４４は、ＤＳＰ３４によってＡＲＡＭ３６から読み出されたり生成されたりしたサウンドデータやディスクドライブ４８から直接出力されるサウンドデータに対応するオーディオ信号をスピーカ２４に与える。スピーカ２４からは当該サウンドが出力される。
【００３２】
ディスクＩ／Ｆ４６には、ディスクドライブ４８が接続される。ディスクドライブ４８は、所定の読み出し位置に配置された光ディスク２０に記憶されているデータを読み出す。読み出されたデータはディスクＩ／Ｆ４６およびメモリコントローラ３０等を介してメインメモリ２８に書き込まれ、あるいは、オーディオＩ／Ｆ４４に出力される。
【００３３】
図３にはコントローラ１４の外観の一例が示される。図３（Ａ）は、コントローラ１４の上面後方から見た斜視図であり、図３（Ｂ）は、コントローラ１４を下面後方から見た斜視図である。
【００３４】
コントローラ１４は、たとえばプラスチック成型によって形成されたハウジング５０を有している。ハウジング５０は、その前後方向（図３に示すＺ軸方向）を長手方向とした略直方体形状を有しており、全体として大人や子供の片手で把持可能な大きさである。一例として、ハウジング５０は人間の掌とほぼ同じ長さまたは幅を持つ大きさをしている。プレイヤは、コントローラ１４を用いて、それに設けられたボタンを押下するゲーム操作を行うことと、コントローラ１４自体の位置や向きを変えることとによって、ゲーム操作を行うことができる。たとえば、或るゲームでは、プレイヤは、長手方向を軸としてコントローラ１４を回転させることによって、操作対象に移動動作を行わせることができる。
【００３５】
ハウジング５０には、複数の操作ボタンが設けられる。ハウジング５０の上面には、十字キー５２ａ、Ｘボタン５２ｂ、Ｙボタン５２ｃ、Ａボタン５２ｄ、セレクトスイッチ５２ｅ、メニュースイッチ５２ｆ、およびスタートスイッチ５２ｇが設けられる。一方、ハウジング５０の下面には凹部が形成されており、当該凹部の後面側傾斜面にはＢボタン５２ｉが設けられる。これらの各ボタン（スイッチ）５２は、ゲーム装置１２が実行するゲームプログラムに応じてそれぞれの機能が割り当てられる。また、ハウジング５０の上面には、遠隔からゲーム装置１２本体の電源をオン／オフするための電源スイッチ５２ｈが設けられる。
【００３６】
また、ハウジング５０の後面にはコネクタ５４が設けられている。コネクタ５４は、たとえば３２ピンのエッジコネクタであり、コントローラ１４に他の機器を接続するために利用される。また、ハウジング５０上面の後面側には複数のＬＥＤ５６が設けられる。ここで、コントローラ１４には、他のコントローラ１４と区別するためにコントローラ種別（番号）が付与される。コントローラ１４からゲーム装置１２へ操作データを送信する際、当該コントローラ１４に現在設定されているコントローラ種別に対応する１つのＬＥＤ５６が点灯する。
【００３７】
図４にはコントローラ１４の電気的構成が示される。コントローラ１４は、操作部５２（各操作ボタン５２ａ−５２ｈ）の他に、その内部に通信部５８および加速度センサ６０を備えている。
【００３８】
加速度センサ６０は、当該加速度センサの検出部に加わっている加速度のうち、センシング軸ごとの直線成分の加速度や重力加速度を検出する。加速度センサ６０は、少なくとも２つの互いに直交する軸方向の加速度を検出する。たとえば、２軸または３軸の加速度センサの場合には、加速度センサの検出部に加わっている加速度を、各軸に沿った直線成分の加速度としてそれぞれ検出する。具体的には、この実施例では、３軸加速度センサが適用され、コントローラ１４の上下方向（図３に示すＹ軸方向）、左右方向（図３に示すＸ軸方向）および前後方向（図３に示すＺ軸方向）の３軸でそれぞれ加速度を検知する。また、この加速度センサ６０の各軸ごとに検出される加速度に所定の演算処理を施すことによって、コントローラ１４の傾きや回転を算出することが可能である。たとえば、加速度センサ６０が静止した状態においては、常に重力加速度が加わっており、この重力加速度に対する各軸の傾きに応じた加速度が各軸ごとに検出される。具体的には、加速度センサ６０が水平状態で静止しているとき、加速度センサのＹ軸に１Ｇの重力加速度が加わり、他の軸の重力加速度はほぼ０となる。次に、加速度センサ６０の姿勢が水平状態より傾くと、加速度センサ６０の各軸方向と重力方向との角度に応じて、重力加速度が加速度センサ６０の各軸に分散され、このとき、加速度センサ６０の各軸の加速度値が検出される。このような各軸ごとの加速度値に演算を加えることによって、重力方向に対する加速度センサ６０の姿勢を算出することができる。
【００３９】
なお、加速度センサ６０としては、必要な操作信号の種類によっては、上下方向、左右方向および前後方向のうちいずれか２つの組合せの２軸でそれぞれ加速度を検出する２軸加速度センサが用いられてもかまわない。この実施例では、ユーザによるコントローラ１４に対するストローク奏法のような操作状態を加速度センサ６０で検出する。後述する図５に示すように、ユーザはハウジング５０の長手方向をおおよそ水平方向に向けかつハウジング５０の上面を自分の方に向けた状態でコントローラ１４を把持して操作するので、当該ハウジング５０の前後方向（Ｚ軸方向）および左右方向（Ｘ軸方向）の２軸を検出する加速度センサ６０が適用される。
【００４０】
加速度センサ６０が検出した加速度を示すデータは、通信部５８へ出力される。なお、加速度センサ６０は、典型的には静電容量式の加速度センサが用いられ得る。加速度センサ６０は、たとえば最大２００フレーム／秒程度のサンプリング周期を有する。
【００４１】
通信部５８は、マイクロコンピュータ（Micro Computer：マイコン）６２、メモリ６４、無線モジュール６６およびアンテナ６８を含む。マイコン６２は、処理の際にメモリ６４を記憶領域として用いながら、取得したデータを無線送信する無線モジュール６６を制御する。
【００４２】
操作部５２および加速度センサ６０からマイコン６２へ出力されたデータは、一時的にメモリ６４に格納される。ここで、通信部５８から受信ユニット１８への無線送信は所定の周期毎に行われるが、ゲームの処理は１／６０秒を単位として行われることが一般的であるので、それよりも短い周期で送信を行うことが必要となる。マイコン６２は、受信ユニット１８への送信タイミングが到来すると、メモリ６４に格納されているデータを操作データとして無線モジュール６６へ出力する。無線モジュール６６は、たとえばＢｌｕｅｔｏｏｔｈ（ブルートゥース）（登録商標）の技術を用いて、所定周波数の搬送波を操作データで変調し、その微弱電波信号をアンテナ６８から放射する。つまり、操作データは、無線モジュール６６で微弱電波信号に変調されてコントローラ１４から送信される。微弱電波信号はゲーム装置１２側の受信ユニット１８で受信される。受信された微弱電波信号について復調や復号を行うことによって、ゲーム装置１２は操作データを取得することができる。ゲーム装置１２のＣＰＵ２６は、コントローラ１４から取得した操作データに基づいてゲーム処理を行う。
【００４３】
なお、図３に示したコントローラ１４の形状や、各操作スイッチ５２の形状、数および設置位置等は単なる一例に過ぎず、他の形状、数および設置位置に適宜変更され得る。
【００４４】
上記コントローラ１４を用いることによって、プレイヤは、各操作スイッチを押下する従来の一般的なゲーム操作に加えて、コントローラ１４自身の位置を動かしたり、コントローラ１４を回転させたりするというゲーム操作を行うことができる。
【００４５】
この音出力制御装置１０では、ギターなどのストローク奏法のようにコントローラ１４を振る操作が行われることによって、音が出力される。つまり、このゲームシステム１０では、ユーザは、コントローラ１４を把持して手首にスナップを効かせたようなストローク動作を行うことによって、ギターなどの模擬的なストローク演奏を行うことができる。
【００４６】
図５に、コントローラ１４の把持の仕方と操作方法とが示される。なお、図５では右手でコントローラ１４を扱う場合が示される。図５（Ａ）はユーザ側から見た図を示し、図５（Ｂ）はユーザの左側から見た図を示す。ユーザは、ハウジング５０の上面がユーザ側に向けられ先端側がユーザの左手側に向けられているコントローラ１４をほぼ水平にして、親指をハウジング５０の上面で長手方向に添わせて、コントローラ１４を把持する。言い換えれば、ユーザは、Ｚ軸正方向がユーザの左側を向き、かつ、Ｘ軸正方向が上側を向くようにしてコントローラ１４を把持する。そして、図５に示されるように、ユーザは、ストローク奏法のように手首にスナップを効かせるようにしてコントローラ１４を上下方向に振る。
【００４７】
コントローラ１４に対して上述のようなストローク操作が行われるときの加速度が加速度センサ６０によって検出される。発明者等は、ストローク奏法のようにコントローラ１４を操作するときに検出されるＺ軸方向の加速度とＸ軸方向の加速度の和の値が、操作されているコントローラ１４の位置に応じて変化すること、そして、特定の値を特定の弦に割り当てることによってストローク演奏に似た操作感で模擬的な演奏を行えることを見出した。
【００４８】
具体的には、図６に示すように、コントローラ１４がストローク奏法のように振られるとき、加速度センサ６０のＸ軸方向の加速度とＺ軸方向の加速度の和の値は、所定の範囲内で変化する。Ｘ軸方向の加速度とＺ軸方向の加速度の和の値は、ストローク操作の状態を示すことから、ストローク値と呼ぶものとする。たとえば、重力加速度を１．０としたとき、ストローク値は、おおよそ−１．３（手が最上にあるとき）から１．３（手が最下にあるとき）の範囲の値を示すことが実験によって確認されている。そして、実際のギターのストローク演奏時と同様な手の振りで音が出力されるように、特定の位置（特定のストローク値）と各弦の位置とが対応付けられる。この実施例では、０．２５から０．７５までの範囲の特定の値のそれぞれが、ギターの場合の第６弦から第１弦の各弦の位置に対応付けられる。
【００４９】
ゲーム装置１２では、ストローク値の変化が各弦の閾値と所定の関係になったか否かが判別され、所定の関係になったとき、つまり、ストローク値が各弦に対応付けられた値を通過したとき、当該弦が弾かれたものと見なして、当該弦に対応付けられた音が出力されることとなる。
【００５０】
このように、ストローク値の変化が予め定められた複数の閾値と所定の関係になったことに応じて、音出力が制御されるようにしている。したがって、この実施例のように、たとえばギターの６つの弦のそれぞれに対応する各閾値を予め適切に設定しておくことによって、複数の弦が実際のギターのように時間差で鳴るような模擬的な演奏の状況を、簡単な処理で実現することができる。
【００５１】
また、ストローク値の変化と比較される閾値ごとに異なる音色を対応付けることができるので、１回のストローク操作によって異なる音を順次出力することができる。この実施例のように、たとえばギターの６つの弦にそれぞれ異なる所定の音色を設定しておけば、本物のギターと同じ和音を鳴らすような模擬演奏を、簡単な処理で実現することができる。
【００５２】
図７にはメモリマップの一例が示される。メインメモリ２８はプログラム記憶領域８０およびデータ記憶領域８２を含む。なお、図７にはメモリマップの一部が示されており、音出力制御処理に必要な他のプログラムおよびデータも、光ディスク２０等から読み出されたり、ＣＰＵ２６によって生成されたり取得されたりして、メインメモリ２８に記憶されている。
【００５３】
プログラム記憶領域８０の記憶領域８４には操作データ取得プログラムが記憶されている。このプログラムによって、コントローラ１４からの操作データが、受信ユニット１８およびコントローラＩ／Ｆ３８を介してメインメモリ２８に取得される。上述のように、コントローラ１４は、ゲーム装置１２における１フレーム（たとえば１／６０秒）よりも短い周期で操作データを送信してくる。また、コントローラ１４の加速度センサ６０のサンプリング周期は、ゲーム装置１２における１フレームよりも短い周期（たとえば１／２００秒）に設定されており、コントローラ１４の１回の送信データには複数の検出タイミングにおける加速度値が含まれる。したがって、この実施例では、ゲーム装置１２では１フレームに複数個の操作情報（加速度値等）を含む操作データを取得することができる。ＣＰＵ２６は、複数個の操作情報を必要に応じて利用して音出力制御処理を実行することができる。
【００５４】
記憶領域８６には、コード音設定プログラムが記憶されている。このプログラムによってコード音が設定される。この実施例で設定され得るギターコードはＣ、Ｇ７、Ａｍ、Ｆ、Ｄｍ等を含む。この実施例では、操作スイッチ５２のうちたとえば十字キー５２ａの操作によってコードが選択される。また、設定されたコードに応じて、各弦の音色が設定される。つまり、各弦の音がコードの構成音にされる。したがって、本物のギターと同様に和音を鳴らすことができる。
【００５５】
記憶領域８８には発音制御プログラムが記憶されている。このプログラムによって音の出力の有無が制御される。具体的には、この実施例では、操作スイッチ５２のうちＡボタン５２ｄの押下げの有無によって、音の出力のオンオフが切替えられる。つまり、Ａボタン５２ｄが押下げられているときは音が出力されるが、Ａボタン５２ｄが押されていないときには音が出力されない。したがって、ユーザは、操作中にＡボタン５２ｄを押したり離したりすることによって、特定の弦の音を弾いたり弾かなかったりすることが可能である。なお、他の実施例では、逆に、Ａボタン５２ｄが押されたときに消音されるようにしてもよい。
【００５６】
記憶領域９０には音色選択プログラムが記憶されている。このプログラムによって、加速度の変化に応じて出力すべき音色が選択される。つまり、ストローク値の変化が各弦に対応付けられた閾値と所定の関係になったか否かが判別され、所定の関係が成立したと判別された弦に設定されている音が選択される。具体的には、いずれかの弦の閾値が、現フレームのストローク値と前フレームのストローク値の間に存在するか否かが判別される。これは、前フレームから現フレームの間にどの弦が弾かれたかを調査している。詳しくは、通常のダウンストロークの場合、各弦の閾値が前フレームのストローク値以上かつ現フレームのストローク値未満であるか否かが判定される。また、アップストロークの場合、各弦の閾値が現フレームのストローク値以上かつ前フレームのストローク値未満であるか否かが判定される。
【００５７】
記憶領域９２にはサウンド出力プログラムが記憶されている。このプログラムによってサウンド出力のための制御データが生成され、当該制御データに基づいて音が出力される。
【００５８】
データ記憶領域８２の記憶領域９４は操作データバッファであり、コントローラ１４から送信される操作データが記憶される。上述のように、ゲーム装置１２における１フレームの間に、コントローラ１４から複数個の操作情報を含む操作データを少なくとも１回受信するので、受信された操作データが順次この記憶領域９４に蓄積される。操作データは、加速度センサ６０で検出されたＸ、Ｙ、Ｚ軸の加速度値を示す加速度データ、および操作部５２の各ボタンの操作の有無を示すボタン操作データを含む。
【００５９】
記憶領域９６には加速度履歴が記憶される。所定数のフレーム分の加速度値が記憶される。この実施例では、ＸおよびＺ軸の加速度値が使用されるので、ＸおよびＺ軸の加速度が操作データバッファから取得されて、この記憶領域９６に記憶される。なお、上述のように、１フレームで複数個の加速度値が取得されるので、複数個の値の平均値をとるようにしてよい。あるいは、最大値もしくは最小値を採用してもよい。
【００６０】
記憶領域９８には、操作データバッファ９４から取得されたボタン操作データに基づいて、現フレームにおいて操作されているボタンを示すボタン操作情報が記憶される。
【００６１】
記憶領域１００にはストローク値履歴が記憶される。ストローク値は上述のようにＸ軸方向の加速度値とＺ軸方向の加速度値の和である。少なくとも現フレームと前フレームにおけるストローク値が記憶される。
【００６２】
記憶領域１０２には、光ディスク２０から読み出された弦閾値テーブルが記憶されている。弦閾値テーブルは、ストローク値の変化との比較のために、各弦の位置を示す閾値が記憶される。図８に示すように、各弦の識別情報を示す弦番号に対応付けて閾値が登録されている。この実施例では、第６弦の閾値は０．２５であり、第１弦までの各閾値が０．１刻みの値で設定されている。ストローク値の変化がこれら閾値のいずれかを越えたか否かが判定される。なお、この図８に示された閾値テーブルの値は、図５で示したように右手で操作される場合のデータであり、弦閾値テーブル記憶領域１０２には左手用のテーブルも記憶される。操作する手は図示しない設定画面などでユーザによって選択され、当該設定に応じて使用されるテーブルが決められる。
【００６３】
記憶領域１０４には設定コードが記憶される。たとえば、コードのデフォルトはＣであり、十字キー５２ａの操作に応じてコードが変更される。一例として、十字キー５２ａの上方向を指示する部分にＧ７、下方向を指示する部分にＦ、右方向を指示する部分にＡｍ、左方向を指示する部分にＤｍがそれぞれ対応付けられており、各方向指示部分が押されると、当該部分に対応付けられたコードが選択される。また、選択されたコードと反対方向を指示する部分等が押されることによって当該選択が解除され、デフォルトのＣが選択される。
【００６４】
記憶領域１０６には音色データが記憶される。音色データは、各弦の音色を示す情報である。コードの設定に応じて、当該コードを構成する各弦の音色のサウンドデータを指定するデータが各弦について選択されて記憶される。
【００６５】
図９にはゲーム装置１２の音出力制御処理における動作の一例が示される。まず、ステップＳ１でＣＰＵ２６は初期設定を実行する。これによってメインメモリ２８がクリアされ、必要なプログラムおよびデータが光ディスク２０からメインメモリ２８に読み出される。また、各種変数やフラグに初期値が設定される。
【００６６】
続くステップＳ３からＳ９の処理は１フレームごとに実行される。ＣＰＵ２６は、ステップＳ３で加速度情報とボタン操作情報を取得する。具体的には、ＣＰＵ２６は、操作データバッファ９４から操作データを読み出して、Ｘ軸方向およびＺ軸方向の加速度値を取得して加速度履歴記憶領域９６に記憶するとともに、各ボタン５２の操作情報をボタン操作情報記憶領域９８に記憶する。
【００６７】
続いて、ステップＳ５で、ＣＰＵ２６は演奏処理を実行する。この演奏処理によって、ユーザによるコントローラ１４のストローク操作に応じて音が出力される。演奏処理の動作の一例は図１０に詳細に示される。
【００６８】
図１０のステップＳ２１で、ＣＰＵ２６は、十字キー操作に応じてコードを設定する。具体的には、ボタン操作情報記憶領域９８から十字キー５２ａの操作情報が取得され、十字キー５２ａの操作された方向に基づいてコードが選択されて、選択されたコードを示す情報が記憶領域１０４に記憶される。なお、設定コード記憶領域１０４には初期設定でＣコードを示す情報が記憶されている。十字キー５２ａが操作されていない場合には設定コードは変更されない。
【００６９】
次に、ステップＳ２３で、ＣＰＵ２６は、設定されたコードに基づいて各弦の音色を設定し、各弦の音色を示す情報を音色データ記憶領域１０６に記憶する。
【００７０】
ステップＳ２５では、ＣＰＵ２６は、現フレームにおけるＸ軸方向およびＺ軸方向の加速度値を記憶領域９６から読み出して、両値を加算してストローク値を算出する。算出された現フレームのストローク値はストローク値履歴記憶領域１００に記憶される。
【００７１】
続いて、ステップＳ２７で、ＣＰＵ２６は、Ａボタンが押されているか否かを、ボタン操作情報記憶領域９８のデータに基づいて判断する。つまり、ユーザによって音の出力が指示されているか否かが判定される。ステップＳ２７で“ＮＯ”であれば、つまり、ユーザが音の出力をしないことを意図している場合には、この演奏処理を終了し、処理は図９のステップＳ７へ戻る。
【００７２】
一方、ステップＳ２７で“ＹＥＳ”であれば、各弦が弾かれたか否かの判定をストローク値の変化に基づいて行う。すなわち、ＣＰＵ２６は、ステップＳ２９で、処理対象の弦を指定するための変数Ｎに初期値（この実施例では第６弦を示す「６」）を設定する。
【００７３】
続いて、ステップＳ３３で、ＣＰＵ２６は、Ｎ値に対応する弦の閾値を閾値テーブル記憶領域１０２から読み出す。そして、ステップＳ３３で、ＣＰＵ２６は、第Ｎ弦の閾値が前フレームのストローク値以上でありかつ現フレームのストローク値未満であるか否かを判断する。ここでは、ストローク値が第Ｎ弦の閾値を下から上に通過したか否か、つまり、ダウンストロークによって第Ｎ弦が上から下に弾かれたか否かを判定している。ステップＳ３３で“ＹＥＳ”であれば、当該第Ｎ弦の音の出力を行うために処理はステップＳ３９へ進む。
【００７４】
一方、ステップＳ３３で“ＮＯ”であれば、ＣＰＵ２６は、ステップＳ３５でアップストロークを行うことが可能であるか否かを判断する。なお、データ記憶領域８２に記憶されるアップストロークの可否を示すフラグに基づいて当該判定を行う。ダウンストロークだけでなくアップストロークの場合にも音の出力を許可する場合には、たとえば初期設定で上記フラグに許可を示す情報が設定される。アップストロークの可否の設定は、ユーザによる操作ボタン５２の操作によって、図示しない設定画面等で変更可能にされる。
【００７５】
ステップＳ３５で“ＹＥＳ”の場合には、ＣＰＵ２６は、ステップＳ３７で、第Ｎ弦の閾値が現フレームのストローク値以上でありかつ前フレームのストローク値未満であるか否かを判断する。ここでは、ストローク値が第Ｎ弦の閾値を上から下に通過したか否か、つまり、アップストロークによって第Ｎ弦が下から上に弾かれたか否かを判定している。ステップＳ３７で“ＹＥＳ”であれば、当該第Ｎ弦の音の出力を行うために処理はステップＳ３９へ進む。
【００７６】
一方、ステップＳ３７で“ＮＯ”の場合、つまり、処理対象として設定した第Ｎ弦が弾かれていない場合には、次の弦のための制御を行うべく処理はステップＳ４５に進む。また、ステップＳ３５で“ＮＯ”の場合にも、同様に処理はステップＳ４５に進む。
【００７７】
ステップＳ３９では、ＣＰＵ２６はＸ軸およびＺ軸方向の加速度値の和から音量を設定する。具体的には、Ｘ軸加速度とＺ軸加速度の和であるストローク値の現在と前回の値を使用し、現フレームのストローク値と前フレームのストローク値との差分の絶対値に基づいて、音量を算出する。ストローク値がストローク操作の「位置」を示し、「位置」の差分がストローク操作の「速度」を示すため、この「速度」を音量のスケールに変換する。早く動いたときほど音量は大きくされる。
【００７８】
ステップＳ４１では、ＣＰＵ２６は第Ｎ弦の音を出力するための制御データを生成する。つまり、ＣＰＵ２６は、第Ｎ弦に設定されている音色データを記憶領域１０６から読み出し、当該音色を設定音量で出力することを指示する情報を含む制御データを生成する。
【００７９】
そして、ステップＳ４３で、ＣＰＵ２６は、第Ｎ弦の音を出力する。具体的には、ＣＰＵ２６は、第Ｎ弦の音を出力するための制御データをメモリコントローラ３０を介してＤＳＰ３４に与える。この制御データに応じて、ＤＳＰ３４は、ＡＲＡＭ３６に記憶されている音波形データを用いて、当該音を出力するためのデータを生成し、当該データをメモリコントローラ３０を介してオーディオＩ／Ｆ４４に与える。オーディオＩ／Ｆ４４は、当該音を出力するためのデータに基づいて当該音を出力するためのオーディオ信号をスピーカ２４に与える。これによって当該第Ｎ弦の音がスピーカ２４から出力される。
【００８０】
ステップＳ４５では、ＣＰＵ２６は、変数Ｎの値から１を減算し、処理対象を次の弦に設定する。そして、ステップＳ４７で、ＣＰＵ２６は変数Ｎの値が０になったか否かを判定する。つまり、すべての弦の閾値に関してストローク値の変化との比較を完了したか否かを判定している。ステップＳ４７で“ＮＯ”であれば、次の弦のための処理を行うために、処理はステップＳ３１へ戻る。このようにして、ストローク値の変化に応じて弾かれた弦が特定され、当該弦の音が出力される。一方、ステップＳ４７で“ＹＥＳ”であれば、この演奏処理を終了して処理は図９のステップＳ７へ戻る。
【００８１】
図９のステップＳ７では、ＣＰＵ２６は表示処理を実行する。これによって、ＣＰＵ２６は、ＧＰＵ３２を用いて画面を表示するためのデータを生成し、当該生成した画面をモニタ１６に表示する。画面には、たとえば、コントローラ１４の持ち方やストローク操作の方法などの説明が表示されてよい。
【００８２】
ステップＳ９では、ＣＰＵ２６は模擬演奏を終了するか否かを判定する。たとえば、模擬演奏の終了を指示するためのいずれかの操作スイッチ５２が押されたか否かをボタン操作情報に基づいて判断する。ステップＳ９で“ＮＯ”であれば、処理はステップＳ３に戻り、ユーザのストローク操作に応じた音出力制御を続け、“ＹＥＳ”であればこの音出力制御処理を終了する。
【００８３】
この実施例によれば、ユーザによって操作されるコントローラ１４に少なくとも２軸の加速度を検出する加速度センサ６０を設けて、当該加速度センサ６０の２軸の加速度の和の変化に応じてすなわちストローク操作の状態に応じて、音が制御されるようにしたので、ギターのストローク演奏のような手首のスナップを効かせた操作による演奏を模擬的に行うことができる。単純なポインティングでは再現できないような演奏に対して、コントローラ１４の振りなど操作の状態に応じて音の出力を制御できるので、今までに無い娯楽的な音出力が可能である。
【００８４】
なお、他の実施例では、図９のステップＳ７の表示処理によって、たとえば図１１に示すように、ユーザのストローク操作の状態（弾いている位置）を示す画面を表示するようにしてもよい。図１１に示すように、画面の右側部分において、ギターの６つの弦とともに、一例としてピックを模したアイコン１１０が表示される。この画面において、第６弦から第１弦のそれぞれは各閾値に対応する位置に表示される。また、ピックアイコン１１０はストローク値に対応する位置に表示され、ストローク操作に応じて上下方向に移動する。このような画面表示によって、ユーザのストローク操作の状態と弦との位置関係を、ユーザに明示することができる。したがって、ユーザは、自分のストローク操作によってどの弦を弾いているかを逐一確認でき、どのようなストローク操作が適切かを把握できるので、より容易に模擬的なストローク演奏を行うことができるようになる。
【００８５】
ただし、コントローラ１４をストローク奏法のように動かせば、ストローク値の変化に応じて各弦の音が出力されるので、初めてプレイするユーザであっても、何度かコントローラ１４をストローク操作すれば、上手く音が出力される操作の感覚を容易に掴むことができる。したがって、図１１のような画面表示は全く行われなくてもよいし、あるいは、初心者モードや練習モード等の特定のモードでのみ図１１のような画面が表示されてもよい。
【００８６】
また、図１１の画面では、ピックアイコン１１０の位置がストローク操作の位置を示しているので、Ａボタン５２ｄによる発音の有無の切り替えを容易に行うことができる。つまり、ユーザは、ピックアイコン１１０が所望の弦を通過しようとしているときにＡボタン５２ｄを押すことによって、所望の弦のみを簡単に弾くことができる。なお、Ａボタン５２ｄの操作の有無に応じてピックアイコン１１０の色などの表示態様を切り替えることによって、Ａボタン５２ｄの操作状態を視覚によって認識させて、さらに容易に発音制御が行えるようにしてもよい。
【００８７】
さらに、図１１に示すように、コード選択のためにコード表を表示するようにしてもよい。上述の実施例では、一例として、デフォルトのコードがＣで、他にＧ７、Ｆ、Ａｍ、Ｄｍを十字キー５２ａの各方向指示部分の操作によって選択可能にしていたので、図１１のコード表では、中央部分にＣが表示され、上下左右にそれぞれＧ７、Ｆ、ＤｍおよびＡｍが表示されている。また、現在設定（選択）されているコードを示す部分（図１１ではＣの部分）にカーソルが表示されている。カーソルはユーザの十字キー５２ａの操作に応じて移動される。たとえば、図１１の状態で十字キー５２ａの上方向が操作されると、カーソルはＧ７の部分に移動し、その後下方向が操作されるとカーソルは再びＣの部分に戻る。このように、設定されているコードと選択可能なコードを表示することによって、ユーザにコード選択を容易に行わせることができる。
【００８８】
なお、上述の各実施例では、ギターの模擬演奏システムとして構成された音出力制御装置１０を説明した。しかし、この音出力制御装置１０では、指先などで弦を弾ずる弦楽器であれば、たとえばウクレレやシタールといったギター以外の弦楽器についても模擬的なストローク演奏を実現可能であるのは勿論である。
【図面の簡単な説明】
【００８９】
【図１】この発明の一実施例の音出力制御装置の一例を示す外観図である。
【図２】図１のゲーム装置の電気的構成の一例を示すブロック図である。
【図３】図１のコントローラの一例を示す図解図であり、（Ａ）は後方上側から見た斜視図であり、（Ｂ）は後方下側から見た斜視図である。
【図４】図１のコントローラの電気的構成の一例を示すブロック図である。
【図５】ストローク演奏を行う際のコントローラの操作方法を示す図解図であり、（Ａ）はユーザ側から見た動きを示し、（Ｂ）はユーザの左側から見た動きを示す。
【図６】コントローラの操作状態に応じて変化するストローク値と各弦の閾値との関係の一例を示す図解図である。
【図７】メモリマップの一例を示す図解図である。
【図８】弦閾値テーブルデータの一例を示す図解図である。
【図９】ゲーム装置の動作の一例を示すフロー図である。
【図１０】図９の演奏処理の動作の一例を示すフロー図である。
【図１１】表示画面の一例を示す図解図である。
【符号の説明】
【００９０】
１０  …ゲームシステム
１２  …ゲーム装置
１４  …コントローラ
１６  …モニタ
１８  …受信ユニット
２０  …光ディスク
２４  …スピーカ
２６  …ＣＰＵ
２８  …メインメモリ
３４  …ＤＳＰ
５２  …操作部
５８  …通信部
６０  …加速度センサ
【図１】
0004679431.tif 000002
【図２】
0004679431.tif 000003
【図３】
0004679431.tif 000004
【図４】
0004679431.tif 000005
【図５】
0004679431.tif 000006
【図６】
0004679431.tif 000007
【図７】
0004679431.tif 000008
【図８】
0004679431.tif 000009
【図９】
0004679431.tif 000010
【図１０】
0004679431.tif 000011
【図１１】
0004679431.tif 000012