(57)【特許請求の範囲】
【請求項１】
所定の対象の動きに基づいて音声を出力するための音楽演奏装置のコンピュータを、
前記所定の対象の姿勢または動きに関する測定情報に基づいて、前記所定の対象の所定間隔での姿勢変化量を取得する姿勢変化量取得手段と、
前記姿勢変化量に応じて、音量を決定するための音量パラメータを設定する音量パラメータ設定手段と、
前記音量パラメータに応じた音量の音声信号を出力する音声信号出力手段と、
前記測定情報に基づいて、所定の方向における角加速度の正負が逆転したと判定された場合に、前記音声信号出力手段による音声信号の出力を所定時間止める、出力音量制御手段、
として機能させるための音楽演奏用プログラム。
【請求項２】
前記姿勢変化量取得手段は、前記測定情報に基づいて、現実空間に定義された座標系に対する、前記所定の対象の所定間隔での姿勢変化量が算出されることで、前記姿勢変化量を取得する、
請求項１に記載の音楽演奏用プログラム。
【請求項３】
前記姿勢変化量取得手段は、現実空間に定義された前記座標系の軸に対する、前記所定の対象の姿勢変化量を複数取得し、
前記音量パラメータ設定手段は、前記姿勢変化量取得手段によって取得された複数の前記姿勢変化量のうち、値が大きい順に上位２つ以上の姿勢変化量に基づいて、前記音量パラメータを設定する、
請求項２に記載の音楽演奏用プログラム。
【請求項４】
前記姿勢変化量取得手段は、現実空間に定義された前記座標系のうちの２つの軸に対する、前記所定の対象の姿勢を定義するための２つの軸の姿勢変化量を、軸の組み合わせ毎に４つ取得し、
前記音量パラメータ設定手段は、前記姿勢変化量取得手段によって取得された４つの前記姿勢変化量のうち、値が大きい順に上位２つの姿勢変化量に基づいて、前記音量パラメータを設定する、
請求項３に記載の音楽演奏用プログラム。
【請求項５】
前記姿勢変化量取得手段は、前記姿勢変化量として、所定の期間内に複数回取得された姿勢変化量の平均値を取得する、
請求項１から４の何れか一項に記載の音楽演奏用プログラム。
【請求項６】
前記音量パラメータ設定手段は、前記姿勢変化量と前記音量パラメータとの対応関係を定めた情報に基づいて前記音量パラメータを設定し、
前記姿勢変化量と前記音量パラメータとの対応関係を定めた情報において、前記姿勢変化量の変化に対する前記音量パラメータの変化の勾配の傾向は、該姿勢変化量の範囲ごとに異なる、
請求項１から５の何れか一項に記載の音楽演奏用プログラム。
【請求項７】
前記音楽演奏装置は、略同一方向に張られた複数の弦を有する弦楽器をシミュレートするものであり、
前記コンピュータを、
現在発音の対象となっている弦が前記複数の弦のうちの何れであるかを指定する弦指定情報を保持する弦指定情報保持手段と、
前記測定情報に基づいて、前記複数の弦が張られた方向を軸とする周方向への角加速度が所定の閾値を越えたと判定された場合に、前記弦指定情報によって指定される弦を変更する弦変更手段、
として更に機能させるための、請求項１から６の何れか一項に記載の音楽演奏用プログラム。
【請求項８】
前記所定の対象は、ユーザによって操作される、ジャイロセンサを内蔵したコントローラであり、
前記測定情報は、前記ジャイロセンサを用いて計測された角速度または角加速度である、
請求項１から７の何れか一項に記載の音楽演奏用プログラム。
【請求項９】
所定の対象の動きに基づいて音声を出力するための音楽演奏装置であって、
前記所定の対象の姿勢または動きに関する測定情報に基づいて、前記所定の対象の所定間隔での姿勢変化量を取得する姿勢変化量取得手段と、
前記姿勢変化量に応じて、音量を決定するための音量パラメータを設定する音量パラメータ設定手段と、
前記音量パラメータに応じた音量の音声信号を出力する音声信号出力手段と、
前記測定情報に基づいて、所定の方向における角加速度の正負が逆転したと判定された場合に、前記音声信号出力手段による音声信号の出力を所定時間止める、出力音量制御手段と、
を備える音楽演奏装置。
【請求項１０】
所定の対象の動きに基づいて音声を出力するための音楽演奏システムであって、
前記所定の対象の姿勢または動きに関する測定情報に基づいて、前記所定の対象の所定間隔での姿勢変化量を取得する姿勢変化量取得手段と、
前記姿勢変化量に応じて、音量を決定するための音量パラメータを設定する音量パラメータ設定手段と、
前記音量パラメータに応じた音量の音声信号を出力する音声信号出力手段と、
前記測定情報に基づいて、所定の方向における角加速度の正負が逆転したと判定された場合に、前記音声信号出力手段による音声信号の出力を所定時間止める、出力音量制御手段と、
を備える音楽演奏システム。
【請求項１１】
所定の対象の動きに基づいて音声を出力するための音楽演奏装置のコンピュータが、
前記所定の対象の姿勢または動きに関する測定情報に基づいて、前記所定の対象の所定間隔での姿勢変化量を取得する姿勢変化量取得ステップと、
前記姿勢変化量に応じて、音量を決定するための音量パラメータを設定する音量パラメータ設定ステップと、
前記音量パラメータに応じた音量の音声信号を出力する音声信号出力ステップと、
前記測定情報に基づいて、所定の方向における角加速度の正負が逆転したと判定された場合に、前記音声信号出力ステップによる音声信号の出力を所定時間止める、出力音量制御ステップと、
を実行する音楽演奏方法。
【請求項１２】
所定の対象の動きに基づいて音声を出力し、略同一方向に張られた複数の弦を有する弦楽器をシミュレートするための音楽演奏装置のコンピュータを、
前記所定の対象の姿勢または動きに関する測定情報に基づいて、前記所定の対象の所定間隔での姿勢変化量を取得する姿勢変化量取得手段と、
前記姿勢変化量に応じて、音量を決定するための音量パラメータを設定する音量パラメータ設定手段と、
前記音量パラメータに応じた音量の音声信号を出力する音声信号出力手段と、
現在発音の対象となっている弦が前記複数の弦のうちの何れであるかを指定する弦指定情報を保持する弦指定情報保持手段と、
前記測定情報に基づいて、前記複数の弦が張られた方向を軸とする周方向への角加速度が所定の閾値を越えたと判定された場合に、前記弦指定情報によって指定される弦を変更する弦変更手段、
として機能させるための音楽演奏用プログラム。
【請求項１３】
所定の対象の動きに基づいて音声を出力し、略同一方向に張られた複数の弦を有する弦楽器をシミュレートするための音楽演奏装置であって、
前記所定の対象の姿勢または動きに関する測定情報に基づいて、前記所定の対象の所定間隔での姿勢変化量を取得する姿勢変化量取得手段と、
前記姿勢変化量に応じて、音量を決定するための音量パラメータを設定する音量パラメータ設定手段と、
前記音量パラメータに応じた音量の音声信号を出力する音声信号出力手段と、
現在発音の対象となっている弦が前記複数の弦のうちの何れであるかを指定する弦指定情報を保持する弦指定情報保持手段と、
前記測定情報に基づいて、前記複数の弦が張られた方向を軸とする周方向への角加速度が所定の閾値を越えたと判定された場合に、前記弦指定情報によって指定される弦を変更する弦変更手段と、
を備える音楽演奏装置。
【請求項１４】
所定の対象の動きに基づいて音声を出力し、略同一方向に張られた複数の弦を有する弦楽器をシミュレートするための音楽演奏システムであって、
前記所定の対象の姿勢または動きに関する測定情報に基づいて、前記所定の対象の所定間隔での姿勢変化量を取得する姿勢変化量取得手段と、
前記姿勢変化量に応じて、音量を決定するための音量パラメータを設定する音量パラメータ設定手段と、
前記音量パラメータに応じた音量の音声信号を出力する音声信号出力手段と、
現在発音の対象となっている弦が前記複数の弦のうちの何れであるかを指定する弦指定情報を保持する弦指定情報保持手段と、
前記測定情報に基づいて、前記複数の弦が張られた方向を軸とする周方向への角加速度が所定の閾値を越えたと判定された場合に、前記弦指定情報によって指定される弦を変更する弦変更手段と、
を備える音楽演奏システム。
【請求項１５】
所定の対象の動きに基づいて音声を出力し、略同一方向に張られた複数の弦を有する弦楽器をシミュレートするための音楽演奏装置のコンピュータが、
前記所定の対象の姿勢または動きに関する測定情報に基づいて、前記所定の対象の所定間隔での姿勢変化量を取得する姿勢変化量取得ステップと、
前記姿勢変化量に応じて、音量を決定するための音量パラメータを設定する音量パラメータ設定ステップと、
前記音量パラメータに応じた音量の音声信号を出力する音声信号出力ステップと、
現在発音の対象となっている弦が前記複数の弦のうちの何れであるかを指定する弦指定情報を保持する弦指定情報保持ステップと、
前記測定情報に基づいて、前記複数の弦が張られた方向を軸とする周方向への角加速度が所定の閾値を越えたと判定された場合に、前記弦指定情報によって指定される弦を変更する弦変更ステップと、
を実行する音楽演奏方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ユーザの動きに基づいて発音する音楽演奏用プログラム、音楽演奏装置、音楽演奏システムおよび音楽演奏方法に関する。
【背景技術】
【０００２】
従来、人間の手や足等の動作状態を検出して楽音を制御する楽音制御装置が提案されている（特許文献１を参照）。特許文献１には、加速度センサが設けられたスティックの振りの強さ、即ち加速度センサから出力される加速度信号の信号レベルに応じて、音高または音量の何れかを変えるようにしてもよいことが示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開昭６３−１９１１９５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
従来、楽器のシミュレーションにおいて、加速度センサによって検出された加速度に基づいて発音を制御する技術がある。しかし、例えば発音体を擦ることによって発音する楽器では、発音体を擦る動きが、正の加速度が検出されない動きであっても発音される。正の加速度が検出されない動きとは、例えば、等速運動や減速運動等である。
【０００５】
即ち、発音体を擦ることによって発音する楽器において、発音体を擦る動きの加速度と音量とは必ずしも対応関係を有さない。このため、従来の加速度に基づいた音量制御で、発音体を擦ることによって発音する楽器のシミュレーションを行う際に、ユーザの動きに応じた、自然な音量制御を行うことは困難であった。
【０００６】
本発明は、上記した問題に鑑み、ユーザの動きに基づいて発音する音楽演奏用プログラム、音楽演奏装置、音楽演奏システムおよび音楽演奏方法において、自然な音量制御を行うことを課題とする。
【課題を解決するための手段】
【０００７】
本発明では、上記課題を解決するために、以下の手段を採用した。即ち、本発明は、所定の対象の動きに基づいて音声を出力するための音楽演奏装置のコンピュータを、前記所定の対象の姿勢または動きに関する測定情報に基づいて、前記所定の対象の所定間隔での姿勢変化量を取得する姿勢変化量取得手段と、前記姿勢変化量に応じて、音量を決定するための音量パラメータを設定する音量パラメータ設定手段と、前記音量パラメータに応じた音量の音声信号を出力する音声信号出力手段と、として機能させるための音楽演奏用プログラムである。
【０００８】
なお、本発明は、発音体を擦ることによって発音する発音装置のシミュレーションに用いることが出来る。発音体を擦ることによって発音する発音装置としては、例えば、弓を用いて弦を擦ることによって発音する擦弦楽器等がある。このような発音装置において、発音体は、擦られることによって振動し、発音する。本発明において、動きが測定される所定の対象は、例えば、擦弦楽器の弓に見立てられたコントローラやユーザの手である。本発明では、このような所定の対象の動きに関する測定情報に基づいて、所定の対象の所定間隔（例えば、単位時間）での姿勢変化量を取得し、姿勢変化量に応じた音量パラメー
タを設定する。
【０００９】
なお、測定情報を得るための手段としては、例えば、コントローラに内蔵されたセンサ等があるが、本発明において、所定の対象の動きを測定するための手段は、コントローラに内蔵されたセンサ等に限定されない。例えば、カメラ等のセンサを用いてユーザの手の動きを撮像し、ユーザの手の動きに関する測定情報を得ることとしてもよい。
【００１０】
また、所定間隔での姿勢変化量としては、例えば、所定の対象の角速度や、所定の対象の回転運動の成分を示すベクトル等を用いることが出来る。本発明によれば、このような姿勢変化量に基づいて音量パラメータを設定することで、発音体を擦ることによって発音する発音装置のシミュレーションにおいて、自然な音量制御を行うことが出来る。なお、姿勢変化量として角速度を用いる場合には、測定情報として得られた角速度をそのまま用いることとしてもよい。
【００１１】
また、前記姿勢変化量取得手段は、前記測定情報に基づいて、現実空間に定義された座標系に対する、前記所定の対象の所定間隔での姿勢変化量が算出されることで、前記姿勢変化量を取得してもよい。
【００１２】
例えば、所定の対象の姿勢を定義する３軸のうちの少なくとも何れかが、現実空間に定義された座標系の各成分についてどれだけ移動したかを算出することで、姿勢変化量を取得することが出来る。
【００１３】
また、前記姿勢変化量取得手段は、現実空間に定義された前記座標系の軸に対する、前記所定の対象の姿勢変化量を複数取得し、前記音量パラメータ設定手段は、前記姿勢変化量取得手段によって取得された複数の前記姿勢変化量のうち、値が大きい順に上位２つ以上の姿勢変化量に基づいて、前記音量パラメータを設定してもよい。
【００１４】
所定の対象の姿勢の変化がより大きく反映された上位２つ以上の姿勢変化量を用いることで、仮に一部の姿勢変化量が飽和した場合にも、音量パラメータの取得のために適切な姿勢変化量を得ることが出来る。例えば、前記姿勢変化量取得手段は、現実空間に定義された前記座標系のうちの２つの軸に対する、前記所定の対象の姿勢を定義するための２つの軸の姿勢変化量を、軸の組み合わせ毎に４つ取得し、前記音量パラメータ設定手段は、前記姿勢変化量取得手段によって取得された４つの前記姿勢変化量のうち、値が大きい順に上位２つの姿勢変化量に基づいて、前記音量パラメータを設定してもよい。
【００１５】
また、前記姿勢変化量取得手段は、前記姿勢変化量として、所定の期間内に複数回取得された姿勢変化量の平均値を取得してもよい。
【００１６】
所定の期間内に複数回取得された姿勢変化量の平均値が取得されることによって、ユーザの意図しない動きの影響を低減させた姿勢変化量を得ることが出来る。
【００１７】
また、前記音量パラメータ設定手段は、前記姿勢変化量と前記音量パラメータとの対応関係を定めた情報に基づいて前記音量パラメータを設定し、前記姿勢変化量と前記音量パラメータとの対応関係を定めた情報において、前記姿勢変化量の変化に対する前記音量パラメータの変化の勾配の傾向は、該姿勢変化量の範囲ごとに異なってもよい。
【００１８】
このようにすることで、シミュレーション対象の発音装置に応じた、自然な音量変化を提供することが可能となる。
【００１９】
また、前記音楽演奏用プログラムは、前記コンピュータを、前記測定情報に基づいて、
所定の方向における角加速度の正負が逆転したと判定された場合に、前記音声信号出力手段による音声信号の出力を所定時間止めるかまたは前記音声信号出力手段による音声信号の出力音量を下げる、出力音量制御手段として更に機能させるためのものであってもよい。
【００２０】
このようにすることで、ユーザの引き返し動作等に伴って音量に変化を持たせ、ユーザに対して実際に発音装置を操作しているような感覚を持たせることが出来る。
【００２１】
また、前記音楽演奏装置は、略同一方向に張られた複数の弦を有する弦楽器をシミュレートするものであり、前記コンピュータを、現在発音の対象となっている弦が前記複数の弦のうちの何れであるかを指定する弦指定情報を保持する弦指定情報保持手段と、前記測定情報に基づいて、前記複数の弦が張られた方向を軸とする周方向への角加速度が所定の閾値を越えたと判定された場合に、前記弦指定情報によって指定される弦を変更する弦変更手段と、として更に機能させるためのものであってもよい。
【００２２】
このようにすることで、ユーザは、シミュレーション対象の弦楽器等において実際に移弦する場合の動きに近い操作で移弦を行い、発音される音の高さを変更することが出来る。
【００２３】
また、前記所定の対象は、ユーザによって操作される、ジャイロセンサを内蔵したコントローラであり、前記測定情報は、前記ジャイロセンサを用いて計測された角速度または角加速度であってもよい。
【００２４】
なお、コントローラがユーザによって操作される場合の操作の態様は限定されない。ユーザは、例えば、コントローラを把持する、装着する、等の態様でコントローラを操作することが出来る。
【００２５】
更に、本発明は、音楽演奏装置、該音楽演奏装置を含む音楽演奏システム、またはコンピュータによって実行される音楽演奏方法としても把握することが可能である。また、本発明は、上記説明したプログラムをコンピュータその他の装置、機械等が読み取り可能な記録媒体に記録したものでもよい。ここで、コンピュータ等が読み取り可能な記録媒体とは、データやプログラム等の情報を電気的、磁気的、光学的、機械的、または化学的作用によって蓄積し、コンピュータ等から読み取ることができる記録媒体をいう。
【発明の効果】
【００２６】
本発明によれば、ユーザの動きに基づいて発音する音楽演奏用プログラム、音楽演奏装置、音楽演奏システムおよび音楽演奏方法において、自然な音量制御を行うことが可能となる。
【図面の簡単な説明】
【００２７】
【図１】実施形態に係るゲームシステムの外観図である。
【図２】実施形態に係るゲーム装置の機能ブロック図である。
【図３】実施形態に係るコントローラの外観構成を示す斜視図である。
【図４】実施形態に係るコントローラの外観構成を示す斜視図である。
【図５】実施形態に係るサブユニットの上筐体を外した状態を示す斜視図である。
【図６】実施形態に係る入力装置の構成を示すブロック図である。
【図７】実施形態に係る入力装置を用いてゲーム操作するときの状態を概説する図である。
【図８】実施形態に係るバイオリンのシミュレート機能を利用する際に用いられる、ローカル座標系およびこれに対するコントローラ座標系の動きを示す概略図である。
【図９】実施形態に係るゲーム装置の機能構成およびデータ構成を示す図である。
【図１０】実施形態に係るシミュレート処理の流れを示すフローチャートである。
【図１１】実施形態に係る音高更新処理の流れを示すフローチャートである。
【図１２Ａ】実施形態に係る指定弦更新処理の流れを示すフローチャートＡである。
【図１２Ｂ】実施形態に係る指定弦更新処理の流れを示すフローチャートＢである。
【図１３】実施形態に係る押弦位置更新処理の流れを示すフローチャートである。
【図１４Ａ】実施形態に係るボウイング更新処理の流れを示すフローチャートＡである。
【図１４Ｂ】実施形態に係るボウイング更新処理の流れを示すフローチャートＢである。
【図１５】実施形態に係る音量更新処理の流れを示すフローチャートである。
【図１６】実施形態において、姿勢変化量と音量パラメータとの関係を表したマップを示す図である。
【図１７】実施形態に係る音声信号出力処理の流れを示すフローチャートである。
【発明を実施するための形態】
【００２８】
以下、本発明を、発音装置のシミュレーションを行うゲーム装置として実施する場合の実施の形態を、図面に基づいて説明する。なお、以下に説明する実施の形態は、本発明を実施する場合の一例を示すものであって、本発明を以下に説明する具体的構成に限定するものではない。本発明の実施にあたっては、実施の形態に応じた具体的構成が適宜採用されてもよい。
【００２９】
＜システムの構成＞
［ゲームシステムの全体構成］
図１を参照して、本発明の一実施形態に係るゲーム装置を含むゲームシステム１について説明する。図１は、ゲームシステム１の外観図である。以下、据置型のゲーム装置を一例にして、本実施形態のゲーム装置およびゲームプログラムについて説明する。図１において、ゲームシステム１は、テレビジョン受像器（以下、単に「テレビ」と記載する）２、ゲーム装置３、光ディスク４、入力装置７、およびマーカ部６を含む。本システムは、入力装置７を用いたゲーム操作に基づいてゲーム装置３でゲーム処理を実行するものである。
【００３０】
ゲーム装置３には、当該ゲーム装置３に対して交換可能に用いられる情報記憶媒体の一例である光ディスク４が脱着可能に挿入される。光ディスク４には、ゲーム装置３において実行されるためのゲームプログラムが記憶されている。ゲーム装置３の前面には光ディスク４の挿入口が設けられている。ゲーム装置３は、挿入口に挿入された光ディスク４に記憶されているゲームプログラムを読み出して実行することによってゲーム処理を実行する。
【００３１】
ゲーム装置３には、表示装置の一例であるテレビ２が接続コードを介して接続される。テレビ２は、ゲーム装置３において実行されるゲーム処理の結果得られるゲーム画像を表示する。また、テレビ２の画面の周辺（図１では画面の上側）には、マーカ部６が設置される。マーカ部６は、その両端に２つのマーカ６Ｒおよび６Ｌを備えている。マーカ６Ｒ（マーカ６Ｌも同様）は、具体的には１以上の赤外ＬＥＤであり、テレビ２の前方に向かって赤外光を出力する。マーカ部６はゲーム装置３に接続されており、ゲーム装置３はマーカ部６が備える各赤外ＬＥＤの点灯を制御することが可能である。
【００３２】
入力装置７は、自機に対して行われた操作の内容を示す操作データをゲーム装置３に与えるものである。本実施形態では、入力装置７はコントローラ５とサブユニット７６とを含む。詳細は後述するが、入力装置７は、コントローラ５に対してサブユニット７６が着
脱可能に接続されている構成である。コントローラ５とゲーム装置３とは無線通信によって接続される。本実施形態では、コントローラ５とゲーム装置３との間の無線通信には例えばＢｌｕｅｔｏｏｔｈ（ブルートゥース）（登録商標）の技術が用いられる。なお、他の実施形態においてはコントローラ５とゲーム装置３とは有線で接続されてもよい。
【００３３】
［ゲーム装置３の内部構成］
次に、図２を参照して、ゲーム装置３の内部構成について説明する。図２は、ゲーム装置３の構成を示すブロック図である。ゲーム装置３は、ＣＰＵ１０、システムＬＳＩ１１、外部メインメモリ１２、ＲＯＭ／ＲＴＣ１３、ディスクドライブ１４、およびＡＶ−ＩＣ１５等を有する。
【００３４】
ＣＰＵ１０は、光ディスク４に記憶されたゲームプログラムを実行することによってゲーム処理を実行するものであり、ゲームプロセッサとして機能する。ＣＰＵ１０は、システムＬＳＩ１１に接続される。システムＬＳＩ１１には、ＣＰＵ１０の他、外部メインメモリ１２、ＲＯＭ／ＲＴＣ１３、ディスクドライブ１４およびＡＶ−ＩＣ１５が接続される。システムＬＳＩ１１は、それに接続される各構成要素間のデータ転送の制御、表示すべき画像の生成、外部装置からのデータの取得等の処理を行う。システムＬＳＩ１１の内部構成については後述する。揮発性の外部メインメモリ１２は、光ディスク４から読み出されたゲームプログラムや、フラッシュメモリ１７から読み出されたゲームプログラム等のプログラムを記憶したり、各種データを記憶したりするものであり、ＣＰＵ１０のワーク領域やバッファ領域として用いられる。ＲＯＭ／ＲＴＣ１３は、ゲーム装置３の起動用のプログラムが組み込まれるＲＯＭ（いわゆるブートＲＯＭ）と、時間をカウントするクロック回路（ＲＴＣ：Ｒｅａｌ  Ｔｉｍｅ  Ｃｌｏｃｋ）とを有する。ディスクドライブ１４は、光ディスク４からプログラムデータやテクスチャデータ等を読み出し、後述する内部メインメモリ１１ｅまたは外部メインメモリ１２に読み出したデータを書き込む。
【００３５】
また、システムＬＳＩ１１には、入出力プロセッサ（Ｉ／Ｏプロセッサ）１１ａ、ＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｏｒ  Ｕｎｉｔ）１１ｂ、ＤＳＰ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ）１１ｃ、ＶＲＡＭ１１ｄ、および内部メインメモリ１１ｅが設けられる。図示は省略するが、これらの構成要素１１ａ〜１１ｅは内部バスによって互いに接続される。
【００３６】
ＧＰＵ１１ｂは、描画手段の一部を形成し、ＣＰＵ１０からのグラフィクスコマンド（作画命令）に従って画像を生成する。ＶＲＡＭ１１ｄは、ＧＰＵ１１ｂがグラフィクスコマンドを実行するために必要なデータ（ポリゴンデータやテクスチャデータ等のデータ）を記憶する。画像が生成される際には、ＧＰＵ１１ｂは、ＶＲＡＭ１１ｄに記憶されたデータを用いて画像データを作成する。
【００３７】
ＤＳＰ１１ｃは、オーディオプロセッサとして機能し、内部メインメモリ１１ｅや外部メインメモリ１２に記憶されるサウンドデータや音波形（音色）データを用いて、音声信号を生成する。
【００３８】
上述のように生成された画像データおよび音声信号は、ＡＶ−ＩＣ１５によって読み出される。ＡＶ−ＩＣ１５は、読み出した画像データを、ＡＶコネクタ１６を介してテレビ２に出力するとともに、読み出した音声信号を、テレビ２に内蔵されるスピーカ２ａに出力する。これによって、画像がテレビ２に表示されるとともに音がスピーカ２ａから出力される。
【００３９】
入出力プロセッサ１１ａは、それに接続される構成要素との間でデータの送受信を実行したり、外部装置からのデータのダウンロードを実行したりする。入出力プロセッサ１１
ａは、フラッシュメモリ１７、無線通信モジュール１８、無線コントローラモジュール１９、拡張コネクタ２０、およびメモリカード用コネクタ２１に接続される。無線通信モジュール１８にはアンテナ２２が接続され、無線コントローラモジュール１９にはアンテナ２３が接続される。
【００４０】
入出力プロセッサ１１ａは、無線通信モジュール１８およびアンテナ２２を介してネットワークに接続し、ネットワークに接続される他のゲーム装置や各種サーバと通信することができる。入出力プロセッサ１１ａは、定期的にフラッシュメモリ１７にアクセスし、ネットワークへ送信する必要があるデータの有無を検出し、当該データが有る場合には、無線通信モジュール１８およびアンテナ２２を介してネットワークに送信する。また、入出力プロセッサ１１ａは、他のゲーム装置から送信されてくるデータやダウンロードサーバからダウンロードしたデータを、ネットワーク、アンテナ２２および無線通信モジュール１８を介して受信し、受信したデータをフラッシュメモリ１７に記憶する。ＣＰＵ１０はゲームプログラムを実行することにより、フラッシュメモリ１７に記憶されたデータを読み出してゲームプログラムで利用する。フラッシュメモリ１７には、ゲーム装置３と他のゲーム装置や各種サーバとの間で送受信されるデータの他、ゲーム装置３を利用してプレイしたゲームのセーブデータ（ゲームの結果データまたは途中データ）が記憶されてもよい。
【００４１】
また、入出力プロセッサ１１ａは、コントローラ５から送信される操作データをアンテナ２３および無線コントローラモジュール１９を介して受信し、内部メインメモリ１１ｅまたは外部メインメモリ１２のバッファ領域に記憶（一時記憶）する。
【００４２】
さらに、入出力プロセッサ１１ａには、拡張コネクタ２０およびメモリカード用コネクタ２１が接続される。拡張コネクタ２０は、ＵＳＢやＳＣＳＩのようなインターフェースのためのコネクタであり、外部記憶媒体のようなメディアを接続したり、他のコントローラのような周辺機器を接続したり、有線の通信用コネクタを接続することによって無線通信モジュール１８に替えてネットワークとの通信を行ったりすることができる。メモリカード用コネクタ２１は、メモリカードのような外部記憶媒体を接続するためのコネクタである。例えば、入出力プロセッサ１１ａは、拡張コネクタ２０やメモリカード用コネクタ２１を介して外部記憶媒体にアクセスし、外部記憶媒体にデータを保存したり、外部記憶媒体からデータを読み出したりすることができる。
【００４３】
ゲーム装置３には、電源ボタン２４、リセットボタン２５、およびイジェクトボタン２６が設けられる。電源ボタン２４およびリセットボタン２５は、システムＬＳＩ１１に接続される。電源ボタン２４がオンされると、ゲーム装置３の各構成要素に対して、図示しないＡＣアダプタを経て電源が供給される。リセットボタン２５が押されると、システムＬＳＩ１１は、ゲーム装置３の起動プログラムを再起動する。イジェクトボタン２６は、ディスクドライブ１４に接続される。イジェクトボタン２６が押されると、ディスクドライブ１４から光ディスク４が排出される。
【００４４】
［入力装置７の構成］
次に、図３から図５を参照して、入力装置７について説明する。図３は、入力装置７の外観構成を示す斜視図である。図４は、コントローラ５の外観構成を示す斜視図である。図３は、コントローラ５の上側後方から見た斜視図であり、図４は、コントローラ５を下側前方から見た斜視図である。
【００４５】
コントローラ５は、例えばプラスチック成型によって形成されたハウジング３１を有している。ハウジング３１は、その前後方向（図３に示すＺ軸方向）を長手方向とした略直方体形状を有しており、全体として大人や子供の片手で把持可能な大きさである。ユーザ
は、コントローラ５に設けられたボタンを押下すること、および、コントローラ５自体を動かしてその位置や姿勢を変えることによってゲーム操作を行うことができる。
【００４６】
ハウジング３１には、複数の操作ボタンが設けられる。図３に示すように、ハウジング３１の上面には、十字ボタン３２ａ、１番ボタン３２ｂ、２番ボタン３２ｃ、Ａボタン３２ｄ、マイナスボタン３２ｅ、ホームボタン３２ｆ、プラスボタン３２ｇ、および電源ボタン３２ｈが設けられる。一方、図４に示すように、ハウジング３１の下面には凹部が形成されており、当該凹部の後面側傾斜面にはＢボタン３２ｉが設けられる。これらの各操作ボタン３２ａ〜３２ｉには、ゲーム装置３が実行するゲームプログラムに応じた機能が適宜割り当てられる。また、電源ボタン３２ｈは遠隔からゲーム装置３本体の電源をオン／オフするためのものである。ホームボタン３２ｆおよび電源ボタン３２ｈは、その上面がハウジング３１の上面に埋没している。これによって、ユーザがホームボタン３２ｆまたは電源ボタン３２ｈを誤って押下することを防止することができる。
【００４７】
ハウジング３１の後面にはコネクタ３３が設けられている。コネクタ３３は、コントローラ５に他の機器（例えば、サブユニット７６や他のコントローラ）を接続するために利用される。また、ハウジング３１の後面におけるコネクタ３３の両側には、上記他の機器が容易に離脱することを防止するために係止穴３３ａが設けられている。
【００４８】
ハウジング３１上面の後方には複数（図３では４つ）のＬＥＤ３４ａ〜３４ｄが設けられる。ここで、コントローラ５には、他のメインコントローラと区別するためにコントローラ種別（番号）が付与される。各ＬＥＤ３４ａ〜３４ｄは、コントローラ５に現在設定されている上記コントローラ種別をユーザに通知したり、コントローラ５の電池残量をユーザに通知したりする等の目的で用いられる。具体的には、コントローラ５を用いてゲーム操作が行われる際、上記コントローラ種別に応じて複数のＬＥＤ３４ａ〜３４ｄのいずれか１つが点灯する。
【００４９】
また、コントローラ５は撮像情報演算部３５（図６）を有しており、図４に示すように、ハウジング３１前面には撮像情報演算部３５の光入射面３５ａが設けられる。光入射面３５ａは、マーカ６Ｒおよび６Ｌからの赤外光を少なくとも透過する材質で構成される。
【００５０】
ハウジング３１上面における１番ボタン３２ｂとホームボタン３２ｆとの間には、コントローラ５に内蔵されるスピーカ（図示は省略する）からの音を外部に放出するための音抜き孔３１ａが形成されている。
【００５１】
また、コントローラ５は、コントローラ５の加速度（重力加速度を含む）を検出する加速度センサ３７（図６を参照）、およびコントローラ５の３軸回りの角速度を検知するジャイロセンサ（図６に示す２軸ジャイロセンサ５５および１軸ジャイロセンサ５６）を内蔵する。
【００５２】
次に、図１および図５を参照して、サブユニット７６について説明する。なお、図５は、サブユニット７６の上筐体（ハウジング７７の一部）を外した状態を示す斜視図である。
【００５３】
サブユニット７６は、例えばプラスチック成型によって形成されたハウジング７７を有している。ハウジング７７は、全体として大人や子供の片手で把持可能な大きさである。
【００５４】
ハウジング７７の上面に、方向指示手段であるスティック７８ａが設けられる。スティック７８ａは、ハウジング７７の上面から突出した傾倒可能なスティックを倒すことによって、傾倒方向に応じて操作信号を出力する操作部である。例えば、ユーザがスティック
先端を３６０°任意の方向に傾倒することによって任意の方向や位置を指定することができ、仮想ゲーム世界に登場するユーザキャラクタ等の移動方向を指示したり、カーソルの移動方向を指示したりすることができる。なお、スティック７８ａの代わりに十字キーを設けても良い。
【００５５】
サブユニット７６のハウジング７７の前面に、複数の操作ボタン（Ｃボタン７８ｄおよびＺボタン７８ｅ）が設けられる。操作ボタン７８ｄおよび７８ｅは、ユーザがボタン頭部を押下することによって、それぞれの操作ボタン７８ｄおよび７８ｅに割り当てられた操作信号を出力する操作部である。これら操作ボタン７８ｄおよび７８ｅは、ゲーム装置３が実行するゲームプログラムに応じてそれぞれの機能が割り当てられる。
【００５６】
ハウジング７７の内部には基板が固設されており、当該基板の上主面上にスティック７８ａおよび加速度センサ７６１等が設けられる。そして、これらは、基板等に形成された配線（図示せず）を介して接続ケーブル７９と接続されている。
【００５７】
なお、図３から図５に示したコントローラ５およびサブユニット７６の形状や、各操作ボタンの形状、センサやバイブレータの数および設置位置等は単なる一例に過ぎず、他の形状、数、および設置位置であってもよい。また、本実施形態では、撮像手段による撮像方向はＺ軸正方向であるが、撮像方向はいずれの方向であってもよい。すなわち、コントローラ５における撮像情報演算部３５の位置（撮像情報演算部３５の光入射面３５ａ）は、ハウジング３１の前面でなくてもよく、ハウジング３１の外部から光を取り入れることができれば他の面に設けられてもかまわない。
【００５８】
図６は、入力装置７（コントローラ５およびサブユニット７６）の構成を示すブロック図である。コントローラ５は、操作部３２（各操作ボタン３２ａ〜３２ｉ）、コネクタ３３、撮像情報演算部３５、通信部３６、加速度センサ３７、７６１およびジャイロセンサ５５、５６を備えている。コントローラ５は、自機に対して行われた操作内容を示すデータを操作データとしてゲーム装置３へ送信するものである。
【００５９】
操作部３２は、上述した各操作ボタン３２ａ〜３２ｉを含み、各操作ボタン３２ａ〜３２ｉに対する入力状態（各操作ボタン３２ａ〜３２ｉが押下されたか否か）を示す操作ボタンデータを通信部３６のマイコン４２へ出力する。
【００６０】
撮像情報演算部３５は、撮像手段が撮像した画像データを解析してその中で輝度が高い領域を判別してその領域の重心位置やサイズなどを算出するためのシステムである。撮像情報演算部３５は、例えば最大２００フレーム／秒程度のサンプリング周期を有するので、比較的高速なコントローラ５の動きでも追跡して解析することができる。
【００６１】
撮像情報演算部３５は、赤外線フィルタ３８、レンズ３９、撮像素子４０、および画像処理回路４１を含んでいる。赤外線フィルタ３８は、コントローラ５の前方から入射する光から赤外線のみを通過させる。レンズ３９は、赤外線フィルタ３８を透過した赤外線を集光して撮像素子４０へ入射させる。撮像素子４０は、例えばＣＭＯＳセンサやあるいはＣＣＤセンサのような固体撮像素子であり、レンズ３９が集光した赤外線を受光して画像信号を出力する。ここで、テレビ２の表示画面近傍に配置されるマーカ部６のマーカ６Ｒおよび６Ｌは、テレビ２の前方に向かって赤外光を出力する赤外ＬＥＤで構成される。したがって、赤外線フィルタ３８を設けることによって、撮像素子４０は、赤外線フィルタ３８を通過した赤外線だけを受光して画像データを生成するので、マーカ６Ｒおよび６Ｌの画像をより正確に撮像することができる。以下では、撮像素子４０によって撮像された画像を撮像画像と呼ぶ。撮像素子４０によって生成された画像データは、画像処理回路４１で処理される。画像処理回路４１は、撮像画像内における撮像対象（マーカ６Ｒおよび
６Ｌ）の位置を算出する。画像処理回路４１は、算出された位置を示す座標を通信部３６のマイコン４２へ出力する。この座標のデータは、マイコン４２によって操作データとしてゲーム装置３に送信される。以下では、上記座標を「マーカ座標」と呼ぶ。マーカ座標はコントローラ５自体の向き（傾斜角度）や位置に対応して変化するので、ゲーム装置３はこのマーカ座標を用いてコントローラ５の向きや位置を算出することができる。
【００６２】
なお、他の実施形態においては、コントローラ５は画像処理回路４１を備えていない構成であってもよく、撮像画像自体がコントローラ５からゲーム装置３へ送信されてもよい。このとき、ゲーム装置３は、画像処理回路４１と同様の機能を有する回路あるいはプログラムを有しており、上記マーカ座標を算出するようにしてもよい。
【００６３】
加速度センサ３７は、コントローラ５の加速度（重力加速度を含む）を検出する、すなわち、コントローラ５に加わる力（重力を含む）を検出する。加速度センサ３７は、当該加速度センサ３７の検出部に加わっている加速度のうち、センシング軸方向に沿った直線方向の加速度（直線加速度）の値を検出する。例えば、２軸以上の多軸加速度センサの場合には、加速度センサの検出部に加わっている加速度として、各軸に沿った成分の加速度をそれぞれ検出する。例えば、３軸または２軸の加速度センサは、アナログ・デバイセズ株式会社（Ａｎａｌｏｇ  Ｄｅｖｉｃｅｓ，  Ｉｎｃ．）またはＳＴマイクロエレクトロニクス社（ＳＴＭｉｃｒｏｅｌｅｃｔｒｏｎｉｃｓ  Ｎ．Ｖ．）から入手可能である種類のものでもよい。なお、加速度センサ３７は、例えば静電容量式の加速度センサであるとするが、他の方式の加速度センサを用いるようにしてもよい。
【００６４】
本実施形態では、加速度センサ３７は、コントローラ５を基準とした上下方向（図３に示すＹ軸方向）、左右方向（図３に示すＸ軸方向）および前後方向（図３に示すＺ軸方向）の３軸方向に関してそれぞれ直線加速度を検出する。加速度センサ３７は、各軸に沿った直線方向に関する加速度を検出するものであるため、加速度センサ３７からの出力は３軸それぞれの直線加速度の値を表すものとなる。すなわち、検出された加速度は、入力装置７（コントローラ５）を基準に設定されるＸＹＺ座標系（以下、「コントローラ座標系」と称する）における３次元のベクトル（ａｘ，ａｙ，ａｚ）として表される。以下では、加速度センサ３７によって検出される３軸に関する各加速度値を各成分とするベクトルを加速度ベクトルと呼ぶ。
【００６５】
加速度センサ３７が検出した加速度（加速度ベクトル）を示すデータ（加速度データ）は、通信部３６へ出力される。なお、加速度センサ３７が検出した加速度は、コントローラ５自体の向き（傾斜角度）や動きに対応して変化するので、ゲーム装置３は加速度データを用いてコントローラ５の向きや動きを算出することができる。
【００６６】
２軸ジャイロセンサ５５および１軸ジャイロセンサ５６は、３軸（本実施形態では、コントローラ座標系のＸＹＺ軸）周りの角速度を検出し、検出した角速度を示すデータ（角速度データ）をコントローラ５へ送信する。
【００６７】
２軸ジャイロセンサ５５は、Ｘ軸周りの角速度およびＹ軸周りの（単位時間あたりの）角速度を検出する。また、１軸ジャイロセンサ５６は、Ｚ軸周りの（単位時間あたりの）角速度を検出する。なお、本明細書では、コントローラ５の撮像方向（Ｚ軸正方向）を基準として、Ｚ軸周り、Ｘ軸周り、Ｙ軸周りの回転方向を、それぞれ、ロール方向、ピッチ方向、ヨー方向と呼ぶ。すなわち、２軸ジャイロセンサ５５は、ピッチ方向（Ｘ軸周りの回転方向）およびヨー方向（Ｙ軸周りの回転方向）の角速度を検出し、１軸ジャイロセンサ５６は、ロール方向（Ｚ軸周りの回転方向）の角速度を検出する。
【００６８】
なお、本実施形態では、３軸回りの角速度を検出するために、２軸ジャイロセンサ５５
と１軸ジャイロセンサ５６とを用いる構成としたが、他の実施形態においては、３軸回りの角速度を検出することができればよく、用いるジャイロセンサの数および組み合わせはどのようなものであってもよい。
【００６９】
また、本実施形態では、各ジャイロセンサ５５および５６が角速度を検出する３つの軸は、加速度センサ３７が加速度を検出する３つの軸（ＸＹＺ軸）と一致するように設定される。ただし、他の実施形態においては、各ジャイロセンサ５５および５６が角速度を検出する３つの軸と、加速度センサ３７が加速度を検出する３つの軸とは一致しなくてもよい。
【００７０】
ジャイロセンサ５５および５６で検出された角速度を示すデータは、マイコン５４に出力される。したがって、マイコン５４には、ＸＹＺ軸の３軸回りの角度速度を示すデータが入力されることになる。マイコン５４は、上記３軸回りの角速度を示すデータを角速度データとしてプラグ５３を介してコントローラ５へ送信する。なお、マイコン５４からコントローラ５への送信は所定の周期毎に逐次行われるが、ゲームの処理は１／６０秒を単位として（１フレーム時間として）行われることが一般的であるので、この時間以下の周期で送信を行うことが好ましい。
【００７１】
本実施形態では、ゲーム装置３は、加速度データおよび角速度データに基づいて入力装置７（コントローラ５）の姿勢を判断する。入力装置７の姿勢は、例えば、入力装置７が存在する空間の所定位置を基準としたｘｙｚ座標系（以下、「ローカル座標系」と称する）の座標値によって表される。ここでは、図１に示されるように、ｘｙｚ座標系は、入力装置７がマーカ部６の正面に位置することを前提とし、入力装置７の位置からマーカ部６を向く方向をｚ軸正方向とし、鉛直上向き（重力方向の逆方向）をｙ軸正方向とし、入力装置７の位置からマーカ部６を見た場合の左方向をｘ軸正方向とした座標系であるとする。また、ここでは、入力装置７（コントローラ５）を基準としたＸ軸、Ｙ軸、Ｚ軸が、それぞれｘ軸、ｙ軸、ｚ軸の向きと一致するときの入力装置７の姿勢を基準姿勢と呼ぶことにする。入力装置７の姿勢は、基準姿勢からＺ軸方向を基準としてロール方向（Ｚ軸周り）、ピッチ方向（Ｘ軸周り）、ヨー方向（Ｙ軸周り）にそれぞれ入力装置７を回転させた場合のｘｙｚ座標系における姿勢である。
【００７２】
通信部３６は、マイコン４２、メモリ４３、無線モジュール４４、およびアンテナ４５を含んでいる。マイコン４２は、処理を行う際にメモリ４３を記憶領域として用いながら、マイコン４２が取得したデータをゲーム装置３へ無線送信する無線モジュール４４を制御する。また、マイコン４２はコネクタ３３に接続されている。サブユニット７６から送信されてくるデータは、コネクタ３３を介してマイコン４２に入力される。
【００７３】
サブユニット７６は、上述した操作部７８および加速度センサ７６１を備えており、接続ケーブル７９とコネクタ７９１およびコネクタ３３とを介して、マイコン４２と接続されている。そして、サブユニット７６に設けられた操作部７８からの操作信号（サブキーデータ）および加速度センサ７６１からの加速度信号（サブ加速度データ）は、接続ケーブル７９を介して、マイコン４２に出力される。
【００７４】
コントローラ５の説明に戻り、操作部３２、撮像情報演算部３５、加速度センサ３７、７６１およびジャイロセンサ５５、５６からマイコン４２へ出力されたデータ、ならびに、サブユニット７６からマイコン４２へ送信されてきたデータは、一時的にメモリ４３に格納される。これらのデータは、上記操作データとしてゲーム装置３へ送信される。すなわち、マイコン４２は、ゲーム装置３の無線コントローラモジュール１９への送信タイミングが到来すると、メモリ４３に格納されている操作データを無線モジュール４４へ出力する。無線モジュール４４は、例えばＢｌｕｅｔｏｏｔｈ（ブルートゥース）（登録商標
）の技術を用いて、所定周波数の搬送波を操作データで変調し、その微弱電波信号をアンテナ４５から放射する。つまり、操作データは、無線モジュール４４で微弱電波信号に変調されてコントローラ５から送信される。微弱電波信号はゲーム装置３側の無線コントローラモジュール１９で受信される。受信された微弱電波信号について復調や復号を行うことによって、ゲーム装置３は操作データを取得することができる。そして、ゲーム装置３のＣＰＵ１０は、取得した操作データとゲームプログラムとに基づいて、ゲーム処理を行う。なお、通信部３６から無線コントローラモジュール１９への無線送信は所定の周期毎に逐次行われるが、ゲームの処理は１／６０秒を単位として（１フレーム時間として）行われることが一般的であるので、この時間以下の周期で送信を行うことが好ましい。コントローラ５の通信部３６は、例えば１／２００秒に１回の割合で各操作データをゲーム装置３の無線コントローラモジュール１９へ出力する。
【００７５】
［ゲーム処理の概要］
次に、図７および図８を参照して、上記ゲームシステム１において実行されるゲームの概要について説明する。
【００７６】
図７は、本実施形態に係るゲームシステム１によって提供されるバイオリンのシミュレート機能を利用する際の、ユーザによる入力装置７の操作方法を示す概略図である。本実施形態において実行されるゲームでは、ゲーム処理の一部として、ユーザによる操作に応じて音声を出力するためのバイオリンのシミュレート機能を提供する。ユーザは、コントローラ５をバイオリンの弓に見立てて操作することで、あたかもバイオリンを実際に演奏するような感覚で、操作に応じた音声をスピーカ２ａから出力させることが出来る。即ち、本実施形態では、コントローラ５が仮想の弓となる。そして、この仮想の弓としてのコントローラ５を用いて仮想の弦を擦るボウイング動作がコントローラ５に内蔵された各種センサで検出されて、単位時間あたりの姿勢変化量が算出され、この姿勢変化量に応じた音量パラメータが決定される。ボウイング動作には、図７に示された方向へコントローラ５を動かす、ストロークおよび移弦の動きが含まれる。なお、バイオリンのような擦弦楽器では、演奏者は、弦に対して弓を垂直に動かす意識で演奏を行うことが通常であるが、実際には回転運動が検出されるため、弓の動きを、仮想の弓であるコントローラ５の姿勢変化量や、角速度に基づいて検出することが可能である。
【００７７】
また、本実施形態では、ボウイング動作がコントローラ５に内蔵された各種センサで検出されて、移弦の動作が検出され、ユーザは、あたかも実際のバイオリンにおいて移弦を行っているかのような感覚で、移弦を行うことが出来る。更に、本実施形態では、サブユニット７６が仮想の指板となり、この仮想の指板としてのサブユニット７６に設けられたボタン７８ａ、７８ｄおよび７８ｅの押下状態に基づいて、ユーザは、あたかも実際のバイオリンにおいて押弦を行っているかのような感覚で、音高を変更することが出来る。
【００７８】
図８は、本実施形態に係るバイオリンのシミュレート機能を利用する際に用いられる、ローカル座標系（ｘｙｚ座標系）およびこれに対するコントローラ座標系（ＸＹＺ座標系）の動きを示す概略図である。本実施形態では、コントローラ５の前面（Ｙ軸方向）がユーザ側に向いた状態（即ち、予め約９０度ロールした状態）でユーザに把持される。このため、ユーザがコントローラ５を把持してユーザの体を軸にストロークを行う動作は、主にピッチ方向への動作として検出され、ユーザがコントローラを把持してコントローラ５の先端を上下に傾ける移弦動作は、ヨー方向（バイオリンの弦が張られた方向を軸とする周方向）への動作として検出される。また、本実施形態において、このようなストロークの動きは、先述の通りピッチ方向への動作となる。このため、ストロークの動きは、コントローラ座標系のＹ軸およびＺ軸の姿勢がローカル座標系に対して変化する動きとして表現可能である。また、先述の通りコントローラ５は予め約９０度ロールした状態でユーザに把持されるため、ストロークの動きは、ローカル座標系においては主としてｘ成分およ
びｚ成分に反映される動きとなる（図８に示されたコントローラ座標系とローカル座標系との対応関係を参照）。このため、図１５を用いて後述する音量更新処理では、コントローラ座標系のＹ軸およびＺ軸の夫々の姿勢変化量が、ローカル座標系におけるｘ成分およびｚ成分を用いて表される（後述する姿勢変化量ｄｉｒＹ＿ｘ、ｄｉｒＹ＿ｚ、ｄｉｒＺ＿ｘおよびｄｉｒＺ＿ｚを参照）。
【００７９】
［ゲーム装置の機能構成］
図９は、本実施形態に係るゲーム装置３の機能構成およびデータ構成を示す図である。図９に示される各機能部（姿勢変化量取得部１０１、音量パラメータ設定部１０２、弦指定情報保持部１０３、弦変更部１０４、出力音量制御部１０５および音声信号出力部１０６）は、例えば、光ディスク４に格納されるゲームプログラムを読み出して内部メインメモリ１１ｅまたは外部メインメモリ１２に展開し、ＣＰＵ１０、ＤＳＰ１１ｃおよびＧＰＵ１１ｂ等が実行することによって実現される機能の一部である。即ち、本実施形態に係るゲーム装置３は、ゲームプログラムを実行することによって、本発明に係る発音装置のシミュレーションを行う音楽演奏装置として動作する。
【００８０】
姿勢変化量取得部１０１は、操作データのうち、特にコントローラ５の動きに関するデータ（測定情報）に基づいて、現実空間に定義されたローカル座標系（ｘｙｚ座標系）に対する、コントローラ５の姿勢を示す基準となるＸ軸、Ｙ軸、Ｚ軸の、単位時間あたり（本実施形態では、フレームあたり）の変化量を算出することで、コントローラ５の単位時間あたりの姿勢変化量を取得する。ここで、姿勢変化量取得部１０１は、ローカル座標系の軸（本実施形態では、Ｘ軸およびＺ軸）と、コントローラ５の姿勢を示す基準となる軸（本実施形態では、Ｙ軸およびＺ軸）との組み合わせ毎に分解された複数の姿勢変化量を取得する。算出される姿勢変化量の詳細については、後述する。
【００８１】
なお、本実施形態では、姿勢変化量取得部１０１は、音量パラメータを設定するために参照される姿勢変化量として、所定の期間（本実施形態では、１６フレーム）内に取得された姿勢変化量の平均値を取得する。なお、本実施形態では、ジャイロセンサ５５、５６から取得される測定値にばらつきが生じることを考慮して、姿勢変化量の平均値を算出し、これを参照することとしているが、参照される姿勢変化量は、平均値に限定されない。
【００８２】
音量パラメータ設定部１０２は、単位時間（フレーム）あたり姿勢変化量に応じて、発音装置からの発音の音量を決定するための音量パラメータを設定する。音量パラメータ設定部１０２は、姿勢変化量と音量パラメータとの対応関係を定めたマップを参照することで、姿勢変化量に応じた音量パラメータを取得し、設定する。なお、姿勢変化量と音量パラメータとの関係を表したマップについては、図１６を用いて後述する。但し、音量パラメータは、姿勢変化量と音量パラメータとの対応関係を定めた関係式を用いて算出されてもよい。具体的には、姿勢変化量取得部１０１および音量パラメータ設定部１０２は、図１５を用いて後述する音量更新処理を実行することによって、音量パラメータを設定する。
【００８３】
なお、本実施形態において、音量パラメータ設定部１０２は、姿勢変化量取得部１０１によって取得された複数の姿勢変化量のうち、姿勢変化量が大きい順において上位２つ以上の姿勢変化量に基づいて、音量パラメータを設定する。
【００８４】
弦指定情報保持部１０３は、現在発音の対象となっている弦が何れの弦であるかを指定する弦指定パラメータを保持する。そして、弦変更部１０４は、操作データに基づいて、弦を軸とする周方向（コントローラのヨー方向）への角加速度が閾値を越えたと判定された場合に、弦指定パラメータによって指定される弦を変更する。具体的には、弦変更部１０４は、図１２Ａおよび図１２Ｂを用いて後述する指定弦更新処理を実行することによっ
て、弦指定パラメータによって指定される弦を変更する。
【００８５】
出力音量制御部１０５は、操作データに基づいて、ピッチ方向における角加速度の正負が逆転したと判定された場合に、音声信号出力部１０６による音声信号の出力を所定時間止めるかまたは音声信号出力部１０６による音声信号の出力音量を下げる。このようにすることで、ユーザが引き返し動作を行った際に、一旦音声の出力が止まるか音量が下がることとなる。引き返し動作とは、弦楽器において往復するストロークの動作を行おうとしたときに、ストロークの方向を切り換えるために行われる動作である。通常、引き返し動作が行われる際には、ユーザは、それまで行っていた方向へのストロークを終了させるための減速を行うため、角加速度の正負が逆転する。即ち、本実施形態によれば、ユーザによって行われた引き返しが検出され、一旦音声の出力が止まるか音量が下がることとなるため、ユーザに対して、実際にバイオリンを弾いているような感覚を与えることが出来る。具体的には、出力音量制御部１０５は、図１４Ａおよび図１４Ｂを用いて後述するボウイング更新処理および図１７を用いて後述する音声信号出力処理を実行することによって、引き返し動作の際の出力音量制御を行う。
【００８６】
なお、先述の通り、本実施形態において、コントローラ５は約９０度ロールした状態でユーザに把持される（図８を参照）。そして、バイオリンは通常の構えにおいて弦が略水平になり、ストロークの際にはユーザの体を軸として弓が回転運動する。このため、本実施形態では、ピッチ方向への角加速度の正負によって引き返し動作を検出している。但し、シミュレーション対象の擦弦楽器によって弓の構え方および回転方向は異なるため、引き返し動作の検出のために正負の逆転が判定される回転方向は、シミュレーションの対象に応じて適宜設定されてよい。
【００８７】
音声信号出力部１０６は、音量パラメータ等の設定内容に応じた音量の音声信号を出力する。具体的には、音声信号出力部１０６は、図１７を用いて後述する音声信号出力処理を実行することによって、音量パラメータ等の設定内容に応じた音量の音声信号を出力する。
【００８８】
［ゲーム装置のデータ構成］
次に、図９を参照して、本実施形態に係るシミュレート処理において用いられる各種データについて説明する。内部メインメモリ１１ｅまたは外部メインメモリ１２には、ストローク状態、ストロークパワー、弦指定パラメータ、音量パラメータ、音高パラメータおよびサウンドラベル等の各種データが保持される。
【００８９】
ストローク状態は、ユーザによるストロークの状態を示す情報である。バイオリンのボウイングには、ＵＰストロークおよびＤＯＷＮストロークがある。本実施形態では、図７および図８に示された姿勢において、ユーザがコントローラ５を把持した手を自分の体に近づけるようにして行うストロークをＵＰストローク、ユーザがコントローラ５を把持した手を自分の体から遠ざけるようにして行うストロークをＤＯＷＮストローク、と称する。バイオリンは、ＵＰストロークおよびＤＯＷＮストロークが交互に繰り返されることによって演奏される。ストローク状態には、初期化のための値である「ストロークなし」の他、現在のストローク状態を示す「ＵＰストローク」、「ＤＯＷＮストローク」、「ＵＰｔｏＤＯＷＮストローク」および「ＤＯＷＮｔｏＵＰストローク」が設定され得る。ここで、ＵＰｔｏＤＯＷＮストロークとは、ストローク状態がＵＰストロークからＤＯＷＮストロークに移行する間に設定されるストローク状態であり、ＤＯＷＮｔｏＵＰストロークとは、ストローク状態がＤＯＷＮストロークからＵＰストロークに移行する間に設定されるストローク状態である。ストローク状態は、後述する初期化処理において、「ストロークなし」で初期化される。
【００９０】
ストロークパワーは、シミュレーション対象の発音装置（本実施形態では、バイオリン）の音色を設定する際に参照される情報である。本実施形態では、ストロークパワーに応じたサウンドラベルを再生することで、弓を引く勢いに応じた音色を有する音声信号を出力することを可能としている。ストロークパワーには、「弱」または「強」が設定され得る。ストロークパワーは、後述する初期化処理において、「弱」で初期化される。
【００９１】
弦指定パラメータは、バイオリンの４本の弦のうちのどの弦が発音の対象となっているか（即ち、仮想の弓がどの弦に当たっているか）を示す情報である。バイオリンには、低音弦から順にＧ線、Ｄ線、Ａ線、Ｅ線が張られるため、弦指定パラメータには、これらの４本の弦を識別可能な情報が設定される。なお、本実施形態において、弦指定パラメータは、Ｇ線を示す値として０（ゼロ）、Ｄ線を示す値として５、Ａ線を示す値として１０、Ｅ線を示す値として１５が用いられる。このため、弦指定パラメータに５加算することで、１弦ぶん高音弦側に移弦し、弦指定パラメータから５減算することで、１弦ぶん低音弦側に移弦することとなる。但し、弦指定パラメータにおいて各弦を指定する方法には、各弦を示すフラグ等、その他の方法が採用されてもよい。弦指定パラメータは、後述する初期化処理において、Ａ線を示す値（本実施形態では、「１０」）で初期化される。
【００９２】
音量パラメータは、出力される音声信号の音量を指定するための情報である。本実施形態において、音量パラメータは、無音を示す０．００００から最大音量を示す１．００００までの間の値を取り得る。音量パラメータは、後述する初期化処理において、０．００００（無音）で初期化される。
【００９３】
音高パラメータは、出力される音声信号の音高を指定するための情報である。また、本実施形態において、音高パラメータは、バイオリンのＡ線を開放状態で発音させた場合の音高（４４０または４４２Ｈｚ）を０（ゼロ）として、半音上昇する毎に１増加、半音下降する毎に１減少する値をとる。音高パラメータは、初期化処理において、０（ゼロ）で初期化される。
【００９４】
サウンドラベルは、ゲーム装置３から出力される音声の音色を決定するための音波形のデータである。サウンドラベルには、ストロークパワー「弱」に対応する音色を表現するための音波形、またはストロークパワー「強」に対応する音色を表現するための音波形が設定可能である。サウンドラベルは、後述する初期化処理において、ストロークパワー「弱」に対応するサウンドラベルで初期化される。
【００９５】
更に、内部メインメモリ１１ｅまたは外部メインメモリ１２には、移弦準備フラグ、音量制御フラグおよび引き返しフラグを含む各種フラグが保持される。移弦準備フラグとは、移弦の準備段階にあるか否かを示すためのフラグである。音量制御フラグは、引き返し動作の際に音量が小さくなる効果を実施させるために、音声信号出力処理において参照されるフラグである。また、引き返しフラグは、ストローク中に引き返し動作が検出されたことを示すためのフラグである。各種フラグは、後述する初期化処理において、ＯＦＦで初期化される。
【００９６】
＜処理の流れ＞
次に、本実施形態において実行される処理の流れを、フローチャートを用いて説明する。なお、本実施形態に係るフローチャートに示された処理の具体的な内容および処理順序は、本発明を実施するための一例である。具体的な処理内容および処理順序は、本発明の実施の形態に応じて適宜選択されてよい。
【００９７】
［シミュレート処理］
図１０は、本実施形態に係るシミュレート処理の流れを示すフローチャートである。本
実施形態に係るシミュレート処理は、ゲーム装置３によって実行されるゲームプログラムに基づくゲームの一部として実行される。
【００９８】
ステップＳ００１からステップＳ００３では、初期化処理が行われる。ＣＰＵ１０は、内部メインメモリ１１ｅまたは外部メインメモリ１２のバッファ領域に記録される操作データ、本シミュレート処理に用いられる各種変数、本シミュレート処理の実行状態を管理するための情報、および本シミュレート処理において用いられる各種フラグを初期化する（ステップＳ００１）。また、ＣＰＵ１０は、本シミュレート処理において出力される音声信号を生成するために参照される、音量パラメータ、音高パラメータおよびサウンドラベルを初期化する（ステップＳ００２）。初期化の具体的な内容は、データ構成の説明において先述した通りであるため、説明を省略する。
【００９９】
更に、ゲーム装置３は、ユーザに対して、コントローラ５を弓に見立ててバイオリンを演奏する姿勢をとるよう案内する。ユーザが演奏する姿勢をとると（図７を参照）、ＣＰＵ１０は、そのコントローラ位置を初期位置として、現実空間における位置姿勢を示す基準となるローカル座標系を定義し、このローカル座標系と、コントローラ５の位置姿勢を示すコントローラ座標系との対応関係を取得する（ステップＳ００３）。ローカル座標系とコントローラ座標系との対応関係は、コントローラ５から取得された操作データに基づいて算出可能である。その後、処理はステップＳ００４へ進む。
【０１００】
なお、本フローチャートに示された処理は、６０フレーム／秒で分割されたフレーム単位で繰り返し実行されることで、操作データに従って音声信号を出力するバイオリンのシミュレート処理である。このため、以下に説明するステップＳ００４からステップＳ００９までの処理は、フレーム毎に実行される。
【０１０１】
ステップＳ００４では、コントローラ５から入力される操作データが更新される。ＣＰＵ１０は、コントローラ５およびサブユニット７６に設けられた各操作ボタン３２ａ〜３２ｉ、７８ｅ、７８ｄ、およびスティック７８ａの状態、画像処理回路４１によって算出されたマーカ座標、加速度センサ３７によって検出された加速度、およびジャイロセンサ５５、５６を用いて計測された角速度等の、コントローラ５に設けられた各種センサによる操作データを取得し、内部メインメモリ１１ｅまたは外部メインメモリ１２のバッファ領域を更新する。その後、処理はステップＳ００５へ進む。
【０１０２】
ステップＳ００５では、コントローラ５の三次元姿勢に係る情報（以下、「姿勢関連情報」と称する）が更新される。ＣＰＵ１０は、ステップＳ００４において更新されたコントローラ５からの入力内容（操作データ）に基づいて、コントローラ５の、ローカル座標に対する三次元姿勢、コントローラ５のヨー方向、ピッチ方向、ロール方向の夫々に係る角加速度および角加速度変化量を算出し、メモリ上に保持されているコントローラ５の姿勢関連情報を更新する。例えば、ＣＰＵ１０は、ジャイロセンサ５５、５６によって取得されて更新されたコントローラ５のヨー方向、ピッチ方向、ロール方向の夫々に係る角速度に基づいて、ヨー方向、ピッチ方向、ロール方向の夫々に係る角加速度および角加速度変化量を算出する。なお、角加速度および角速度変化量は、ジャイロセンサ５５、５６から取得された角速度のみに基づいて算出されてもよいし、その他加速度センサ３７から取得された情報等を用いて補正されてもよい。その後、処理はステップＳ００６へ進む。
【０１０３】
ステップＳ００６では、音高更新処理が実行される。ＣＰＵ１０は、ステップＳ００４において更新された操作データおよびステップＳ００５において更新された姿勢関連情報に基づいて、出力される音声信号の音高を指定するための音高パラメータを更新する。音高更新処理の具体的な内容については、図１１から図１３に示すフローチャートを用いて後述する。その後、処理はステップＳ００７へ進む。
【０１０４】
ステップＳ００７では、ボウイング更新処理が実行される。ＣＰＵ１０は、ステップＳ００４において更新された操作データおよびステップＳ００５において更新された姿勢関連情報に基づいて、弦楽器の演奏におけるユーザの手の動きの状態を示すストローク状態、および引き返しに伴う音量制御フラグを更新する。ボウイング更新処理の具体的な内容については、図１４Ａおよび図１４Ｂに示すフローチャートを用いて後述する。その後、処理はステップＳ００８へ進む。
【０１０５】
ステップＳ００８では、音量更新処理が実行される。ＣＰＵ１０は、ステップＳ００４において更新された操作データおよびステップＳ００５において更新された姿勢関連情報に基づいて、出力される音声信号の音量を指定するための音量パラメータを更新する。音量更新処理の具体的な内容については、図１５に示すフローチャートを用いて後述する。その後、処理はステップＳ００９へ進む。
【０１０６】
ステップＳ００９では、音声信号出力処理が実行される。ＣＰＵ１０は、ステップＳ００６からステップＳ００８の処理において設定された各種情報に基づいて、音声信号を生成し、出力する。音声信号出力処理の具体的な内容については、図１７に示すフローチャートを用いて後述する。
【０１０７】
ステップＳ００９に示された音声信号出力処理が終了すると、その後、処理はステップＳ０１０へ進む。ステップＳ０１０では、本フローチャートに示されたシミュレート処理を終了するか否かが判定され、シミュレート処理を終了すると判定された場合、本フローチャートに示された処理は終了する。一方、シミュレート処理を終了しないと判定された場合、処理はステップＳ００４へ進む。即ち、本実施形態に係るシミュレート処理では、ステップＳ００４からステップＳ００９までの処理が、ユーザからの終了指示等が受け付けられるまで繰り返し実行される。なお、先述の通り、本フローチャートのステップＳ００４からステップＳ００９までの処理は、フレーム毎に実行される。
【０１０８】
次に、図１０のステップＳ００６からステップＳ００９に示された、音高更新処理、ボウイング更新処理、音量更新処理、および音声信号出力処理の詳細を、図１１から図１７のフローチャートを用いて説明する。
【０１０９】
［音高更新処理］
図１１は、本実施形態に係る音高更新処理の流れを示すフローチャートである。本実施形態に係る音高更新処理は、指定弦更新処理および押弦位置更新処理を含む。指定弦更新処理において、ＣＰＵ１０は、ジャイロセンサ５５、５６等を用いて検出されたコントローラ５の動き等に基づいて、バイオリンの４本の弦のうちのどの弦が発音の対象となっているかを示す弦指定パラメータを更新する（ステップＳ１０１）。そして、押弦位置更新処理において、ＣＰＵ１０は、押弦位置を示すサブユニット７６のボタンの押下状態等に基づいて、発音の対象となっている弦のどの位置が押弦されているかを判定し、音高パラメータを更新する（ステップＳ１０２）。その後、本フローチャートに示された処理は終了する。なお、指定弦更新処理の詳細については、図１２Ａおよび図１２Ｂを参照して、押弦位置更新処理の詳細については、図１３を参照して後述する。
【０１１０】
図１２Ａおよび図１２Ｂは、本実施形態に係る指定弦更新処理の流れを示すフローチャートである。
【０１１１】
ステップＳ２０１では、移弦準備フラグの状態が判定される。ＣＰＵ１０は、移弦準備フラグを参照することで、現在の状態が移弦の準備段階であるか否かを判定する。移弦準備フラグがＯＦＦであった場合、処理はステップＳ２０２へ進む。移弦準備フラグがＯＮ
であった場合、処理はステップＳ２０６へ進む。
【０１１２】
先述の通り、移弦準備フラグとは、移弦の準備段階にあるか否かを示すためのフラグである。本実施形態では、ユーザによる移弦を示唆する動きが検出された際に、即座に移弦を行うことなく、移弦準備フラグを用いて、移弦の準備段階を設けることとしている。実際のバイオリンが演奏される場合、移弦によって発音される音が変わるのは、移弦後のストロークが始まったタイミングであり、ユーザによる移弦の動きが検出されて即座に音を変化させてしまうと、発音の流れが不自然となる。このため、本実施形態では、移弦後の引き返しストロークが始まったタイミングで自然に発音が開始する感覚をユーザに与えるために、移弦の動きが検出されたタイミングでは移弦の準備のみを行い（移弦準備フラグＯＮ）、次フレーム以降で発音される音を変化させることとしている。
【０１１３】
ステップＳ２０２およびステップＳ２０３では、Ａボタン３２ｄの押下状態が所定のフレーム数以上継続しているか否かが判定される。ＣＰＵ１０は、ステップＳ２０１において移弦準備フラグがＯＦＦであると判定されたことを受けて、シミュレート処理のステップＳ００４において更新された操作データを参照することで、Ａボタン３２ｄが押下されている状態であるか否かを判定する（ステップＳ２０２）。そして、Ａボタン３２ｄが押下されていないと判定された場合、本フローチャートに示された処理は終了する。また、Ａボタン３２ｄが押下されていると判定された場合、ＣＰＵ１０は、現在の押下状態が何フレーム数継続しているかを示す押下状態継続フレーム数を参照し、所定の閾値（例えば、６０フレーム）と比較することで、Ａボタン３２ｄの押下状態が、所定のフレーム数以上継続しているか否かを判定する（ステップＳ２０３）。より具体的には、内部メインメモリ１１ｅまたは外部メインメモリ１２に用意されたカウンタに、Ａボタン３２ｄの押下状態が継続されている間、１フレームにつき１カウントアップするカウンタを用意する方法等を用いて、Ａボタン３２ｄの押下状態継続フレーム数を計測する。このカウンタは、Ａボタン３２ｄの押下状態が解除された時点で０（ゼロ）に初期化される。Ａボタン３２ｄの押下状態が、所定のフレーム数以上継続していると判定された場合、本フローチャートに示された処理は終了する。一方、Ａボタン３２ｄの押下状態が所定のフレーム数以上継続していないと判定された場合、処理はステップＳ２０４へ進む。
【０１１４】
即ち、本実施形態では、Ａボタン３２ｄが押されているときのみ移弦の処理を実行することで、ユーザの意図しない移弦を防止することとしている（ステップＳ２０２）。但し、Ａボタン３２ｄが所定時間以上押下されている場合には、ユーザがＡボタン３２ｄを押しっぱなしにしている（誤操作）と判断し、Ａボタン３２ｄが押されていても移弦の処理を実行しない（ステップＳ２０３）。なお、移弦を明示的に許可する操作（本実施形態では、Ａボタン３２ｄを押下する操作）は省略されてもよい。移弦を明示的に許可する操作が省略される場合、コントローラ５の動きのみで移弦が実行されるため、ユーザに対して、より現実に近いシミュレーションを提供することが出来る。
【０１１５】
ステップＳ２０４では、コントローラ５の動きに基づいて、ユーザが移弦のための動きを行っているか否かが判定される。ＣＰＵ１０は、シミュレート処理のステップＳ００５において更新された、コントローラ５のピッチ方向の角加速度変化量およびヨー方向の角加速度を参照することで、
（１）ピッチ方向の角加速度変化量の正負が前フレームと比較して逆転したか否かを判定し、更に、
（２）ヨー方向の角加速度が所定の範囲となったか否かを判定する。
【０１１６】
本実施形態では、（１）ピッチ方向の角加速度変化量の正負が前フレームと比較して逆転したか否かを判定することによって、ユーザによる、引き返しのための減速を行おうとする動きが検出され、（２）ヨー方向の角加速度が所定の範囲となったか否かを判定する
ことによって、ユーザによる、弦を変更する動きが検出される。ヨー方向の角加速度が所定の範囲となったか否かの判定においては、例えば、ヨー方向の角加速度が−０．５以下となった場合に、高音弦へ移弦するための動作が行われていると判定される。一方、ヨー方向の角加速度が０．３以上となった場合には、低音弦へ移弦するための動作が行われていると判定される。
【０１１７】
ここで、ピッチ方向の角加速度変化量の正負が前フレームと比較して逆転し、且つ、ヨー方向の角加速度が所定の範囲となったと判定された場合、ＣＰＵ１０は、ユーザが移弦のための動きを行っていると判定する。ユーザが移弦のための動きを行っていると判定された場合、処理はステップＳ２０５へ進む。ユーザが移弦のための動きを行っていないと判定された場合、本フローチャートに示された処理は終了する。
【０１１８】
ステップＳ２０５では、移弦準備フラグがＯＮに設定される。ＣＰＵ１０は、ステップＳ２０４において、ユーザが移弦のための動きを行っていると判定されたことを受けて、移弦準備フラグをＯＮに設定する。その後、本フローチャートに示された処理は終了する。本ステップにおいて移弦準備フラグがＯＮに設定されることによって、次フレームにおいて本フローチャートに示された指定弦更新処理が実行された場合に、ステップＳ２０１に示された判定において処理はステップＳ２０６へ進み、実際の移弦（弦指定パラメータを更新する処理）が実行される。
【０１１９】
ステップＳ２０６では、移弦に伴うユーザの引き返し動作が終了したか否かが判定される。ＣＰＵ１０は、ステップＳ２０１において移弦準備フラグがＯＮであると判定されたことを受けて、シミュレート処理のステップＳ００５において更新された、コントローラ５のピッチ方向の角加速度を参照し、移弦に伴う引き返し動作が終了したか否かを判定する。より具体的には、ＣＰＵ１０は、コントローラ５のピッチ方向の角加速度が、０（ゼロ）を含む所定の範囲内にある場合には、引き返し動作が終了したと判定する。一方、ＣＰＵ１０は、コントローラ５のピッチ方向の角加速度が、０（ゼロ）を含む所定の範囲内にない場合には、引き返し動作が未だ終了していない（引き返し動作中である）と判定する。ユーザの引き返し動作が終了したと判定された場合、処理はステップＳ２０７へ進む。ユーザの引き返し動作が終了していないと判定された場合、本フローチャートに示された処理は終了する。即ち、本実施形態に係る指定弦更新処理では、ユーザによる移弦の動きが検出されて移弦準備フラグがＯＮとなった後も、ユーザの引き返し動作が終了するまでは、実際の移弦を行わないこととしている。このようにすることで、ユーザに対して、実際の弦楽器を演奏する場合に近い感覚を与えることが出来る。
【０１２０】
ステップＳ２０７では、ユーザによる移弦動作が、現在発音の対象となっている弦から見て高音弦側への移弦動作であるか、低音弦側への移弦動作であるかが判定される。ＣＰＵ１０は、シミュレート処理のステップＳ００５において更新された、コントローラ５のヨー方向の角加速度を参照することで、ユーザの移弦動作が、現在発音の対象となっている弦から見て高音弦側への移弦動作であるか、低音弦側への移弦動作であるかを判定する。本実施形態に示す例では、左方向へのヨーが正の値で示され、右方向へのヨーが負の値で示される。先述の通り、本実施形態では、コントローラ５が９０度傾いた状態（９０度ロールした状態）でユーザに把持され、ユーザから見てコントローラ５の先端を上下に傾ける動作がヨー方向への動作となる。そして、バイオリンでは、通常通りユーザが左手に楽器を持ち、右手に弓を持って構えた場合、弓の先端寄りに低音弦が、基端寄りに高音弦が張られている。このため、ヨーの値が負である場合（コントローラ５の先端を上に傾ける動作である場合）、ユーザの移弦動作は、高音弦側への移弦動作であると判定され、ヨーの値が正である場合（コントローラ５の先端を下に傾ける動作である場合）、ユーザの移弦動作は、低音弦側への移弦動作であると判定される。高音弦側への移弦動作であると判定された場合、処理はステップＳ２０８へ進む。一方、低音弦側への移弦動作であると
判定された場合、処理はステップＳ２１０へ進む。
【０１２１】
ステップＳ２０８およびステップＳ２０９では、高音弦側への移弦が実行される。ＣＰＵ１０は、弦指定パラメータを参照することで、現在発音の対象となっている弦が最高音弦（バイオリンにあっては、Ｅ線）であるか否かを判定する（ステップＳ２０８）。ここで、現在発音の対象となっている弦が最高音弦であると判定された場合、これ以上高音弦側への移弦は出来ないため、移弦は行われず、処理はステップＳ２１２へ進む。一方、現在発音の対象となっている弦が最高音弦ではないと判定された場合、ＣＰＵ１０は、弦指定パラメータに、現在発音の対象となっている弦より１弦分高音弦側の弦を示す値を設定する（ステップＳ２０９）。その後、処理はステップＳ２１２へ進む。
【０１２２】
ステップＳ２１０およびステップＳ２１１では、低音弦側への移弦が実行される。ＣＰＵ１０は、弦指定パラメータを参照することで、現在発音の対象となっている弦が最低音弦（バイオリンにあっては、Ｇ線）であるか否かを判定する（ステップＳ２１０）。ここで、現在発音の対象となっている弦が最低音弦であると判定された場合、これ以上低音弦側への移弦は出来ないため、移弦は行われず、処理はステップＳ２１２へ進む。一方、現在発音の対象となっている弦が最低音弦ではないと判定された場合、ＣＰＵ１０は、弦指定パラメータに、現在発音の対象となっている弦より１弦分低音弦側の弦を示す値を設定する（ステップＳ２１１）。その後、処理はステップＳ２１２へ進む。
【０１２３】
ステップＳ２１２では、移移弦準備フラグがＯＦＦに設定される。ＣＰＵ１０は、移弦が実行されたか（ステップＳ２０９またはステップＳ２１１）、または移弦が出来ないと判定（ステップＳ２０８またはステップＳ２１０）されたことを受けて、移弦準備フラグをＯＦＦに設定する。その後、本フローチャートに示された処理は終了する。
【０１２４】
図１３は、本実施形態に係る押弦位置更新処理の流れを示すフローチャートである。
【０１２５】
ステップＳ３０１からステップＳ３０７では、現在発音の対象となっている弦に基づいて、当該弦に応じた音高パラメータが設定される。ＣＰＵ１０は、弦指定パラメータを参照することで、現在発音の対象となっている弦を判定し、判定の結果に応じて音高パラメータを設定する。具体的には、ＣＰＵ１０は、弦指定パラメータがＧ線を示す値である場合、音高パラメータに−１４を設定し（ステップＳ３０１およびステップＳ３０２）、弦指定パラメータがＤ線を示す値である場合、音高パラメータに−７を設定し（ステップＳ３０３およびステップＳ３０４）、弦指定パラメータがＡ線を示す値である場合、音高パラメータに０（ゼロ）を設定し（ステップＳ３０５およびステップＳ３０６）、弦指定パラメータがＥ線を示す値である場合、音高パラメータに＋７を設定する（ステップＳ３０７）。その後、処理はステップＳ３０８へ進む。
【０１２６】
ステップＳ３０８からステップＳ３１３では、ユーザの押弦操作に基づいて、音高パラメータが変更される。ＣＰＵ１０は、シミュレート処理のステップＳ００４において更新された操作データを参照することで、Ｚボタン７８ｅ、Ｃボタン７８ｄ、およびスティック７８ａの何れかが押下されている状態であるか否かを判定する。ＣＰＵ１０は、Ｚボタン７８ｅが押下されている場合、音高パラメータに５または６加算し（ステップＳ３０８およびステップＳ３０９）、Ｃボタン７８ｄが押下されている場合、音高パラメータに３または４加算し（ステップＳ３１０およびステップＳ３１１）、スティック７８ａに０以外の値がある場合、音高パラメータに１または２加算する（ステップＳ３１２およびステップＳ３１３）。何れのボタンも押下されていない場合（ステップＳ３１２において「Ｎｏ」に分岐した場合）には、音高パラメータの変更は行われない。なお、本実施形態において、音高パラメータには、演奏に用いられるキーおよびスケールに応じた値が加算される。ＣＰＵ１０は、予め設定されたキーおよびスケールを参照して、音高パラメータに加
算される値が、上記ステップＳ３０８からステップＳ３１３の説明において示された値の何れであるかを決定する。例えば、ゲーム内で流れる楽曲に合わせて演奏を行う場合、自動的に当該楽曲の調性（キーおよびモード）に合わせた設定がなされてよい。その後、本フローチャートに示された処理は終了する。
【０１２７】
なお、フローチャートから把握される通り、押弦操作のためのボタンには優先順位が存在する。即ち、押弦のためのボタンが複数押下されている場合、実際の楽器においてより高音側の押弦箇所に従って音高が決定されるのと同様、より大きな値が音高パラメータに加算されるボタンが優先されて、音高パラメータが決定される。このため、ユーザは、実際の楽器演奏に近い感覚でプレイできる。また、
【０１２８】
［ボウイング更新処理］
図１４Ａおよび図１４Ｂは、本実施形態に係るボウイング更新処理の流れを示すフローチャートである。
【０１２９】
ステップＳ４０１およびステップＳ４０２では、ボウイング更新処理において用いられる、ピッチ方向の角加速度の平均値（以下、「平均角加速度ＡＣＣ＿ＡＶＥ２」と称する）および角加速度変化量の平均値（以下、「平均角加速度変化量Ｖ＿ＡＶＥ８」と称する）が取得される。ＣＰＵ１０は、シミュレート処理のステップＳ００５において更新された、コントローラ５のピッチ方向の角加速度を２フレーム分取得し、その平均を算出する（ステップＳ４０１）。また、ＣＰＵ１０は、シミュレート処理のステップＳ００５において更新された、コントローラ５のピッチ方向の角加速度変化量を８フレーム分取得し、その平均を算出する（ステップＳ４０２）。なお、本実施形態では、ジャイロセンサ５５、５６から取得される測定値にばらつきが生じることを考慮して、平均角加速度ＡＣＣ＿ＡＶＥ２および平均角加速度変化量Ｖ＿ＡＶＥ８を算出し、これを参照することとしているが、参照される角加速度および角加速度変化量は、平均値に限定されない。その後、処理はステップＳ４０３へ進む。
【０１３０】
ステップＳ４０３からステップＳ４１３では、現在のストローク状態および角加速度に基づいて、ストローク状態が更新される。ＣＰＵ１０は、現在のストローク状態、およびステップＳ４０１で算出された平均角加速度ＡＣＣ＿ＡＶＥ２に基づいて、ストローク状態を更新する。本実施形態において、ＵＰストローク中は、ピッチ方向の角速度が負の値で示され、ＤＯＷＮストローク中は、ピッチ方向の角速度が正の値で示される。このため、ＵＰストローク中にユーザが手を動かす速さを落とす動きや、実際にＤＯＷＮストロークを開始して手を動かす早さを上げる動きは、正の角加速度として表れる。また、ＤＯＷＮストローク中にユーザが手を動かす速さを落とす動きや、実際にＵＰストロークを開始して手を動かす早さを上げる動きは、負の角加速度として表れる。
【０１３１】
このことから、現在のストローク状態がＵＰストロークに設定されており、且つ平均角加速度ＡＣＣ＿ＡＶＥ２が正である場合、ＣＰＵ１０は、ＵＰストローク中にユーザがＤＯＷＮストロークに向けた動きを始めたと判断し、ストローク状態をＵＰｔｏＤＯＷＮストロークに設定する（ステップＳ４０３、Ｓ４０７およびＳ４０８）。また、現在のストローク状態がＤＯＷＮストロークに設定されており、且つ平均角加速度ＡＣＣ＿ＡＶＥ２が負である場合、ＣＰＵ１０は、ＤＯＷＮストローク中にユーザがＵＰストロークに向けた動きを始めたと判断し、ストローク状態をＤＯＷＮｔｏＵＰストロークに設定する（ステップＳ４０４、Ｓ４０９およびＳ４１０）。その後、処理はステップＳ４１４へ進む。
【０１３２】
また、ＣＰＵ１０は、現在のストローク状態がＵＰｔｏＤＯＷＮストロークに設定されており、且つ平均角加速度ＡＣＣ＿ＡＶＥ２が正である場合、ユーザがＤＯＷＮストロークを始めたと判断出来るため、ストローク状態をＤＯＷＮストロークに設定する（ステッ
プＳ４０５、Ｓ４１１およびＳ４１２）。また、ＣＰＵ１０は、現在のストローク状態がＤＯＷＮｔｏＵＰストロークに設定されており、且つ平均角加速度ＡＣＣ＿ＡＶＥ２が負である場合、ユーザがＵＰストロークを始めたと判断出来るため、ストローク状態をＵＰストロークに設定する（ステップＳ４０６およびＳ４１３）。その後、処理はステップＳ４２０へ進む。
【０１３３】
なお、現在のストローク状態がＵＰストロークに設定されており、且つ平均角加速度ＡＣＣ＿ＡＶＥ２が正でない場合、ＵＰストロークが継続されていると判断出来るため、ＣＰＵ１０は、ストローク状態を更新しない（ステップＳ４０７の「Ｎｏ」）。同様に、現在のストローク状態がＤＯＷＮストロークに設定されており、且つ平均角加速度ＡＣＣ＿ＡＶＥ２が負でない場合、ＤＯＷＮストロークが継続されていると判断出来るため、ＣＰＵ１０は、ストローク状態を更新しない（ステップＳ４０９の「Ｎｏ」）。ストローク状態が更新されなかった場合、処理はステップＳ４１６へ進む。
【０１３４】
即ち、本実施形態に示された処理において、ストローク状態は、ユーザの動きに応じて、「ＵＰストローク→ＵＰｔｏＤＯＷＮストローク→ＤＯＷＮストローク→ＤＯＷＮｔｏＵＰストローク→ＵＰストローク・・・」の順に設定される。このようにして、本実施形態では、バイオリンを演奏する際のボウイングの動きが取得される。
【０１３５】
但し、現在のストローク状態がＵＰｔｏＤＯＷＮストロークに設定されているが、平均角加速度ＡＣＣ＿ＡＶＥ２が正でない場合、ＣＰＵ１０は、ストローク状態をＵＰストロークに戻す設定を行う（ステップＳ４１１およびＳ４１３）。同様に、現在のストローク状態がＤＯＷＮｔｏＵＰストロークに設定されているが、平均角加速度ＡＣＣ＿ＡＶＥ２が負でない場合、ＣＰＵ１０は、ストローク状態をＤＯＷＮストロークに戻す設定を行う（ステップＳ４０６およびＳ４１２）。その後、処理はステップＳ４２０へ進む。
【０１３６】
ステップＳ４１４からステップＳ４１６では、前回の引き返し処理完了からの経過時間に基づいて、引き返しフラグが設定される。本実施形態において、ピッチ方向の角加速度は、６０フレーム／秒で分割されたフレーム毎に更新されるため、ユーザの意図しない手の動きによって、平均角加速度ＡＣＣ＿ＡＶＥ２の正負が頻繁に入れ替わる可能性がある。このため、ＣＰＵ１０は、ユーザの意図しない手の細かい動きによって生じる平均角加速度ＡＣＣ＿ＡＶＥ２の正負の入れ替わりを、引き返し動作と誤判定することを防止するため、前回の引き返し処理完了から３フレーム以上が経過しているか否かを判定する（ステップＳ４１４）。なお、前回の引き返し処理完了は、例えば、後述するステップＳ６０８において、音量制御フラグがＯＦＦに設定されたタイミングとすることが出来る。そして、前回の引き返し処理完了から３フレーム以上が経過していると判定された場合、ＣＰＵ１０は、引き返しフラグをＯＮに設定する（ステップＳ４１５）。一方、前回の引き返しから３フレーム以上が経過していないと判定された場合、ＣＰＵ１０は、引き返しフラグをＯＦＦに設定する（ステップＳ４１６）。また、ＣＰＵ１０は、ステップＳ４０７またはステップＳ４０９における判定の結果、ストローク状態が更新されなかった場合にも、引き返しフラグをＯＦＦに設定する（ステップＳ４１６）。その後、処理はステップＳ４１７へ進む。
【０１３７】
ステップＳ４１７からステップＳ４１９では、平均角加速度変化量Ｖ＿ＡＶＥ８に基づいて、ストロークパワーが設定される。ＣＰＵ１０は、ステップＳ４０２で算出された平均角加速度変化量Ｖ＿ＡＶＥ８に基づいて、ストロークパワーを設定する。引き返し動作の際の平均角加速度変化量Ｖ＿ＡＶＥ８は、ユーザによる引き返し動作の勢いの程度を示す。このため、ＣＰＵ１０は、平均角加速度変化量Ｖ＿ＡＶＥ８を所定の閾値（例えば、０．０４）と比較し（ステップＳ４１７）、平均角加速度変化量Ｖ＿ＡＶＥ８が所定の閾値を超えている場合、ストロークパワーに「強」を設定する。一方、ＣＰＵ１０は、平均
角加速度変化量Ｖ＿ＡＶＥ８が所定の閾値を超えていない場合、ストロークパワーに「弱」を設定する。その後、本フローチャートに示された処理は終了する。
【０１３８】
ステップＳ４２０およびステップＳ４２１では、引き返しフラグの内容に応じて、音量制御フラグが設定される。ＣＰＵ１０は、前フレームにおいてボウイング更新処理が実行された際に設定された引き返しフラグを参照し（ステップＳ４２０）、引き返しフラグがＯＮに設定されている場合、音量制御フラグをＯＮに設定する（ステップＳ４２１）。一方、引き返しフラグがＯＮに設定されている場合、音量制御フラグは設定されない（ステップＳ４２０の「Ｎｏ」）。その後、本フローチャートに示された処理は終了する。
【０１３９】
なお、本実施形態では、過渡的なストローク状態として、ＵＰｔｏＤＯＷＮストロークおよびＤＯＷＮｔｏＵＰストロークを設定し、ストローク状態の移行を管理することとしているが、実施の形態によっては、ＵＰｔｏＤＯＷＮストロークおよびＤＯＷＮｔｏＵＰストロークは用いられなくてもよい。この場合、ストローク状態は、ユーザの動きに応じて「ＵＰストローク→ＤＯＷＮストローク→ＵＰストローク・・・」の順に設定される。ＵＰｔｏＤＯＷＮストロークおよびＤＯＷＮｔｏＵＰストロークが設定されない場合、ＣＰＵ１０は、毎フレーム、またはストローク状態が変更されたフレームの次フレームにおいて、引き返しフラグを参照し、引き返しフラグの内容に応じて、音量制御フラグを設定する。
【０１４０】
［音量更新処理］
図１５は、本実施形態に係る音量更新処理の流れを示すフローチャートである。
【０１４１】
ステップＳ５０１では、ローカル座標系における、コントローラ５の姿勢変化量が更新される。ＣＰＵ１０は、シミュレート処理のステップＳ００４において更新された、コントローラ５のヨー方向、ピッチ方向、ロール方向の夫々に係る角速度に基づいて、ローカル座標系における、コントローラ５の姿勢変化量を算出する。この算出は、フレーム毎に更新された最新の角速度に基づいて、毎フレーム行われる。
【０１４２】
具体的には、ＣＰＵ１０は、コントローラ座標系のＹ軸およびＺ軸の夫々が１フレーム間に移動した移動量を、ローカル座標系におけるベクトルで表すことで、単位時間あたりのコントローラ５の姿勢変化量を算出する。但し、本実施形態に係る音量更新処理において、コントローラ５の姿勢は、コントローラ座標系のＹ軸およびＺ軸のみで定義され、コントローラ５の姿勢変化量は、ローカル座標系のｘ成分およびｚ成分についてのみ算出される。この姿勢変化量は、コントローラ５のヨー方向、ピッチ方向、ロール方向の夫々に係る角速度に基づいて算出できる。
【０１４３】
即ち、本実施形態において、ＣＰＵ１０は、コントローラ座標系のＹ軸の姿勢変化量として、ローカル座標系におけるｘ成分の姿勢変化量ｄｉｒＹ＿ｘと、ローカル座標系におけるｚ成分の姿勢変化量ｄｉｒＹ＿ｚと、を算出し、コントローラ座標系のＺ軸の姿勢変化量として、ローカル座標系におけるｘ成分の姿勢変化量ｄｉｒＺ＿ｘと、ローカル座標系におけるｚ成分の姿勢変化量ｄｉｒＺ＿ｚと、を算出する。即ち、本実施形態では、姿勢変化量として、姿勢変化量ｄｉｒＹ＿ｘ、ｄｉｒＹ＿ｚ、ｄｉｒＺ＿ｘおよびｄｉｒＺ＿ｚの４値が算出される。例えば、コントローラ座標系のＹ軸上の点（０，１，０）およびＺ軸上の点（０，０，１）がローカル座標系において移動した量を、ローカル座標系上のベクトル（本実施形態では、ｘ成分およびｚ成分のみ）で表し、これを姿勢変化量とすることが出来る。その後、処理はステップＳ５０２へ進む。なお、本実施形態では、姿勢変化量として、姿勢変化量ｄｉｒＹ＿ｘ、ｄｉｒＹ＿ｚ、ｄｉｒＺ＿ｘおよびｄｉｒＺ＿ｚを算出して音量パラメータを取得するための情報としているが、他の実施形態では、角速度と音量パラメータとを関連付けておき、ジャイロセンサから取得される角速度自体に
基づいて音量パラメータを取得する方法が採用されてもよい。
【０１４４】
なお、本実施形態では、姿勢変化量として、姿勢変化量ｄｉｒＹ＿ｘ、ｄｉｒＹ＿ｚ、ｄｉｒＺ＿ｘおよびｄｉｒＺ＿ｚの４値を算出することとしているが、これは、バイオリンの演奏におけるストロークでは、ローカル座標系におけるｘ成分およびｚ成分に反映される動き（コントローラ５のＹ軸およびＺ軸の姿勢変化）が主であり、ローカル座標系において主にｙ成分に反映される動き（コントローラ５のＸ軸の姿勢変化）は小さいためである（但し、移弦の動きは除く）。このため、姿勢変化量として算出されるローカル座標の成分およびコントローラ５の軸の組み合わせは、本実施形態に示された４値に限定されない。姿勢変化量は、シミュレーションの対象に応じて適宜採用されることが好ましく、また、ローカル座標系のｘｙｚ成分の全てと、コントローラ５のＸＹＺ軸の全てとの組み合わせ（即ち、９値）について算出されてもよい。
【０１４５】
ステップＳ５０２では、音量パラメータの取得に用いる姿勢変化量として「最大姿勢変化量２値」の平均姿勢変化量ＭＭ＿ＡＶＥ１６が算出される。ＣＰＵ１０は、ステップＳ５０１において算出された姿勢変化量ｄｉｒＹ＿ｘ、ｄｉｒＹ＿ｚ、ｄｉｒＺ＿ｘおよびｄｉｒＺ＿ｚのうち、値の大きい方から２値を積算することで、「最大姿勢変化量２値」を算出する。ボウイング中に、コントローラ５の動きが所定の条件を満たした場合（例えば、コントローラ５の動きがある軸に対して平行に近い動きになった場合等）、一部の姿勢変化量が飽和する（姿勢変化量が得られない）ことがある。本実施形態によれば、異なる軸および成分に係る複数の姿勢変化量を合わせることによって、一部の姿勢変化量が飽和した場合にも、音量パラメータの取得のために適切な姿勢変化量を得ることが出来る。
【０１４６】
なお、ここで算出された「最大姿勢変化量２値」は、算出されたフレームを識別可能な情報に関連付けて、内部メインメモリ１１ｅまたは外部メインメモリ１２に、少なくとも１６フレームの間保持される。そして、ＣＰＵ１０は、現在処理中のフレームを含む最近１６フレームにおいて算出された「最大姿勢変化量２値」を平均することで、平均姿勢変化量ＭＭ＿ＡＶＥ１６を算出する。なお、本実施形態では、ジャイロセンサ５５、５６から取得される測定値にばらつきが生じることを考慮して、姿勢変化量の平均値を算出し、これを参照することとしているが、音量パラメータの取得のために参照される姿勢変化量は、平均値に限定されない。また、本実施形態では、上位２値を合計することとしているが、ある特定の成分に係る姿勢変化量が飽和することを回避するためには、異なる成分に係る複数の姿勢変化量が合計されればよく、２値に限定されない。例えば、算出された全ての姿勢変化量を合計することとしてもよい。その後、処理はステップＳ５０３へ進む。
【０１４７】
ステップＳ５０３では、姿勢変化量に基づいて、ゲーム装置３から出力される音声信号の音量を決定するための音量パラメータが設定される。ＣＰＵ１０は、ステップＳ５０２において、音量パラメータの取得に用いる姿勢変化量として算出された平均姿勢変化量ＭＭ＿ＡＶＥ１６に応じた音量パラメータを取得し、設定する。平均姿勢変化量ＭＭ＿ＡＶＥ１６は、コントローラ５の姿勢変化量に基づく値であり、且つ、平均化されることによって、ユーザの意図しない動きの影響を低減させた値となっている。このため、本実施形態によれば、ユーザの意図に沿った、自然な音量パラメータを設定することが可能となる。その後、本フローチャートに示された処理は終了する。
【０１４８】
図１６は、本実施形態において、姿勢変化量と音量パラメータとの関係を表したマップを示す図である。本実施形態において、平均姿勢変化量ＭＭ＿ＡＶＥ１６に応じた音量パラメータは、図１６に示したマップを参照することによって取得される。本実施形態において、音量パラメータは、音波形のデータを、音量を低減させることなく出力する場合の値（最大音量、最大振幅値）を１．００００とした、音量に対する割合を示すパラメータである。姿勢変化量（平均姿勢変化量ＭＭ＿ＡＶＥ１６）と音量パラメータとの対応関係
を定めたマップにおいて、姿勢変化量の変化に対する音量パラメータの変化の勾配の傾向は、姿勢変化量の範囲ごとに異なる。図１６に示す例によれば、姿勢変化量が十分に小さい（図１６に示す例で０．５未満）場合は、仮にストロークが検出されていたとしても音量パラメータは無音（０．００００）に設定され、姿勢変化量が十分に大きい（図１６に示す例で６．０以上）場合には、音量パラメータは最大音量（１．００００）に設定される。また、姿勢変化量が比較的小さい（図１６に示す例で０．５以上２．０以下）場合には、姿勢変化量の増加に伴って指数関数的に大きな音量パラメータが設定されるが、姿勢変化量がバイオリンの演奏における中程度の変化量である（図１６に示す例で２．０より大で且つ４．０未満）場合には、姿勢変化量の増加に伴う音量パラメータの増加量は緩やかになる。そして、姿勢変化量が比較的大きい（図１６に示す例で４．０以上６．０未満）場合には、姿勢変化量の増加に伴う音量パラメータの変化は、勾配が小さく且つリニアな変化となる。このため、本実施形態によれば、ボウイングの速度が比較的遅い段階では滑らかに音が立ち上がり、ボウイングの速度が十分に速くなると音量の上限が訪れる、自然な音量変化を提供できる。
【０１４９】
なお、本実施形態では、マップを参照して、平均姿勢変化量ＭＭ＿ＡＶＥ１６に対応する音量パラメータを取得する方法について説明したが、このような方法に変えて、ＣＰＵ１０は、姿勢変化量と音量パラメータとの対応関係を定めた関係式を用いて、平均姿勢変化量ＭＭ＿ＡＶＥ１６に応じた音量パラメータを算出することとしてもよい。この場合、姿勢変化量の範囲毎に、姿勢変化量の変化に対する音量パラメータの変化の勾配の傾向が異なる関係式を用いることで、自然な音量変化を提供することが出来る。
【０１５０】
［音声信号出力処理］
図１７は、本実施形態に係る音声信号出力処理の流れを示すフローチャートである。
【０１５１】
ステップＳ６０１では、Ｂボタン３２ｉの状態が判定される。ＣＰＵ１０は、シミュレート処理のステップＳ００４において更新された操作データを参照することで、Ｂボタン３２ｉが押下されている状態であるか否かを判定する。Ｂボタン３２ｉが押下されていると判定された場合、処理はステップＳ６０２へ進む。一方、Ｂボタン３２ｉが押下されていないと判定された場合、処理はステップＳ６０７へ進む。
【０１５２】
ここで、Ｂボタン３２ｉは、音声信号の出力を指示するためのボタンとして用いられる。Ｂボタン３２ｉが押下されている間のみ音声信号を出力することで、ユーザが演奏をする意図無くコントローラ５を動かした場合に、音声信号が出力されてしまうことを防止することが出来る。また、本実施形態に係るゲーム装置３において、Ｂボタン３２ｉは、ユーザが右手でコントローラ５を把持した場合に、右手の人差し指で押下される位置に設けられているため、バイオリンを演奏するときに近い姿勢をユーザにとらせることが出来る。
【０１５３】
ステップＳ６０２では、音量制御フラグの状態が判定される。ＣＰＵ１０は、音量制御フラグを参照することで、ボウイングにおける引き返し動作が行われているか否かを判定する。先述の通り、音量制御フラグは、引き返し動作の際に音量が小さくなる効果を出すためのフラグであり、音量制御フラグはボウイング更新処理のステップＳ４２１においてＯＮに設定される。音量制御フラグがＯＮである、即ち、ボウイングにおける引き返し動作が行われていると判定された場合、処理はステップＳ６０８へ進む。一方、音量制御フラグがＯＦＦである、即ち、ボウイングにおける引き返し動作が行われていないと判定された場合、処理はステップＳ６０３へ進む。
【０１５４】
ステップＳ６０３からステップＳ６０６では、上述した音高更新処理、ボウイング更新処理、音量更新処理、および音声信号出力処理において設定された設定内容に従って、音
声信号が出力される。ＣＰＵ１０は、サウンドラベルを、ストロークパワーに応じたサウンドラベルに更新する（ステップＳ６０３）。即ち、後述するステップＳ６０６では、ステップＳ６０３において設定されたサウンドラベルに基づいて音声信号が生成および出力される。また、ＣＰＵ１０は、出力音量に、音量更新処理において設定された音量パラメータの値を設定し（ステップＳ６０４）、出力音高に、音高更新処理において設定された音高パラメータの値を設定する（ステップＳ６０５）。そして、ステップＳ６０３において設定されたサウンドラベル、ステップＳ６０４において設定された出力音量、ステップＳ６０５において設定された出力音高に基づいてＤＳＰ１１ｃによって生成された音声信号が出力され（ステップＳ６０６）、音声信号に従った音声が、スピーカ２ａから出力される。その後、本フローチャートに示された処理は終了する。
【０１５５】
ステップＳ６０７では、音声信号の出力停止が行われる。ＣＰＵ１０は、ステップＳ６０１においてＢボタン３２ｉが押下されていないと判定されたことを受けて、ゲーム装置３からの音声信号の出力を停止する。なお、この出力停止は、６フレームかけてのフェードアウトを伴う。ＣＰＵ１０は、６フレームかけて徐々に音声信号の音量を下げ、ゲーム装置３からの音声信号の出力を停止する。その後、本フローチャートに示された処理は終了する。
【０１５６】
ステップＳ６０８では、ユーザの引き返し動作に伴う引き返し処理が実行される。ＣＰＵ１０は、ステップＳ６０２において音量制御フラグがＯＮである、即ち、ボウイングにおける引き返し動作が行われていると判定されたことを受けて、ゲーム装置３からの音声信号の出力を停止する。このようにすることで、ユーザの引き返し動作に伴って音量に変化を持たせ、ユーザに対して実際にバイオリンを演奏しているような感覚を与えることが出来る。なお、この出力停止は、３フレームかけてのフェードアウトを伴う。ＣＰＵ１０は、３フレームかけて徐々に音声信号の音量を下げ、ゲーム装置３からの音声信号の出力を停止する。また、ＣＰＵ１０は、ユーザの引き返し動作に伴う引き返し処理が実行されたことを受けて、音量制御フラグをＯＦＦに設定する。
【０１５７】
なお、本実施形態に係るシミュレーション処理において用いられる姿勢変化量の成分は、バイオリンをシミュレーション対象とする場合に好適なものであり、シミュレーション処理において用いられる姿勢変化量の成分は、本実施形態において示されたものに限定されない。シミュレーション処理において用いられる姿勢変化量の成分は、シミュレーション対象の発音装置において採用される発音体の配置や、発音体を擦る動きの方向等に応じて適宜決定されてよい。シミュレーションの対象となる発音装置は、その他の発音装置であってもよく、例えば、チェロ等のその他の擦弦楽器を、シミュレーションの対象とすることが出来る。
【０１５８】
また、本実施形態では、コントローラに内蔵されたジャイロセンサ等を用いて角速度等を測定し、コントローラの姿勢変化量を取得する実施の形態について説明したが、本発明の実施にあたり、所定の対象の動きを測定するための手段は、コントローラに設けられたセンサ類に限定されない。例えば、他の実施の形態として、カメラ等のセンサを用いてユーザの手の動きを測定し、測定結果からユーザの手の姿勢変化量を取得することとしてもよい。
【符号の説明】
【０１５９】
１  ゲームシステム
３  ゲーム装置
５  コントローラ
７  入力装置
７６  サブユニット
１０１  姿勢変化量取得部
１０２  音量パラメータ設定部
１０３  弦指定情報保持部
１０４  弦変更部
１０５  出力音量制御部
１０６  音声信号出力部
【図１】
0005812663.tif 000002
【図２】
0005812663.tif 000003
【図３】
0005812663.tif 000004
【図４】
0005812663.tif 000005
【図５】
0005812663.tif 000006
【図６】
0005812663.tif 000007
【図７】
0005812663.tif 000008
【図８】
0005812663.tif 000009
【図９】
0005812663.tif 000010
【図１０】
0005812663.tif 000011
【図１１】
0005812663.tif 000012
【図１２Ａ】
0005812663.tif 000013
【図１２Ｂ】
0005812663.tif 000014
【図１３】
0005812663.tif 000015
【図１４Ａ】
0005812663.tif 000016
【図１４Ｂ】
0005812663.tif 000017
【図１５】
0005812663.tif 000018
【図１６】
0005812663.tif 000019
【図１７】
0005812663.tif 000020