説明

音楽演奏プログラムおよび音楽演奏装置

【課題】入力装置の動作に応じて、多様な演奏変化を生じさせて音楽を演奏する音楽演奏プログラムおよび音楽演奏装置を提供する。
【解決手段】入力装置に設けられた加速度センサから出力される加速度データを取得し、加速度の大きさを算出する。次に、算出された加速度の大きさに基づいて、記憶手段に記憶された複数のトラックデータを含む楽曲データから演奏対象とするトラックデータを少なくとも1つ選択する。そして、選択されたトラックデータに基づいて、音響発生機器から発生する楽音を制御するためのデータを出力する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、音楽演奏プログラムおよび音楽演奏装置に関し、より特定的には、加速度センサを備えた入力装置を振ることに応じて音楽を再生する音楽演奏プログラムおよび音楽演奏装置に関する。
【背景技術】
【0002】
従来、音楽の指揮を取り入れてゲームを行ったり、カラオケの興趣性を高めたりすることが知られている。例えば、加速度センサを備えた指揮棒の出力に応じて、楽譜データの音程および強度のデータを読み出すタイミングが追従するよう構成された装置が開示されている(例えば、特許文献1参照)。また、ユーザが所持またはユーザに取り付け可能な運動検出器および状態検出器に備えられた加速度センサの出力に応じて、MIDI(Musical Instrument Digital Interface)データ等の音量を変化させると共に、その再生テンポを追従させる装置が開示されている(例えば、特許文献2参照)。上記特許文献2で開示された装置では、加速度センサの出力に応じて再生テンポをどの程度追随させるのか、ユーザが指定するためのボタンを装備して、指揮に基づくテンポと本来のテンポとが大きくずれないように配慮した楽音再生装置を開示している。
【特許文献1】特開平6−161440号公報
【特許文献2】特開2001−195059号公報
【発明の開示】
【発明が解決しようとする課題】
【0003】
しかしながら、上記特許文献1や特許文献2で開示された装置等の従来の技術では、あくまでも楽曲演奏のテンポを制御することや、せいぜい指揮の強弱で演奏音量を変化させる程度の興趣性しか提供することができない。したがって、従来の技術では、ユーザが指揮する操作自体に楽しさを感じられるような娯楽的な要素を加味することができなかった。
【0004】
それ故に、本発明の目的は、入力装置の動作に応じて、多様な演奏変化を生じさせて音楽を演奏する音楽演奏プログラムおよび音楽演奏装置を提供することである。
【課題を解決するための手段】
【0005】
上記の目的を達成するために、本発明は以下の構成を採用した。なお、括弧内の参照符号やステップ番号等は、本発明の理解を助けるために後述する実施形態との対応関係を示したものであって、本発明の範囲を何ら限定するものではない。
【0006】
第1の発明は、少なくとも1軸方向の加速度を検出する加速度センサ(701)を備えた入力装置(7)で検出された加速度に応じて操作される装置(3)のコンピュータ(30)で実行される音楽演奏プログラムである。音楽演奏プログラムは、加速度データ取得ステップ(S54)、加速度算出ステップ(S55、S58)、トラックデータ選択ステップ(S63、S66、S70)、および音楽演奏ステップ(S68)をコンピュータに実行させる。加速度データ取得ステップは、加速度センサから出力される加速度データ(Da)を取得する。加速度算出ステップは、取得した加速度データを用いて、加速度の大きさ(V、D)を算出する。トラックデータ選択ステップは、算出された加速度の大きさに基づいて、記憶手段(33)に記憶された複数のトラックデータ(Td、図16、図17)を含む楽曲データ(Dd)から演奏対象とするトラックデータを少なくとも1つ選択する。音楽演奏ステップは、トラックデータ選択ステップで選択されたトラックデータに基づいて、音響発生機器(2a)から発生する楽音を制御するためのデータを出力する。
【0007】
第2の発明は、上記第1の発明において、加速度ピーク値検出ステップ(S61)を、さらにコンピュータに実行させる。加速度ピーク値検出ステップは、加速度算出ステップで算出された加速度の大きさ(V)の履歴(Db)を用いて、それら加速度の大きさのピーク値(Vp)を検出する。トラックデータ選択ステップでは、加速度ピーク値検出ステップで検出された加速度の大きさのピーク値に基づいて、演奏対象とするトラックデータが選択される(S63)。
【0008】
第3の発明は、上記第1の発明において、加速度算出ステップは、差分算出ステップ(S57、S58)を含む。差分算出ステップは、前回取得した加速度データを用いて算出した加速度(Xa0、Ya0、Za0)と今回取得した加速度データを用いて算出した加速度(Xa、Ya、Za)との差分(D)を算出する。トラックデータ選択ステップでは、差分算出ステップで算出された加速度の差分に基づいて、演奏対象とするトラックデータが選択される(S66、S70)。
【0009】
第4の発明は、上記第3の発明において、加速度差分ピーク値検出ステップ(S64)を、さらにコンピュータに実行させる。加速度差分ピーク値検出ステップは、差分算出ステップで算出された加速度の差分の履歴(Dc)を用いて、それら加速度の差分のピーク値(Dp)を検出する。トラックデータ選択ステップでは、加速度差分ピーク値検出ステップで検出された加速度の差分のピーク値に基づいて、演奏対象とするトラックデータが選択される。
【0010】
第5の発明は、上記第1の発明において、楽曲データは、それぞれ異なったトラックデータから成る複数のトラックデータ群(Sd)を含む。加速度算出ステップでは、今回取得した加速度データから算出した加速度の大きさ(V)、および前回取得した加速度データを用いて算出した加速度と今回取得した加速度データを用いて算出した加速度との差分(D)が算出される。音楽演奏プログラムは、加速度ピーク値検出ステップおよび加速度差分ピーク値検出ステップを、さらにコンピュータに実行させる。加速度ピーク値検出ステップは、加速度算出ステップで算出された加速度の大きさの履歴を用いて、それら加速度の大きさのピーク値を検出する。加速度差分ピーク値検出ステップは、加速度算出ステップで算出された加速度の差分の履歴を用いて、それら加速度の差分のピーク値を検出する。トラックデータ選択ステップでは、加速度差分ピーク値検出ステップで検出された加速度の差分のピーク値に基づいて演奏対象とするトラックデータ群が選択され、加速度ピーク値検出ステップで検出された加速度の大きさのピーク値に基づいて演奏対象のトラックデータ群から演奏対象のトラックデータが選択される。
【0011】
第6の発明は、上記第1の発明において、加速度センサは、入力装置に対して互いに直交する複数軸方向(X、Y、Z軸方向)の加速度をそれぞれ検出する。加速度算出ステップでは、取得した加速度データを用いて、複数軸方向それぞれの加速度ベクトルを合成した合成ベクトルの大きさが算出される。
【0012】
第7の発明は、上記第3の発明において、加速度センサは、入力装置に対して互いに直交する複数軸方向の加速度をそれぞれ検出する。差分算出ステップでは、前回取得した加速度データを用いて算出した加速度と今回取得した加速度データを用いて算出した加速度との差分を複数軸方向それぞれに算出し、それら複数軸方向それぞれの差分ベクトルを合成した差分合成ベクトルの大きさが加速度の差分として算出される。
【0013】
第8の発明は、上記第1の発明において、複数のトラックデータには、それぞれ異なった楽器が割り当てられている。表示処理ステップを、さらにコンピュータに実行させる。表示処理ステップは、トラックデータに割り当てられた楽器をそれぞれ仮想ゲーム世界に配置し、トラックデータ選択ステップで選択されたトラックデータに割り当てられた楽器のみが演奏されるアクションを表示装置(2)に表示する(図8、図9)。
【0014】
第9の発明は、上記第1の発明において、複数のトラックデータには、それぞれ異なった楽器の演奏データが割り当てられている。
【0015】
第10の発明は、上記第1の発明において、トラックデータ群に割り当てられる演奏データは、他のトラックデータ群に割り当てられる演奏データに対して、同じ楽曲で奏法、ビート数、および曲調の少なくとも1つが互いに異なる。
【0016】
第11の発明は、上記第1の発明において、装置は、音響発生機器から楽音を発生させる音源(34、35)を備えている。楽曲データに含まれる複数のトラックデータは、それぞれ音源の制御データで構成される。音楽演奏ステップでは、トラックデータ選択ステップで選択されたトラックデータに記述された制御データが出力されて音源が制御される。
【0017】
第12の発明は、少なくとも1軸方向の加速度を検出する加速度センサを備えた入力装置で検出された加速度に応じて操作される音楽演奏装置である。音楽演奏装置は、加速度データ取得手段、加速度算出手段、トラックデータ選択手段、および音楽演奏手段を備える。加速度データ取得手段は、加速度センサから出力される加速度データを取得する。加速度算出手段は、取得した加速度データを用いて、加速度の大きさを算出する。トラックデータ選択手段は、算出された加速度の大きさに基づいて、記憶手段に記憶された複数のトラックデータを含む楽曲データから演奏対象とするトラックデータを少なくとも1つ選択する。音楽演奏手段は、トラックデータ選択手段が選択したトラックデータに基づいて、音響発生機器から発生する楽音を制御するためのデータを出力する。
【発明の効果】
【0018】
上記第1の発明によれば、加速度センサの加速度の大きさによって、演奏対象とするトラックを変化させるので、入力装置の振り動かし方に応じて多様な演奏変化を生じさせることができる。
【0019】
上記第2の発明によれば、加速度の大きさのピーク値によって、演奏対象とするトラックを変化させるので、入力装置の振り動かす大きさや速度に応じて音楽演奏を変化させることができる。
【0020】
上記第3の発明によれば、加速度の大きさの差分によって、演奏対象とするトラックを変化させるので、入力装置の振り動かすときの柔らかさ等に応じて音楽演奏を変化させることができる。
【0021】
上記第4の発明によれば、加速度の大きさの差分のピーク値によって、演奏対象とするトラックを変化させるので、入力装置の振り動かすときの拍タイミングにおけるメリハリの有無等に応じて音楽演奏を変化させることができる。
【0022】
上記第5の発明によれば、加速度の大きさの差分のピーク値によって演奏対象とするトラック群を変化させ、加速度の大きさのピーク値によって当該トラック群からトラックを変化させるので、さらに多様な演奏変化を生じさせることができる。
【0023】
上記第6および第7の発明によれば、互いに直交する複数軸方向の加速度をそれぞれ検出する加速度センサを用いているため、ユーザが入力装置を持つ方向に関わらず、入力装置の振り動かし方に応じて音楽演奏を変化させることができる。
【0024】
上記第8の発明によれば、演奏対象とする楽器が変化している様子を表示装置に表示することができる。
【0025】
上記第9の発明によれば、選択するトラックデータを変化させることによって演奏される楽器種が変化するため、入力装置の振り動かし方に応じて楽曲の演奏内容を変化させることができる。
【0026】
上記第10の発明によれば、選択するトラックデータ群を変化させることによって演奏される奏法、ビート数、曲調等が変化するため、入力装置の振り動かし方に応じて演奏される楽曲の表現を変えることができる。
【0027】
上記第11の発明によれば、MIDIデータを用いて容易に実現することができる。
【0028】
本発明の音楽演奏装置によれば、上述した音楽演奏プログラムと同様の効果を得ることができる。
【発明を実施するための最良の形態】
【0029】
図1を参照して、本発明の一実施形態に係る音楽演奏装置について説明する。以下、説明を具体的にするために、当該音楽演奏装置を用いたゲームシステム1を一例として説明する。なお、図1は、当該ゲームシステム1を説明するための外観図である。以下、本発明の音楽演奏装置に相当する据置型ゲーム装置を一例にして、当該ゲームシステム1について説明する。
【0030】
図1において、当該ゲームシステム1は、家庭用テレビジョン受像機等のスピーカ2aを備えたディスプレイ(以下、モニタと記載する)2に、接続コードを介して接続される据置型ゲーム装置(以下、単にゲーム装置と記載する)3および当該ゲーム装置3に操作情報を与えるコントローラ7によって構成される。ゲーム装置3は、接続端子を介して受信ユニット6が接続される。受信ユニット6は、コントローラ7から無線送信される送信データを受信し、コントローラ7とゲーム装置3とは無線通信によって接続される。また、ゲーム装置3には、当該ゲーム装置3に対して交換可能に用いられる情報記憶媒体の一例の光ディスク4が脱着される。ゲーム装置3の上部主面には、当該ゲーム装置3の電源ON/OFFスイッチ、ゲーム処理のリセットスイッチ、およびゲーム装置3上部の蓋を開くOPENスイッチが設けられている。ここで、プレイヤがOPENスイッチを押下することによって上記蓋が開き、光ディスク4の脱着が可能となる。
【0031】
また、ゲーム装置3には、セーブデータ等を固定的に記憶するバックアップメモリ等を搭載する外部メモリカード5が必要に応じて着脱自在に装着される。ゲーム装置3は、光ディスク4に記憶されたゲームプログラムなどを実行することによって、その結果をゲーム画像としてモニタ2に表示する。さらに、ゲーム装置3は、外部メモリカード5に記憶されたセーブデータを用いて、過去に実行されたゲーム状態を再現して、ゲーム画像をモニタ2に表示することもできる。そして、ゲーム装置3のプレイヤは、モニタ2に表示されたゲーム画像を見ながら、コントローラ7を操作することによって、ゲーム進行を楽しむことができる。
【0032】
コントローラ7は、その内部に備える通信部75(後述)から受信ユニット6が接続されたゲーム装置3へ、例えばBluetooth(ブルートゥース;登録商標)の技術を用いて送信データを無線送信する。コントローラ7は、主にモニタ2に表示されるゲーム空間に登場するプレイヤオブジェクトを操作するための操作手段である。コントローラ7は、複数の操作ボタン、キー、およびスティック等の操作部が設けられている。また、後述により明らかとなるが、コントローラ7は、当該コントローラ7から見た画像を撮像する撮像情報演算部74を備えている。また、撮像情報演算部74の撮像対象の一例として、モニタ2の表示画面近傍に2つのLEDモジュール(以下、マーカと記載する)8Lおよび8Rが設置される。これらマーカ8Lおよび8Rは、それぞれモニタ2の前方に向かって赤外光を出力する。なお、本実施例では、撮像情報演算部74による撮像情報を用いないため、マーカ8Lおよび8Rを設置しなくてもかまわない。
【0033】
次に、図2を参照して、ゲーム装置3の構成について説明する。なお、図2は、ゲーム装置3の機能ブロック図である。
【0034】
図2において、ゲーム装置3は、各種プログラムを実行する例えばリスク(RISC)CPU(セントラルプロセッシングユニット)30を備える。CPU30は、図示しないブートROMに記憶された起動プログラムを実行し、メインメモリ33等のメモリの初期化等を行った後、光ディスク4に記憶されているゲームプログラムの実行し、そのゲームプログラムに応じたゲーム処理等を行うものである。なお、光ディスク4に記憶されているゲームプログラムが本発明の音楽演奏プログラムを含んでおり、CPU30は、上記ゲーム処理の中でコントローラ7の動きに応じて演奏するための音楽演奏処理も行っている。CPU30には、メモリコントローラ31を介して、GPU(Graphics Processing Unit)32、メインメモリ33、DSP(Digital Signal Processor)34、およびARAM(Audio RAM)35が接続される。また、メモリコントローラ31には、所定のバスを介して、コントローラI/F(インターフェース)36、ビデオI/F37、外部メモリI/F38、オーディオI/F39、およびディスクI/F41が接続され、それぞれ受信ユニット6、モニタ2、外部メモリカード5、スピーカ2a、およびディスクドライブ40が接続されている。
【0035】
GPU32は、CPU30の命令に基づいて画像処理を行うものあり、例えば、3Dグラフィックスの表示に必要な計算処理を行う半導体チップで構成される。GPU32は、図示しない画像処理専用のメモリやメインメモリ33の一部の記憶領域を用いて画像処理を行う。GPU32は、これらを用いてモニタ2に表示すべきゲーム画像データやムービ映像を生成し、適宜メモリコントローラ31およびビデオI/F37を介してモニタ2に出力する。
【0036】
メインメモリ33は、CPU30で使用される記憶領域であって、CPU30の処理に必要なゲームプログラム等を適宜記憶する。例えば、メインメモリ33は、CPU30によって光ディスク4から読み出されたゲームプログラムや各種データ等を記憶する。このメインメモリ33に記憶されたゲームプログラムや各種データ等がCPU30によって実行される。
【0037】
DSP34は、ゲームプログラム実行時にCPU30において処理されるサウンドデータ(例えば、MIDI(Musical Instrument Digital Interface)データ)等を処理するものであり、そのサウンドデータ等を記憶するためのARAM35が接続される。そして、MIDIデータに基づいて音楽を演奏する場合、DSP34およびARAM35がMIDI音源として機能する。ARAM35は、DSP34が所定の処理(例えば、先読みしておいたゲームプログラムやサウンドデータの記憶)を行う際に用いられる。DSP34は、ARAM35に記憶されたサウンドデータを読み出し、メモリコントローラ31およびオーディオI/F39を介してモニタ2に備えるスピーカ2aに出力させる。
【0038】
メモリコントローラ31は、データ転送を統括的に制御するものであり、上述した各種I/Fが接続される。コントローラI/F36は、例えば4つのコントローラI/F36a〜36dで構成され、それらが有するコネクタを介して嵌合可能な外部機器とゲーム装置3とを通信可能に接続する。例えば、受信ユニット6は、上記コネクタと嵌合し、コントローラI/F36を介してゲーム装置3と接続される。上述したように受信ユニット6は、コントローラ7からの送信データを受信し、コントローラI/F36を介して当該送信データをCPU30へ出力する。ビデオI/F37には、モニタ2が接続される。外部メモリI/F38には、外部メモリカード5が接続され、その外部メモリカード5に設けられたバックアップメモリ等とアクセス可能となる。オーディオI/F39にはモニタ2に内蔵されるスピーカ2aが接続され、DSP34がARAM35から読み出したサウンドデータやディスクドライブ40から直接出力されるサウンドデータをスピーカ2aから出力可能に接続される。ディスクI/F41には、ディスクドライブ40が接続される。ディスクドライブ40は、所定の読み出し位置に配置された光ディスク4に記憶されたデータを読み出し、ゲーム装置3のバスやオーディオI/F39に出力する。
【0039】
図3および図4を参照して、本発明の入力装置の一例であるコントローラ7について説明する。なお、図3は、コントローラ7の上面後方から見た斜視図である。図4は、コントローラ7を下面後方から見た斜視図である。
【0040】
図3および図4において、コントローラ7は、例えばプラスチック成型によって形成されたハウジング71を有しており、当該ハウジング71に複数の操作部72が設けられている。ハウジング71は、その前後方向を長手方向とした略直方体形状を有しており、全体として大人や子供の片手で把持可能な大きさである。
【0041】
ハウジング71上面の中央前面側に、十字キー72aが設けられる。この十字キー72aは、十字型の4方向プッシュスイッチであり、矢印で示す4つの方向(前後左右)に対応する操作部分が十字の突出片にそれぞれ90°間隔で配置される。プレイヤが十字キー72aのいずれかの操作部分を押下することによって前後左右いずれかの方向を選択される。例えばプレイヤが十字キー72aを操作することによって、仮想ゲーム世界に登場するプレイヤキャラクタ等の移動方向を指示したり、カーソルの移動方向を指示したりすることができる。
【0042】
なお、十字キー72aは、上述したプレイヤの方向入力操作に応じて操作信号を出力する操作部であるが、他の態様の操作部でもかまわない。例えば、リング状に4方向の操作部分を備えたプッシュスイッチとその中央に設けられたセンタスイッチとを複合した複合スイッチを上記十字キー72aの代わりに設けてもかまわない。また、ハウジング71上面から突出した傾倒可能なスティックを倒すことによって、傾倒方向に応じて操作信号を出力する操作部を上記十字キー72aの代わりに設けてもかまわない。さらに、水平移動可能な円盤状部材をスライドさせることによって、当該スライド方向に応じた操作信号を出力する操作部を、上記十字キー72aの代わりに設けてもかまわない。また、タッチパッドを、上記十字キー72aの代わりに設けてもかまわない。また、少なくとも4つの方向(前後左右)をそれぞれ示すスイッチに対して、プレイヤによって押下されたスイッチに応じて操作信号を出力する操作部を上記十字キー72aの代わりに設けてもかまわない。
【0043】
ハウジング71上面の十字キー72aより後面側に、複数の操作ボタン72b〜72gが設けられる。操作ボタン72b〜72gは、プレイヤがボタン頭部を押下することによって、それぞれの操作ボタン72b〜72gに割り当てられた操作信号を出力する操作部である。例えば、操作ボタン72b〜72dには、Xボタン、Yボタン、およびAボタン等としての機能が割り当てられる。また、操作ボタン72e〜72gには、セレクトスイッチ、メニュースイッチ、およびスタートスイッチ等としての機能が割り当てられる。これら操作ボタン72b〜72gは、ゲーム装置3が実行するゲームプログラムに応じてそれぞれの機能が割り当てられるが、本発明の説明とは直接関連しないため詳細な説明を省略する。なお、図3に示した配置例では、操作ボタン72b〜72dは、ハウジング71上面の中央前後方向に沿って並設されている。また、操作ボタン72e〜72gは、ハウジング71上面の左右方向に沿って操作ボタン72bおよび72dの間に並設されている。そして、操作ボタン72fは、その上面がハウジング71の上面に埋没しており、プレイヤが不意に誤って押下することのないタイプのボタンである。
【0044】
また、ハウジング71上面の十字キー72aより前面側に、操作ボタン72hが設けられる。操作ボタン72hは、遠隔からゲーム装置3本体の電源をオン/オフする電源スイッチである。この操作ボタン72hも、その上面がハウジング71の上面に埋没しており、プレイヤが不意に誤って押下することのないタイプのボタンである。
【0045】
また、ハウジング71上面の操作ボタン72cより後面側に、複数のLED702が設けられる。ここで、コントローラ7は、他のコントローラ7と区別するためにコントローラ種別(番号)が設けられている。例えば、LED702は、コントローラ7に現在設定されている上記コントローラ種別をプレイヤに通知するために用いられる。具体的には、コントローラ7から受信ユニット6へ送信データを送信する際、上記コントローラ種別に応じて複数のLED702のうち、種別に対応するLEDが点灯する。
【0046】
一方、ハウジング71下面には、凹部が形成されている。ハウジング71下面の凹部は、プレイヤがコントローラ7を把持したときに当該プレイヤの人差し指や中指が位置するような位置に形成される。そして、上記凹部の後面側傾斜面には、操作ボタン72iが設けられる。操作ボタン72iは、例えばBボタンとして機能する操作部であり、シューティングゲームにおけるトリガスイッチや、プレイヤオブジェクトを所定オブジェクトに対して注目させる操作等に用いられる。
【0047】
また、ハウジング71前面には、撮像情報演算部74の一部を構成する撮像素子743が設けられる。ここで、撮像情報演算部74は、コントローラ7が撮像した画像データを解析してその中で輝度が高い場所を判別してその場所の重心位置やサイズなどを検出するためのシステムであり、例えば、最大200フレーム/秒程度のサンプリング周期であるため比較的高速なコントローラ7の動きでも追跡して解析することができる。また、ハウジング70の後面には、コネクタ73が設けられている。コネクタ73は、例えば32ピンのエッジコネクタであり、例えば接続ケーブルと嵌合して接続するために利用される。なお、本発明では、この撮像情報演算部74からの情報を用いないため、ここではこれ以上の説明を省略する。
【0048】
ここで、説明を具体的にするために、コントローラ7に対して設定する座標系について定義する。図3および図4に示すように、互いに直交するXYZ軸をコントローラ7に対して定義する。具体的には、コントローラ7の前後方向となるハウジング71の長手方向をZ軸とし、コントローラ7の前面(撮像情報演算部74が設けられている面)方向をZ軸正方向とする。また、コントローラ7の上下方向をY軸とし、ハウジング71の上面(十字キー72aが設けられた面)方向をY軸正方向とする。さらに、コントローラ7の左右方向をX軸とし、ハウジング71の左側面(図3では表されずに図4で表されている側面)方向をX軸正方向とする。
【0049】
次に、図5Aおよび図5Bを参照して、コントローラ7の内部構造について説明する。なお、図5Aは、コントローラ7の上筐体(ハウジング71の一部)を外した状態を示す斜視図である。図5Bは、コントローラ7の下筐体(ハウジング71の一部)を外した状態を示す斜視図である。ここで、図5Bに示す基板700は、図5Aに示す基板700の裏面から見た斜視図となっている。
【0050】
図5Aにおいて、ハウジング71の内部には基板700が固設されており、当該基板700の上主面上に操作ボタン72a〜72h、加速度センサ701、LED702、水晶振動子703、無線モジュール753、およびアンテナ754等が設けられる。そして、これらは、基板700等に形成された配線(図示せず)によってマイコン751(図6参照)に接続される。加速度センサ701は、コントローラ7が配置された3次元空間における傾きや振動等の算出に用いることができる加速度を検出して出力する。
【0051】
より詳細には、図6に示すように、コントローラ7は3軸の加速度センサ701を備えていることが好ましい。この3軸の加速度センサ701は、3方向、すなわち、上下方向(図3に示すY軸)、左右方向(図3に示すX軸)、および前後方向(図3に示すZ軸)で直線加速度を検知する。また、他の実施形態においては、ゲーム処理に用いる制御信号の種類によっては、X軸とY軸(または他の対になった軸)とのそれぞれに沿った直線加速度のみを検知する2軸の加速度検出手段を使用してもよい。さらに、他の実施形態においては、ゲーム処理に用いる制御信号の種類によっては、XYZ軸のいずれか1軸に沿った直線加速度のみを検知する1軸の加速度検出手段を使用してもよい。例えば、この3軸、2軸、または1軸の加速度センサ701は、アナログ・デバイセズ株式会社(Analog Devices, Inc.)またはSTマイクロエレクトロニクス社(STMicroelectronics N.V.)から入手可能であるタイプのものでもよい。加速度センサ701は、シリコン微細加工されたMEMS(Micro Electro Mechanical Systems:微小電子機械システム)の技術に基づいた静電容量式(静電容量結合式)であることが好ましい。しかしながら、既存の加速度検出手段の技術(例えば、圧電方式や圧電抵抗方式)あるいは将来開発される他の適切な技術を用いて3軸、2軸、または1軸の加速度センサ701が提供されてもよい。
【0052】
加速度センサ701に用いられるような加速度検出手段は、加速度センサ701の持つ各軸に対応する直線に沿った加速度(直線加速度)のみを検知することができる。つまり、加速度センサ701からの直接の出力は、その1軸、2軸、または3軸のそれぞれに沿った直線加速度(静的または動的)を示す信号である。このため、加速度センサ701は、非直線状(例えば、円弧状)の経路に沿った動き、回転、回転運動、角変位、傾斜、位置、または姿勢等の物理特性を直接検知することはできない。
【0053】
しかしながら、加速度センサ701から出力される加速度の信号に対して追加の処理を行うことによって、コントローラ7に関するさらなる情報を推測または算出(判定)することができることは、当業者であれば本明細書の説明から容易に理解できるであろう。例えば、静的な加速度(重力加速度)が検知されると、加速度センサ701からの出力を用いて、傾斜角度と検知された加速度とを用いた演算によって重力ベクトルに対する対象(コントローラ7)の傾きを判定することができる。このように、加速度センサ701をマイコン751(またはゲーム装置3に含まれるCPU30等の他のプロセッサ)と組み合わせて用いることによって、コントローラ7の傾き、姿勢、または位置を判定することができる。同様に、加速度センサ701を備えるコントローラ7がプレイヤの手で動的に加速されて動かされる場合に、加速度センサ701によって生成される加速度信号を処理することによって、コントローラ7の様々な動きおよび/または位置を算出することができる。他の実施例では、加速度センサ701は、信号をマイコン751に出力する前に内蔵の加速度検出手段から出力される加速度信号に対して所望の処理を行うための、組込み式の信号処理装置または他の種類の専用の処理装置を備えていてもよい。
【0054】
また、無線モジュール753およびアンテナ754を有する通信部75によって、コントローラ7がワイヤレスコントローラとして機能する。なお、水晶振動子703は、後述するマイコン751の基本クロックを生成する。
【0055】
一方、図5Bにおいて、基板700の下主面上の前端縁に撮像情報演算部74が設けられる。撮像情報演算部74は、コントローラ7の前方から順に赤外線フィルタ741、レンズ742、撮像素子743、および画像処理回路744によって構成されており、それぞれ基板700の下主面に取り付けられる。また、基板700の下主面上の後端縁にコネクタ73が取り付けられる。そして、操作ボタン72iが撮像情報演算部74の後方の基板700の下主面上に取り付けられていて、それよりさらに後方に、電池705が収容される。電池705とコネクタ73との間の基板700の下主面上には、バイブレータ704が取り付けられる。このバイブレータ704は、例えば振動モータやソレノイドであってよい。バイブレータ704が作動することによってコントローラ7に振動が発生するので、それを把持しているプレイヤの手にその振動が伝達され、いわゆる振動対応ゲームが実現できる。
【0056】
次に、図6を参照して、コントローラ7の内部構成について説明する。なお、図6は、コントローラ7の構成を示すブロック図である。
【0057】
撮像情報演算部74は、赤外線フィルタ741、レンズ742、撮像素子743、および画像処理回路744を含んでいる。赤外線フィルタ741は、コントローラ7の前方から入射する光から赤外線のみを通過させる。レンズ742は、赤外線フィルタ741を透過した赤外線を集光して撮像素子743へ出射する。撮像素子743は、例えばCMOSセンサやあるいはCCDのような固体撮像素子であり、レンズ742が集光した赤外線を撮像する。したがって、撮像素子743は、赤外線フィルタ741を通過した赤外線だけを撮像して画像データを生成する。撮像素子743で生成された画像データは、画像処理回路744で処理される。具体的には、画像処理回路744は、撮像素子743から得られた画像データを処理して高輝度部分を検知し、それらの位置座標や面積を検出した結果を示す処理結果データを通信部75へ出力する。なお、これらの撮像情報演算部74は、コントローラ7のハウジング71に固設されており、ハウジング71自体の方向を変えることによってその撮像方向を変更することができる。
【0058】
加速度センサ701は、上述したようにコントローラ7の上下方向(Y軸方向)、左右方向(X軸方向)、および前後方向(Z軸方向)の3軸成分に分けてそれぞれ加速度を検知して出力するセンサである。加速度センサ701が検知した3軸成分の加速度を示すデータは、それぞれ通信部75へ出力される。この加速度センサ701から出力される加速度データに基づいて、コントローラ7の傾きや動きを判別することができる。なお、加速度センサ701は、特定のアプリケーションで必要なデータに応じて何れか2軸に対してそれぞれ加速度を検出する加速度センサや何れか1軸(例えば、Y軸)に対して加速度を検出する加速度センサが用いられてもかまわない。
【0059】
通信部75は、マイクロコンピュータ(Micro Computer:マイコン)751、メモリ752、無線モジュール753、およびアンテナ754を含んでいる。マイコン751は、処理の際にメモリ752を記憶領域として用いながら、送信データを無線送信する無線モジュール753を制御する。
【0060】
コントローラ7に設けられた操作部72からの操作信号(キーデータ)、加速度センサ701からの3軸方向の加速度信号(X、Y、およびZ軸方向加速度データ)、および撮像情報演算部74からの処理結果データは、マイコン751に出力される。マイコン751は、入力した各データ(キーデータ、X、Y、およびZ軸方向加速度データ、処理結果データ)を受信ユニット6へ送信する送信データとして一時的にメモリ752に格納する。ここで、通信部75から受信ユニット6への無線送信は、所定の周期毎に行われるが、ゲームの処理は1/60秒を単位として行われることが一般的であるので、それよりも短い周期で送信を行うことが必要となる。具体的には、ゲームの処理単位は16.7ms(1/60秒)であり、ブルートゥース(登録商標)で構成される通信部75の送信間隔は5msである。マイコン751は、受信ユニット6への送信タイミングが到来すると、メモリ752に格納されている送信データを一連の操作情報として出力し、無線モジュール753へ出力する。そして、無線モジュール753は、例えばBluetooth(ブルートゥース;登録商標)の技術を用いて、所定周波数の搬送波を用いて操作情報をその電波信号としてアンテナ754から放射する。つまり、コントローラ7に設けられた操作部72からのキーデータ、加速度センサ701からのX、Y、およびZ軸方向加速度データ、および撮像情報演算部74からの処理結果データがコントローラ7から送信される。そして、ゲーム装置3の受信ユニット6でその電波信号を受信し、ゲーム装置3で当該電波信号を復調や復号することによって、一連の操作情報(キーデータ、X、Y、およびZ軸方向加速度データ、および処理結果データ)を取得する。そして、ゲーム装置3のCPU30は、取得した操作情報とゲームプログラムとに基づいて、ゲーム処理を行う。なお、Bluetooth(登録商標)の技術を用いて通信部75を構成する場合、通信部75は、他のデバイスから無線送信された送信データを受信する機能も備えることができる。
【0061】
次に、ゲーム装置3が行う具体的な処理を説明する前に、本ゲーム装置3で行うゲームの概要について説明する。図7に示すように、コントローラ7は、全体として大人や子供の片手で把持可能な大きさである。そして、ゲームシステム1でコントローラ7を用いてゲームをプレイするためには、コントローラ7を指揮棒のように振り動かして、再生される音楽の変化を楽しむことができる。具体的には、プレイヤは、モニタ2で表現されている楽器群(または、楽器群をそれぞれ演奏するキャラクタ)を表すゲーム画像を見ながら、演奏する楽器数や種類(音の数)、奏法(レガートやスタッカート)、ビート数(8ビートや16ビート)、音調(長調や短調)、演奏テンポ、演奏音量等がプレイヤの望む演奏となるようにコントローラ7を指揮棒のように振り動かす。これによって、コントローラ7からプレイヤがコントローラ7を振り動かしたことによる操作情報(具体的には、X、Y、およびZ軸方向加速度データ)がゲーム装置3に与えられる。
【0062】
例えば、図8および図9に示すように、モニタ2にはプレイヤキャラクタPCと、当該プレイヤキャラクタPCが指揮する楽器群(または、楽器それぞれを演奏するキャラクタ群)とが表示される。なお、図8および図9の例では、ピアノP、サキソフォンSAX、クラリネットCL、ギターG、ホルンHRN、およびバイオリンVNが表示される楽器群の一例として示されている。後述により明らかとなるが、プレイヤは、例えばコントローラ7を振り動かす強弱に応じて演奏する楽器数や種類(音の数)を変化させることができ、モニタ2に表示されるゲーム画像も演奏している楽器種がわかるように表現される。図8に示したゲーム画像例では、プレイヤがコントローラ7を振り動かす動作に応じて、ピアノPおよびギターGが演奏している形態を示している。また、図9に示したゲーム画像例では、プレイヤがコントローラ7を振り動かす動作に応じて、全ての楽器が演奏している形態を示している。
【0063】
図10A〜図10Cは、コントローラ7を上下方向に振り上げまたは振り下げた状態とコントローラ7に加わる加速度との関係を説明するための図である。コントローラ7にはプレイヤが振り動かすことによって生じる動的な加速度(振り加速度)と静的な重力加速度とが加わっており、加速度センサ701は、これらの加速度によって生じる上下方向(Y軸)、左右方向(X軸)、および前後方向(Z軸)の直線加速度をそれぞれ検知する。
【0064】
図10Aに示すように、プレイヤがコントローラ7の上面(十字キー72aが設けられた面)を上に向けて水平に静止させたとき、重力加速度がY軸負方向に作用する。
【0065】
一方、図10Bに示すように、プレイヤがコントローラ7を上方向へ振り上げたとき、Y軸正方向の振り加速度が生じる。そして、コントローラ7を振り上げる速度が速い程、その振り加速度が大きくなる。なお、重力加速度は、コントローラ7のY軸負方向とZ軸負方向との間の方向に作用する。
【0066】
また、図10Cに示すように、プレイヤがコントローラ7を下方向へ振り下げたとき、Y軸負方向の振り加速度が生じる。そして、コントローラ7を振り下げる速度が速い程、その振り加速度が大きくなる。なお、重力加速度は、コントローラ7のY軸負方向とZ軸正方向との間の方向に作用する。
【0067】
このように、プレイヤがコントローラ7を振り動かしたとき、加速度センサ701は、その振り動かす方向にその速さに応じた大きさの動的な加速度を検出する。しかしながら、現実にコントローラ7に作用する加速度は図10A〜図10Cに示すような単純な方向や大きさで生じない。実際には、振り上げまたは振り下げによる遠心力等もコントローラ7に作用し、プレイヤが左右方向にコントローラ7を振ったりひねられたりすることによって加速度が生じる方向も様々に変化する。本実施形態では、加速度センサ701が検出した3軸方向の直線加速度から算出される合成ベクトルの大きさおよび3軸方向それぞれの直線加速度の差分(つまり、加速度の変化)から算出される差分合成ベクトルの大きさを用いて、プレイヤがコントローラ7を振り動かす動作を分析している。
【0068】
図11Aは、プレイヤがコントローラ7を大きく振り動かし、各拍子をとるタイミングでメリハリのある振り方をしたときに現れる合成ベクトルの大きさ変化の一例を示すグラフである。図11Bは、図11Aで示す合成ベクトルを得たときに3軸方向それぞれの直線加速度の差分から算出される差分合成ベクトルの大きさ変化の一例を示すグラフである。図11Cは、図11Aで示す合成ベクトルにおいて、Y軸正方向の直線加速度が得られた期間を大きさ0として当該合成ベクトルの大きさ変化の一例を示すグラフである。なお、図11A〜図11Cは、全て横軸が同じ時間軸である。
【0069】
加速度センサ701から出力される加速度データが示すX軸方向の加速度をXa、Y軸方向の加速度をYa、Z軸方向の加速度をZaとすると、合成ベクトルの大きさVは、
【数1】

で算出される。そして、プレイヤが2拍子や4拍子のように指揮棒で拍子をとるようにコントローラ7を振り動かすと、図11Aに示すように合成ベクトルの大きさVがその拍子に合わせて増減する。具体的には、プレイヤがコントローラ7を振り動かす際に、最も力を入れてコントローラ7の動きを加減速させたタイミングで、合成ベクトルの大きさVが最も大きくなる。一般的に、プレイヤは、各拍子をとるタイミングでコントローラ7に対してメリハリのある動作(例えば、拍子のタイミングで素早く下へ振り動かしている動作を急停止させたり、逆方向へ素早く振り上げたりする)を与えるため、各拍子のタイミングで合成ベクトルの大きさVがピークを示す。
【0070】
しかしながら、プレイヤの振り方によっては、各拍子のタイミング以外で合成ベクトルの大きさVがピークを示すこともある。例えば、上下方向へコントローラ7を振り動かすときの振り下げ時に拍子をとる場合、振り上げから振り下げに移るときに合成ベクトルの大きさVが大きくなることもある。また、一般的な指揮棒の4拍子でプレイヤがコントローラ7を振るとき、1拍子目から2拍子目移る途中で合成ベクトルの大きさVが大きくなることもある。このような拍子のタイミング以外で生じる合成ベクトルの大きさVのピークを除去するため、所定軸方向(例えば、Y軸正方向)の直線加速度が得られた期間については、大きさV=0とする(図11C)。これによって、拍子のタイミングで生じる加速度とは逆方向に生じた成分による大きさVのピークを除去することができ、各拍子のタイミングに応じたピーク値のみ抽出することができる。そして、これらのピーク値の時間間隔を算出することによって、拍子のテンポを算出することができる。なお、図11Cにおいては、各拍子のタイミングに応じた合成ベクトルの大きさVのピーク値を、ピーク値Vp1〜Vp6(以下、合成ベクトルピーク値Vpと記載することがある)で示している。また、ピーク値Vp1〜Vp3を用いて得られるテンポを時間t1およびt2で示している。
【0071】
一方、加速度センサ701から出力される加速度データが示す前回のX軸方向の加速度をXa0、Y軸方向の加速度をYa0、Z軸方向の加速度をZa0とすると、差分合成ベクトルの大きさDは、
【数2】

で算出される。図11Bに示すように、プレイヤが拍子をとるようにコントローラ7を振り動かすと、コントローラ7に生じる加速度の増減に応じて差分合成ベクトルの大きさDの値が変化する。具体的には、プレイヤが激しくメリハリをつけて拍子をとるようにコントローラ7を振り動かすと、コントローラ7に生じる加速度の増減が激しくなって差分合成ベクトルの大きさDの値が大きくなる。差分合成ベクトルの大きさDのピークは、合成ベクトルの大きさVのピーク直前に生じることが一般的である。図11Bおよび図11Cの一例では、合成ベクトルピーク値Vp1〜Vp6が生じる直前に、差分合成ベクトルの大きさDのピーク値Dp1〜Dp6(以下、差分合成ベクトルピーク値Dpと記載することがある)が生じている様子を示している。
【0072】
以下、図11〜図14を参照して、プレイヤがコントローラ7を振り動かす態様に応じて生じる合成ベクトルの大きさVおよび差分合成ベクトルの大きさDの例について説明する。具体的には、プレイヤがコントローラ7を振り動かす大きさと、プレイヤがコントローラ7を振り動かすやわらかさ(メリハリの有無)とを変えたときに生じる合成ベクトルの大きさVおよび差分合成ベクトルの大きさDについて説明する。なお、図12Aは、プレイヤがコントローラ7を小さく振り動かし、各拍子をとるタイミングでメリハリのある振り方をしたときに現れる合成ベクトルの大きさ変化の一例を示すグラフである。図12Bは、図12Aで示す合成ベクトルを得たときに3軸方向それぞれの直線加速度の差分から算出される差分合成ベクトルの大きさ変化の一例を示すグラフである。図12Cは、図12Aで示す合成ベクトルにおいて、Y軸正方向の直線加速度が得られた期間を大きさ0として当該合成ベクトルの大きさ変化の一例を示すグラフである。図13Aは、プレイヤがコントローラ7を大きく振り動かし、各拍子をとるタイミングをやわらかくメリハリが少ない振り方をしたときに現れる合成ベクトルの大きさ変化の一例を示すグラフである。図13Bは、図13Aで示す合成ベクトルを得たときに3軸方向それぞれの直線加速度の差分から算出される差分合成ベクトルの大きさ変化の一例を示すグラフである。図13Cは、図13Aで示す合成ベクトルにおいて、Y軸正方向の直線加速度が得られた期間を大きさ0として当該合成ベクトルの大きさ変化の一例を示すグラフである。図14Aは、プレイヤがコントローラ7を小さく振り動かし、各拍子をとるタイミングをやわらかくメリハリが少ない振り方をしたときに現れる合成ベクトルの大きさ変化の一例を示すグラフである。図14Bは、図14Aで示す合成ベクトルを得たときに3軸方向それぞれの直線加速度の差分から算出される差分合成ベクトルの大きさ変化の一例を示すグラフである。図14Cは、図14Aで示す合成ベクトルにおいて、Y軸正方向の直線加速度が得られた期間を大きさ0として当該合成ベクトルの大きさ変化の一例を示すグラフである。
【0073】
コントローラ7を大きく振り動かしたときのピーク値Vp(図11Cおよび図13Cのピーク値Vp)と、コントローラ7を小さく振り動かしたときのピーク値Vp(図12Cおよび図14Cのピーク値Vp)とを比較すると、大きく振り動かしたときのピーク値Vpが大きくなる。これは、同じテンポでコントローラ7を振り動かした場合、相対的に大きく振り動かす方がコントローラ7を速く移動させることが必要となり、検出される加速度が大きくなるためであると考えられる。したがって、ピーク値Vpの値を用いて、プレイヤがコントローラ7を振り動かす大きさを判定することができる。
【0074】
一方、コントローラ7を大きく振り動かして各拍子をとるタイミングでコントローラ7にメリハリをつけて振り動かしたときのピーク値Dp(図11Bのピーク値Dp)と、コントローラ7をやわらかくメリハリが少ない振り方で振り動かしたときのピーク値Dp(図13Bのピーク値Dp)とを比較すると、メリハリをつけて振り動かしたときのピーク値Dpが大きくなる。また、コントローラ7を小さく振り動かして各拍子をとるタイミングでコントローラ7にメリハリをつけて振り動かしたときのピーク値Dp(図12Bのピーク値Dp)と、コントローラ7をやわらかくメリハリが少ない振り方で振り動かしたときのピーク値Dp(図14Bのピーク値Dp)とを比較しても、メリハリをつけて振り動かしたときのピーク値Dpが大きくなる。したがって、ピーク値Dpの値を用いて、プレイヤがコントローラ7を振り動かすやわらかさ(メリハリの有無)を判定することができる。
【0075】
ここで、コントローラ7を小さくメリハリをつけて振り動かしたときのピーク値Dp(図12Bのピーク値Dp)と、コントローラ7を大きくやわらかく振り動かしたときのピーク値Dp(図13Bのピーク値Dp)とを比較すると、両者の差が小さく区別が困難となることがある。しかしながら、両者は、ピーク値Vpによって振り動かす大きさが区別されているため、ピーク値Vpによってピーク値Dpの判定基準(閾値D1)を変更すれば、コントローラ7を振り動かすときのメリハリの強弱をピーク値Dpの値によって判定することが可能となる。
【0076】
本実施形態では、加速度データを用いてプレイヤがコントローラ7を振り動かす大きさおよびメリハリの大小等を判定し、判定結果に基づいて音楽の演奏内容(演奏する楽器数や種類、奏法、ビート数、音調等)を変化させる。これによって、プレイヤは、コントローラ7の振り動かし方によって、演奏される楽曲の表現(アーティキュレーション;articulation)を変えることができる。さらに、プレイヤがコントローラ7を振り動かすタイミングに応じて演奏テンポを変化させ、振り動かす加速度の大きさに応じて演奏音量を変化させる。
【0077】
次に、ゲームシステム1において行われる音楽演奏処理の詳細を説明する。まず、図15〜図19を参照して、音楽演奏処理において用いられる主なプログラムおよびデータについて説明する。なお、図15は、ゲーム装置3のメインメモリ33に記憶される主なプログラムおよびデータを示す図である。図16は、シーケンスデータの一例を示す図である。図17は、シーケンスデータの他の例を示す図である。図18は、トラック選択テーブルの一例を示す図である。図19は、シーケンス選択テーブルの一例を示す図である。
【0078】
図15に示すように、メインメモリ33には、プログラム記憶領域33Pおよびデータ記憶領域33Dが設定される。プログラム記憶領域33Pには、音楽演奏プログラムPa、加速度取得プログラムPb、合成ベクトル算出プログラムPc、合成ベクトルピーク値検出プログラムPd、加速度差分算出プログラムPe、差分合成ベクトル算出プログラムPf、差分合成ベクトルピーク値検出プログラムPg、トラック選択プログラムPh、シーケンス選択プログラムPi、テンポ算出プログラムPj、およびシーケンス演奏プログラムPk等が記憶される。また、データ記憶領域33Dには、加速度データDa、合成ベクトル履歴データDb、差分合成ベクトル履歴データDc、楽曲データDd、トラック選択テーブルデータDe、シーケンス選択テーブルデータDf、および画像データDg等が記憶される。なお、メインメモリ33には、図15に示す情報に含まれるデータの他、ゲームに登場するプレイヤキャラクタPCや他のキャラクタ等に関するデータ(位置データ等)や仮想ゲーム空間に関するデータ(背景データ等)等、ゲーム処理に必要なデータが記憶される。
【0079】
音楽演奏プログラムPaは、音楽演奏処理全体(後述するステップ51〜ステップ70;以下、各プログラムに対応するステップ番号のみを示す)を定義するプログラムである。この音楽演奏プログラムPaの実行開始によって音楽演奏処理が開始される。加速度取得プログラムPbは、コントローラ7から送信された加速度データを受信して取得する処理(ステップ54)を定義する。合成ベクトル算出プログラムPcは、取得した加速度データに基づいて、合成ベクトルの大きさを算出する処理(ステップ55)を定義する。合成ベクトルピーク値検出プログラムPdは、所定のピーク検出アルゴリズムに基づいて、算出された合成ベクトルの大きさにおけるピーク値を検出する処理(ステップ61)を定義する。加速度差分算出プログラムPeは、取得した加速度データに基づいて、前回取得した加速度データとの差分を算出する処理(ステップ57)を定義する。差分合成ベクトル算出プログラムPfは、算出された各軸の差分を用いて、差分合成ベクトルの大きさを算出する処理(ステップ58)を定義する。差分合成ベクトルピーク値検出プログラムPgは、所定のピーク検出アルゴリズムに基づいて、算出された差分合成ベクトルの大きさにおけるピーク値を検出する処理(ステップ64)を定義する。トラック選択プログラムPhは、合成ベクトルの大きさにおけるピーク値に応じて、演奏するトラックを選択する処理(ステップ63)を定義する。シーケンス選択プログラムPiは、差分合成ベクトルの大きさにおけるピーク値や最大値に応じて、演奏するシーケンスを選択する処理(ステップ66、ステップ70)を定義する。テンポ算出プログラムPjは、合成ベクトルの大きさにおけるピーク値の時間間隔に応じて拍タイミングを決定する処理(ステップ67)を定義する。シーケンス演奏プログラムPkは、設定された演奏パラメータに基づいて、選択されているシーケンスデータおよびトラックデータに応じた演奏データを演奏する処理(ステップ68)を定義する。
【0080】
加速度データDaは、コントローラ7から送信データとして送信されてくる一連の操作情報に含まれる加速度データである。加速度データDaには、加速度センサ701がX、Y、およびZ軸の3軸成分に分けてそれぞれ検出したX軸方向加速度データDa1、Y軸方向加速度データDa2、およびZ軸方向加速度データDa3が含まれる。なお、ゲーム装置3に備える受信ユニット6は、コントローラ7から所定間隔例えば5msごとに送信される操作情報に含まれる加速度データを受信し、受信ユニット6に備える図示しないバッファに蓄えられる。その後、所定の音楽演奏処理周期毎やゲーム処理間隔である1フレーム毎に読み出されてメインメモリ33の加速度データDaが更新される。本実施例では、加速度データDaは、コントローラ7から送信された最新の加速度データと前回取得した加速度データとが格納されればよいが、過去所定フレーム分の加速度データを格納するようにしてもよい。
【0081】
合成ベクトル履歴データDbは、算出された合成ベクトルの大きさの履歴が所定期間分記録されたデータである。差分合成ベクトル履歴データDcは、算出された差分合成ベクトルの大きさの履歴が所定期間分記録されたデータである。
【0082】
楽曲データDdは、例えばMIDI形式の音源制御データで構成され、複数の楽曲データDd1、Dd2、…を含んでいる。楽曲データDd1、Dd2、…は、それぞれ複数のシーケンスデータを含んでおり、図15においては楽曲データDd1に含まれるシーケンスデータSd1およびSd2を一例として示している。以下、図16および図17を参照して、シーケンスデータSd1およびSd2について説明する。
【0083】
図16および図17において、シーケンスデータSd1およびSd2では、複数の楽器をMIDIチャンネルと称する複数のトラック(チャンネル)に割り当てることにより、各楽器に割り当てたトラック番号で各々の楽器を指定して、複数の楽器の動作を選択的に制御できるようにしている。つまり、シーケンスデータSd1およびSd2では、1つのトラック(チャンネル)が音楽演奏上の1パート(1つの楽器)に割り当てられて構成されている。シーケンスデータSd1およびSd2は、DSP34およびARAM35(音源)によって複数の楽器による演奏を行うために利用される。上記音源は、楽器それぞれに対応する音色を有しており、トラック毎に異なる音色を割り当てて、指定されたトラック番号に応じた音色の楽音を発生する。そして、上記音源は、CPU30から指示される演奏パラメータに基づいて指定された音程、音色、音量の楽音を指定された演奏テンポで発音する。
【0084】
具体的には、シーケンスデータSd1およびSd2は、16トラックのトラックデータTd101〜Td116およびTd201〜Td216をそれぞれ有している。各トラックには、トラック番号、楽器名称、およびトラック演奏データがそれぞれ記述されている。各トラックデータTdは、トラック番号「1」がフルート、トラック番号「2」がバイオリン、トラック番号「3」がピアノのように、各トラック番号に異なった楽器が割り当てられ、それぞれ対応するトラック演奏データが記述されている。トラック演奏データは、各楽器の発音開始(ノートオン)および発音停止(ノートオフ)を示す情報、音の高さを示す情報、発音の強さを示す情報等を含む音符的な情報である。DSP34およびARAM35は、トラック番号および演奏タイミングに応じたトラック演奏データとが指示されることによって、所定の音色の楽音を発生することができる。
【0085】
シーケンスデータSd1およびSd2は、共に同じ楽曲を示すデータであるが、一例として奏法が異なったトラック演奏データが記述される。例えば、図16に示すシーケンスデータSd1は、各楽器(トラック)が音を滑らかに続けて発音する円滑奏法(レガート;Legato)によるトラック演奏データが記述されている。一方、図17に示すシーケンスデータSd2は、音楽的に適切な音符のみを1音符ずつ音を分離して各楽器が発音する分離奏法(スタッカート;Staccato)によるトラック演奏データが記述されている。
【0086】
他のシーケンスデータSd1およびSd2の設定例として、シーケンスデータSd1に8ビートによるトラック演奏データを記述して、シーケンスデータSd2に16ビートによるトラック演奏データを記述する等、同じ楽曲でもビート数を変えたトラック演奏データを記述してもよい。また、シーケンスデータSd1に短調によるトラック演奏データを記述して、シーケンスデータSd2に長調によるトラック演奏データを記述する等、同じ楽曲でも曲調を変えたトラック演奏データを記述してもよい。シーケンスデータSd1およびSd2には、同じ楽曲でも楽曲の表現が異なるようなトラック演奏データがそれぞれ記述される。なお、1つの楽曲に対して3つ以上のシーケンスデータSdを設定してもかまわない。この場合、後述する選択シーケンステーブルを3区分以上に設定すれば、同様に本発明を実現することができる。
【0087】
このように、1つの楽曲データDdは、奏法、ビート数、音調等が異なったシーケンスデータSdを含んでおり、各シーケンスデータSdは演奏対象となる楽器がそれぞれ異なったトラックデータTdを含んでいる。
【0088】
トラック選択テーブルデータDeは、合成ベクトルの大きさにおけるピーク値に応じて選択されるトラック番号を示すテーブルデータであり、演奏対象となる楽曲毎に設定されている。以下、図18を参照して、トラック選択テーブルデータDeの一例について説明する。
【0089】
図18において、トラック選択テーブルデータDeとして記憶されるトラック選択テーブルは、合成ベクトルピーク値Vpに対応する選択トラック番号が記述されている。例えば、合成ベクトルピーク値Vpが閾値V1未満の場合、トラック番号「1」、「3」、および「5」が選択されることがトラック選択テーブルに記述されている。合成ベクトルピーク値Vpが閾値V1以上で閾値V2未満の場合、トラック番号「1」〜「3」、「5」、「10」、および「12」が選択されることがトラック選択テーブルに記述されている。合成ベクトルピーク値Vpが閾値V2以上で閾値V3未満の場合、トラック番号「1」〜「3」、「5」、「7」、「8」、「10」、「12」、「15」、および「16」が選択されることがトラック選択テーブルに記述されている。そして、合成ベクトルピーク値Vpが閾値V3以上の場合、全てのトラック番号(つまり、トラック番号「1」〜「16」)が選択されることがトラック選択テーブルに記述されている。
【0090】
シーケンス選択テーブルデータDfは、差分合成ベクトルの大きさにおけるピーク値に応じて選択されるシーケンス番号を示すテーブルデータであり、演奏対象となる楽曲毎に設定されている。以下、図19を参照して、シーケンス選択テーブルデータDfの一例について説明する。
【0091】
図19において、シーケンス選択テーブルデータDfとして記憶されるシーケンス選択テーブルは、差分合成ベクトルピーク値Dpに対応する選択シーケンス番号が記述されている。例えば、差分合成ベクトルピーク値Dpが閾値D1未満の場合、シーケンス番号「Sd1」が選択されることがシーケンス選択テーブルに記述されている。また、差分合成ベクトルピーク値Dpが閾値D1以上の場合、シーケンス番号「Sd2」が選択されることがシーケンス選択テーブルに記述されている。
【0092】
画像データDgは、プレイヤキャラクタ画像データや他のキャラクタ画像データ等を含み、仮想ゲーム空間にプレイヤキャラクタや他のキャラクタを配置してゲーム画像を生成するためのデータである。
【0093】
次に、図20および図21を参照して、ゲーム装置3において行われる音楽演奏処理の詳細を説明する。なお、図20は、ゲーム装置3において実行される音楽演奏処理の流れの前半を示すフローチャートである。図21は、ゲーム装置3において実行される音楽演奏処理の流れの後半を示すフローチャートである。なお、図20および図21に示すフローチャートにおいては、ゲーム処理のうち、音楽演奏処理に関わる処理ついて説明し、本願発明と直接関連しない他のゲーム処理については詳細な説明を省略する。また、図20および図21では、CPU30が実行する各ステップを「S」と略称する。
【0094】
ゲーム装置3の電源が投入されると、ゲーム装置3のCPU30は、図示しないブートROMに記憶されている起動プログラムを実行し、これによってメインメモリ33等の各ユニットが初期化される。そして、光ディスク4に記憶されたゲームプログラムがメインメモリ33に読み込まれ、CPU30によって当該ゲームプログラムの実行が開始される。図20〜図21に示すフローチャートは、以上の処理が完了した後に行われる音楽演奏処理を示すフローチャートである。
【0095】
図20において、CPU30は、音楽演奏処理を行うための初期設定を行い(ステップ51)、処理を次のステップに進める。例えば、CPU30は、初期設定として、音楽演奏処理処理を行う楽曲を選択して楽曲データDdから選択対象の楽曲データを抽出する。また、CPU30は、演奏対象とするシーケンスデータおよびトラックデータをデフォルト値に設定する。
【0096】
次に、CPU30は、シーケンスのカウント処理を行い(ステップ52)、シーケンス終了か否かを判断する(ステップ53)。そして、演奏対象となっているシーケンスデータの最後までカウントされた場合、CPU30は、シーケンス終了と判断して、当該フローチャートによる処理を終了する。一方、CPU30は、演奏対象となっているシーケンスデータの途中までのカウントである場合、次のステップ54に処理を進める。ここで、上記ステップ52で行うカウント処理は、シーケンスデータ(図16、図17参照)からトラック演奏データを順番に読み出す際に、どのタイミングのトラック演奏データを読み出すのかを示すカウント値を設定する処理であり、設定される拍タイミングに応じてカウント値の進行が変化する。なお、後述により明らかとなるが、本実施形態ではプレイヤの操作に応じて演奏対象となるシーケンスデータが変化する。したがって、上記ステップ52で行うカウント処理で進行したカウント値は、演奏対象となりえる複数のシーケンスデータ(つまり、同じ楽曲データに所属するシーケンスデータ)を対象としており、複数のシーケンスデータに対するカウントが同時並行で進行することになる。
【0097】
ステップ54において、CPU30は、コントローラ7から受信した操作情報に含まれる各軸の加速度データを取得し、処理を次のステップに進める。そして、CPU30は、取得した加速度データを加速度データDaとしてメインメモリ33に記憶する。ここで、ステップ54で取得される加速度データには、加速度センサ701がX、Y、およびZ軸の3軸成分に分けてそれぞれ検出したX、Y、およびZ軸方向加速度データが含まれている。ここでは、通信部75は、所定の時間間隔(例えば5ms間隔)で操作情報をゲーム装置3へ送信しており、受信ユニット6に備える図示しないバッファに少なくとも加速度データが蓄えられる。そして、CPU30は、所定の音楽演奏処理周期毎やゲーム処理単位である1フレーム毎にバッファに蓄えられた加速度データを取得してメインメモリ33に格納する。なお、メインメモリ33に取得した最新の加速度データを格納する際、前回取得して格納された加速度データDaを少なくとも残すように、すなわち最新の2回取得分の加速度データが常に格納されているように加速度データDaが更新される。
【0098】
次に、CPU30は、上記ステップ54で取得したX軸方向加速度データDa1、Y軸方向加速度データDa2、およびZ軸方向加速度データDa3を用いて、合成ベクトルの大きさVを算出する(ステップ55)。具体的には、CPU30は、X軸方向加速度データDa1が示す加速度をXa、Y軸方向加速度データDa2が示す加速度をYa、およびZ軸方向加速度データDa3が示す加速度をZaとして、上記数式(1)を用いて大きさVを算出する。そして、CPU30は、算出した大きさVを合成ベクトル履歴データDbの最新データとして記録し(ステップ56)、処理を次のステップに進める。ここで、CPU30は、Y軸方向加速度データDa2がY軸正方向の加速度を示している場合、大きさV=0として記録する。これは、上述したように、拍子のタイミングで生じる加速度とは逆方向に生じた成分による大きさVのピークを除去するためであり、V=0として記録することによって後述するステップ61において各拍子のタイミングに応じたピーク値のみ抽出することができる。
【0099】
次に、CPU30は、上記ステップ54で取得したX軸方向加速度データDa1、Y軸方向加速度データDa2、およびZ軸方向加速度データDa3と、前回取得したX軸方向加速度データDa1、Y軸方向加速度データDa2、およびZ軸方向加速度データDa3とを用いて、各軸の加速度の差分を算出する(ステップ57)。そして、CPU30は、各軸の加速度の差分を用いて、差分合成ベクトルの大きさDを算出する(ステップ58)。具体的には、CPU30は、前回取得したX軸方向加速度データDa1が示す加速度をXa0、Y軸方向加速度データDa2が示す加速度をYa0、およびZ軸方向加速度データDa3が示す加速度をZa0として、上記数式(2)を用いて大きさDを算出する。そして、CPU30は、算出した大きさDを差分合成ベクトル履歴データDcの最新データとして記録し(ステップ59)、処理を次のステップに進める。
【0100】
図21に進み、CPU30は、合成ベクトル履歴データDbとして記録されている合成ベクトルの大きさVの履歴を参照して、合成ベクトルの大きさVのピークか否かを判定する(ステップ61)。なお、合成ベクトルの大きさVのピーク検出については、既に公知のピーク検出アルゴリズムを用いればよい。そして、CPU30は、合成ベクトルの大きさVのピークである場合(ステップ62でYes)、次のステップ63に処理を進める。一方、CPU30は、合成ベクトルの大きさVのピークでない場合(ステップ62でNo)、次のステップ68に処理を進める。
【0101】
ステップ63において、CPU30は、検出された合成ベクトルピーク値Vpに応じて、音量およびトラックデータを選択して、処理を次のステップに進める。CPU30は、例えば合成ベクトルピーク値Vpが相対的に大きいときに再生される楽曲の音量が大きくなるように、演奏パラメータの1つである演奏音量(ダイナミクス)を合成ベクトルピーク値Vpに応じて設定する。一例として、CPU30は、過去の合成ベクトルピーク値Vpの値を参照して、最新のピーク値Vpに所定の重み付けをした加重平均を取ることで演奏音量を算出する。
【0102】
上記ステップ63におけるトラックデータの選択については、例えば合成ベクトルピーク値Vpが取りうる数値範囲に対して、複数の閾値(例えば、3つの閾値V1、V2、V3;0<V1<V2<V3<取りうる最大値)が設定される。そして、それらの閾値と検出された合成ベクトルピーク値Vpとの関係に応じて、選択するトラックデータ(Td)が決定される。例えば、CPU30は、トラック選択テーブルデータDeから演奏対象となっている楽曲のトラック選択テーブル(図18)を参照し、合成ベクトルピーク値Vpに応じて選択するトラック番号を決定する。上述したように、各トラックデータTdは、異なった楽器がそれぞれ割り当てられ、その楽器に対応するトラック演奏データが記述されている。したがって、トラックデータを選択することによって、楽曲の演奏対象とする楽器数や種類を選択することになる。
【0103】
ここで、合成ベクトルピーク値Vpは、プレイヤがコントローラ7を大きく速く振り動かすことによって、その値が上昇するパラメータである。したがって、図18に示した例のように、合成ベクトルピーク値Vpが大きくなるにしたがって選択されるトラック数を多くすることによって、プレイヤがコントローラ7を大きく速く振り動かすことに応じて演奏される楽器数や種類が増えることになる。したがって、コントローラ7を振り動かすことによって演奏される楽曲の表現が変化した印象をプレイヤに与えて、あたかもプレイヤが指揮をしているようなリアルな感覚を与えることができる。
【0104】
なお、上記ステップ63におけるトラックデータの選択は、選択トラックテーブルを参照することによって行われたが、他の態様でトラックデータが選択されてもかまわない。例えば、合成ベクトルピーク値Vpを変数として選択トラック数nが算出される数式を設定して、取得した合成ベクトルピーク値Vpに基づいて選択トラック数nを算出する。そして、演奏対象のシーケンスデータSdから選択トラック数nに応じた任意のトラックデータ、またはトラック番号「1」〜「n」までのトラックデータを選択してもかまわない。
【0105】
次に、CPU30は、差分合成ベクトル履歴データDcとして記録されている差分合成ベクトルの大きさDの履歴を参照して、所定時間前(例えば、8フレーム前)から現在までに差分合成ベクトルの大きさDのピークがあるか否かを判定する(ステップ64)。なお、差分合成ベクトルの大きさDのピーク検出についても、既に公知のピーク検出アルゴリズムを用いればよい。そして、CPU30は、差分合成ベクトルの大きさDのピークがある場合(ステップ65でYes)、次のステップ66に処理を進める。一方、CPU30は、差分合成ベクトルの大きさDのピークでない場合(ステップ65でNo)、次のステップ70に処理を進める。
【0106】
ステップ66において、CPU30は、検出された差分合成ベクトルピーク値Dpに応じて、演奏対象とするシーケンスデータを選択して、次のステップ67に処理を進める。具体的には、例えば差分合成ベクトルピーク値Dpが取りうる数値範囲に対して、少なくとも1つの閾値D1が設定される。ここで、閾値D1は、予め設定された最大値D1maxと最小値D1minとの間でピーク値Vpに応じて線形に変化する。例えば、コントローラ7を振り動かす大きさを示すボリューム値Vmを、
Vm=Vp/(大きさVが取りうる最大値)
で算出して、閾値D1を
D1=D1min+(D1max−D1min)×Vm
として、最大値D1maxと最小値D1minとの間で閾値D1を変化させる。上述した図12Bのピーク値Dpと図13Bのピーク値Dpと差のように、コントローラ7を振り動かす大きさによってはピーク値Dpの差が表れないことがあるが、ピーク値Vpが相対的に小さいときに閾値D1の値を小さく変化させることによって、コントローラ7を振り動かすときのメリハリの強弱をピーク値Dpによって正確に判定することができる。
【0107】
そして、CPU30は、閾値D1と検出された差分合成ベクトルピーク値Dpとの関係に応じて、選択するシーケンスデータ(Sd)を決定する。例えば、CPU30は、シーケンス選択テーブルデータDfから演奏対象となっている楽曲のシーケンス選択テーブル(図19)を参照し、差分合成ベクトルピーク値Dpに応じて選択するシーケンス番号を決定する。上述したように、各シーケンスデータSdは、共に同じ楽曲を示すデータであるが、奏法、ビート数、音調等が異なったトラック演奏データが記述されている。したがって、シーケンスデータを選択することによって、楽曲を演奏する奏法、ビート数、音調等を選択することになる。
【0108】
ここで、差分合成ベクトルピーク値Dpは、プレイヤがコントローラ7を拍子のタイミングでメリハリをつけて振り動かすことによって、その値が上昇するパラメータである。例えば、図16、図17、および図19に示した例では、差分合成ベクトルピーク値Dpが大きくなると円滑奏法から分離奏法に変化するようにシーケンスデータが選択される。したがって、メリハリのある振り方でコントローラ7を振り動かすことによって演奏される楽曲の表現が変化した印象をプレイヤに与えて、あたかもプレイヤが指揮をしているようなリアルな感覚を与えることができる。
【0109】
一方、ステップ70において、CPU30は、差分合成ベクトル履歴データDcとして記録されている差分合成ベクトルの大きさDの履歴を参照して、所定時間前から現在までの差分合成ベクトルの大きさDの最大値に応じて、演奏シーケンスデータを選択して、次のステップ67に処理を進める。例えば、プレイヤによるコントローラ7の振り動かし方によっては、合成ベクトルピーク値Vpが検出される直前に差分合成ベクトルの大きさDのピークが表れないことがある。例えば、図14Bおよび図14Cに示すように、プレイヤがコントローラ7を小さく振り動かして各拍子をとるタイミングをやわらかくメリハリが少ない振り方をしたとき、差分合成ベクトルピーク値Vp5発生時点からピーク値Vp6発生時点までの期間には、差分合成ベクトルの大きさDのピークが表れていない。このような状態のときには、該当期間における大きさD最大値を採用して演奏シーケンスデータを選択する。なお、大きさDの最大値に応じて演奏シーケンスデータを選択する方法は、ピーク値Dpを用いて選択する方法と同様であるため、詳細な説明を省略する。
【0110】
ステップ67において、CPU30は、前回取得した合成ベクトルの大きさVのピーク発生時点から今回取得した合成ベクトルの大きさVのピーク発生時点までの時間間隔(図11Cのt1、t2参照)を算出し、当該時間間隔を用いて演奏テンポを設定して、次のステップ68に処理を進める。具体的には、CPU30は、算出された時間間隔が相対的に長いときに再生される楽曲の演奏テンポが遅くなるように、演奏パラメータの1つである拍タイミングを設定する。一例として、CPU30は、過去に算出した時間間隔を参照して、最新の時間間隔に所定の重み付けをした加重平均を取ることで拍タイミングを算出する。
【0111】
ステップ68において、CPU30は、設定されている演奏パラメータに基づいて制御し、現在選択されているシーケンスデータおよびトラックデータを演奏対象にして楽曲データDdを演奏して、処理を次のステップに進める。具体的には、CPU30は、現在の演奏パラメータによって、演奏音量および拍タイミング等を設定する。また、CPU30は、上記ステップ52のカウントされているカウント値に応じて、選択されているトラック演奏データから情報を読み出す。そして、音源(DSP34およびARAM35)は、読み出された各トラック演奏データに予め設定された音色を割り当て、演奏パラメータに基づいてスピーカ2aから音を再生する。これによって、プレイヤがコントローラ7を振り動かす動作に応じた所定の音色の楽曲が演奏される。
【0112】
ここで、上記ステップ68では、プレイヤがコントローラ7を振り動かさなかった場合、シーケンスデータSdにおける拍の最後の時点で泊タイミング(演奏テンポ)を0にして楽曲演奏を停止させてもよい。また、演奏停止状態からコントローラ7を振り動かす動作が開始された場合、合成ベクトルの大きさVがピークを示した時点とシーケンスデータSdにおける拍の出だしとを一致させて楽曲演奏を開始してもよい。
【0113】
次に、CPU30は、例えば現在選択されているトラックデータに応じて演奏対象のキャラクタを設定して当該キャラクタが演奏している様子を表現し、プレイヤキャラクタPCが拍子タイミングに応じて指揮棒を振る様子を表現したゲーム画像(図8、図9参照)を生成してモニタ2に表示する(ステップ69)。そして、CPU30は、上記ステップ52に戻って処理を繰り返す。
【0114】
このように、複数のトラックデータを有する楽曲に対して、加速度センサが検出した加速度の大きさに応じて演奏対象とするトラックデータを変化させるため、プレイヤがコントローラ7を振り動かす動作に応じて音楽の演奏の内容を変化させることができる。例えば、各トラックデータに対して異なった楽器を割り当てることによって、演奏対象とする楽器種を変化させることができるため、多様な演奏変化を生じさせてプレイヤにあたかも指揮棒を振って指揮しているような娯楽環境を提供することができる。また、複数のトラックデータを有するシーケンスデータを複数設定された楽曲に対して、加速度センサが検出した加速度の大きさに応じて演奏対象とするシーケンスデータを変化させる。例えば、各シーケンスデータに奏法、ビート数、曲調等が異なった演奏データを記述することによって、プレイヤがコントローラ7を振り動かす動作に応じて音楽の表現を変化させることができる。したがって、さらに多様な演奏変化を生じさせることが可能となる。
【0115】
なお、上記ステップ66やステップ70では、検出された差分合成ベクトルピーク値Dpや大きさDの最大値に応じて、演奏対象とするシーケンスデータを変更する処理を行っていたが、演奏対象とするトラックデータを変更してもかまわない。技術的には、図15〜図17に示すようにシーケンスデータSdがトラックデータ群を含んでいることから、複数のシーケンスデータから1つのシーケンスデータを選択することは、複数のトラックデータ群から1つのトラックデータ群を選択することと同意である。例えば、図16等に示したシーケンスデータSdのように複数のトラックデータが含まれる場合、当該トラックデータを複数のトラックデータ群に区別して何れかのトラックデータ群を選択する。そして、上記ステップ63で選択されたトラックデータを、選択されたトラックデータ群に属するトラックデータのみに制限する、または選択されたトラックデータ群に属するトラックデータに所定の方式を用いて変更する、または上記ステップ63において選択されたトラックデータ群から演奏対象のトラックデータを選択する等を行って演奏対象のトラックデータを決定する。このように、音楽の表現が異なるように構成されたシーケンスデータと同様に、トラックデータに対して音楽の表現が互いに異なる複数のトラックデータ群を構成することによって、同様に本発明を実現することができる。
【0116】
また、上述した楽曲データDdは、MIDI形式の音源制御データで構成された例を説明したが、他の形式のデータで構成してもかまわない。例えば、各トラックデータに含まれるトラック演奏データを、それぞれ各トラックに割り当てられた楽器の生演奏を録音すること等によって得られる波形情報(ストリーミング情報)やPCM(Pulse Code Modulation)データで構成してもかまわない。この場合、演奏テンポの制御が困難となるが、音の高さを変えずに演奏テンポを変える既に周知のタイムコンプレッションの技術を用いれば、同様にコントローラ7の動作によって得られる拍タイミングに応じた演奏テンポ制御が可能となる。
【0117】
また、コントローラ7で検出されたY軸方向の加速度がY軸正方向である場合、合成ベクトルの大きさVを0とすることによって、拍子のタイミングで生じる加速度とは逆方向に生じた成分を除去したが、他の軸成分における正負方向の加速度検出や複数軸成分における正負方向の加速度検出によって同様の処理を行ってもかまわない。
【0118】
また、コントローラ7に設けられた加速度センサ701は、互いに直交する3軸成分に分けてそれぞれ検出して出力する3軸加速度センサを用いて説明したが、少なくとも直交する2軸成分をそれぞれ検出する加速度センサを用いれば本発明を実現することができる。例えば、コントローラ7が配置された3次元空間における加速度をX軸およびY軸(図3、図4参照)の2軸成分に分けてそれぞれ検出して出力する加速度センサを用いても、プレイヤが上下左右方向にコントローラ7を指揮棒のように振り動かす動作の判定を行うことができる。さらに、1軸方向のみの加速度を検出する加速度センサを用いても本発明を実現することができる。例えば、コントローラ7が配置された3次元空間における加速度をY軸(図3、図4参照)成分のみ検出して出力する加速度センサを用いても、プレイヤが上下方向にコントローラ7を指揮棒のように振り動かす動作の判定を行うことができる。
【0119】
また、上述した説明では、コントローラ7とゲーム装置3とが無線通信によって接続された態様を用いたが、コントローラ7とゲーム装置3とがケーブルを介して電気的に接続されてもかまわない。この場合、コントローラ7に接続されたケーブルをゲーム装置3の接続端子に接続する。
【0120】
また、コントローラ7から無線送信される送信データを受信する受信手段として、ゲーム装置3の接続端子に接続された受信ユニット6を用いて説明したが、ゲーム装置3の本体内部に設けられた受信モジュールによって当該受信手段を構成してもかまわない。この場合、受信モジュールが受信した送信データは、所定のバスを介してCPU30に出力される。
【0121】
また、上述したコントローラ7の形状や、それらに設けられている操作部72の形状、数、および設置位置等は、単なる一例に過ぎず他の形状、数、および設置位置であっても、本発明を実現できることは言うまでもない。また、コントローラ7における撮像情報演算部74の位置(撮像情報演算部74の光入射口)は、ハウジング71の前面でなくてもよく、ハウジング71の外部から光を取り入れることができれば他の面に設けられてもかまわない。
【産業上の利用可能性】
【0122】
本発明に係る音楽演奏プログラムおよび音楽演奏装置は、複数のトラックデータを有する楽曲に対して、加速度センサが検出した加速度の大きさに応じて演奏対象とするトラックデータを変化させることができ、入力装置等の動きに応じて音楽を演奏する装置やプログラムとして有用である。
【図面の簡単な説明】
【0123】
【図1】本発明の一実施形態に係るゲームシステム1を説明するための外観図
【図2】図1のゲーム装置3の機能ブロック図
【図3】図3のコントローラ7の上面後方から見た斜視図
【図4】図3のコントローラ7を下面後方から見た斜視図
【図5A】コントローラ7の上筐体を外した状態を示す斜視図
【図5B】コントローラ7の下筐体を外した状態を示す斜視図
【図6】図3のコントローラ7の構成を示すブロック図
【図7】図3のコントローラ7を用いてゲーム操作するときの状態を概説する図解図
【図8】モニタ2に表示するゲーム画像の一例を示す図
【図9】モニタ2に表示するゲーム画像の他の例を示す図
【図10A】コントローラ7を水平に静止させた状態とコントローラ7に加わる加速度との関係を説明するための図
【図10B】コントローラ7を上方向に振り上げた状態とコントローラ7に加わる加速度との関係を説明するための図
【図10C】コントローラ7を下方向に振り下げた状態とコントローラ7に加わる加速度との関係を説明するための図
【図11A】プレイヤがコントローラ7を大きく振り動かし、各拍子をとるタイミングでメリハリのある振り方をしたときに現れる合成ベクトルの大きさ変化の一例を示すグラフ
【図11B】図11Aで示す合成ベクトルを得たときにおける差分合成ベクトルの大きさ変化の一例を示すグラフ
【図11C】図11Aで示す合成ベクトルにおいて、Y軸正方向の直線加速度が得られた期間を大きさ0とした大きさ変化の一例を示すグラフ
【図12A】プレイヤがコントローラ7を小さく振り動かし、各拍子をとるタイミングでメリハリのある振り方をしたときに現れる合成ベクトルの大きさ変化の一例を示すグラフ
【図12B】図12Aで示す合成ベクトルを得たときにおける差分合成ベクトルの大きさ変化の一例を示すグラフ
【図12C】図12Aで示す合成ベクトルにおいて、Y軸正方向の直線加速度が得られた期間を大きさ0とした大きさ変化の一例を示すグラフ
【図13A】プレイヤがコントローラ7を大きく振り動かし、各拍子をとるタイミングをやわらかくメリハリが少ない振り方をしたときに現れる合成ベクトルの大きさ変化の一例を示すグラフ
【図13B】図13Aで示す合成ベクトルを得たときにおける差分合成ベクトルの大きさ変化の一例を示すグラフ
【図13C】図13Aで示す合成ベクトルにおいて、Y軸正方向の直線加速度が得られた期間を大きさ0とした大きさ変化の一例を示すグラフ
【図14A】プレイヤがコントローラ7を小さく振り動かし、各拍子をとるタイミングをやわらかくメリハリが少ない振り方をしたときに現れる合成ベクトルの大きさ変化の一例を示すグラフ
【図14B】図14Aで示す合成ベクトルを得たときにおける差分合成ベクトルの大きさ変化の一例を示すグラフ
【図14C】図14Aで示す合成ベクトルにおいて、Y軸正方向の直線加速度が得られた期間を大きさ0とした大きさ変化の一例を示すグラフ
【図15】ゲーム装置3のメインメモリ33に記憶される主なプログラムおよびデータを示す図
【図16】シーケンスデータの一例を示す図
【図17】シーケンスデータの他の例を示す図
【図18】トラック選択テーブルの一例を示す図
【図19】シーケンス選択テーブルの一例を示す図
【図20】ゲーム装置3において実行される音楽演奏処理の流れの前半を示すフローチャート
【図21】ゲーム装置3において実行される音楽演奏処理の流れの後半を示すフローチャート
【符号の説明】
【0124】
1…ゲームシステム
2…モニタ
2a…スピーカ
3…ゲーム装置
30…CPU
31…メモリコントローラ
32…GPU
33…メインメモリ
34…DSP
35…ARAM
36…コントローラI/F
37…ビデオI/F
38…外部メモリI/F
39…オーディオI/F
40…ディスクドライブ
41…ディスクI/F
4…光ディスク
5…外部メモリカード
6…受信ユニット
7…コントローラ
71…ハウジング
72…操作部
73…コネクタ
74…撮像情報演算部
741…赤外線フィルタ
742…レンズ
743…撮像素子
744…画像処理回路
75…通信部
751…マイコン
752…メモリ
753…無線モジュール
754…アンテナ
700…基板
701…加速度センサ
702…LED
703…水晶振動子
704…バイブレータ
705…電池
8…マーカ


【特許請求の範囲】
【請求項1】
少なくとも1軸方向の加速度を検出する加速度センサを備えた入力装置で検出された加速度に応じて操作される装置のコンピュータで実行される音楽演奏プログラムであって、
前記コンピュータに、
前記加速度センサから出力される加速度データを取得する加速度データ取得ステップと、
取得した加速度データを用いて、加速度の大きさを算出する加速度算出ステップと、
算出された加速度の大きさに基づいて、記憶手段に記憶された複数のトラックデータを含む楽曲データから演奏対象とするトラックデータを少なくとも1つ選択するトラックデータ選択ステップと、
前記トラックデータ選択ステップで選択されたトラックデータに基づいて、音響発生機器から発生する楽音を制御するためのデータを出力する音楽演奏ステップとを実行させる、音楽演奏プログラム。
【請求項2】
前記加速度算出ステップで算出された加速度の大きさの履歴を用いて、当該加速度の大きさのピーク値を検出する加速度ピーク値検出ステップを、さらに前記コンピュータに実行させ、
前記トラックデータ選択ステップでは、前記加速度ピーク値検出ステップで検出された加速度の大きさのピーク値に基づいて、演奏対象とするトラックデータが選択される、請求項1に記載の音楽演奏プログラム。
【請求項3】
前記加速度算出ステップは、前回取得した加速度データを用いて算出した加速度と今回取得した加速度データを用いて算出した加速度との差分を算出する差分算出ステップを含み、
前記トラックデータ選択ステップでは、前記差分算出ステップで算出された加速度の差分に基づいて、演奏対象とするトラックデータが選択される、請求項1に記載の音楽演奏プログラム。
【請求項4】
前記差分算出ステップで算出された加速度の差分の履歴を用いて、当該加速度の差分のピーク値を検出する加速度差分ピーク値検出ステップを、さらに前記コンピュータに実行させ、
前記トラックデータ選択ステップでは、前記加速度差分ピーク値検出ステップで検出された加速度の差分のピーク値に基づいて、演奏対象とするトラックデータが選択される、請求項3に記載の音楽演奏プログラム。
【請求項5】
前記楽曲データは、それぞれ異なったトラックデータから成る複数のトラックデータ群を含み、
前記加速度算出ステップでは、今回取得した加速度データから算出した加速度の大きさ、および前回取得した加速度データを用いて算出した加速度と今回取得した加速度データを用いて算出した加速度との差分が算出され、
前記音楽演奏プログラムは、
前記加速度算出ステップで算出された加速度の大きさの履歴を用いて、当該加速度の大きさのピーク値を検出する加速度ピーク値検出ステップと、
前記加速度算出ステップで算出された加速度の差分の履歴を用いて、当該加速度の差分のピーク値を検出する加速度差分ピーク値検出ステップとを、さらに前記コンピュータに実行させ、
前記トラックデータ選択ステップでは、前記加速度差分ピーク値検出ステップで検出された加速度の差分のピーク値に基づいて演奏対象とするトラックデータ群が選択され、前記加速度ピーク値検出ステップで検出された加速度の大きさのピーク値に基づいて演奏対象のトラックデータ群から演奏対象のトラックデータが選択される、請求項1に記載の音楽演奏プログラム。
【請求項6】
前記加速度センサは、前記入力装置に対して互いに直交する複数軸方向の加速度をそれぞれ検出し、
前記加速度算出ステップでは、取得した加速度データを用いて、前記複数軸方向それぞれの加速度ベクトルを合成した合成ベクトルの大きさが算出される、請求項1に記載の音楽演奏プログラム。
【請求項7】
前記加速度センサは、前記入力装置に対して互いに直交する複数軸方向の加速度をそれぞれ検出し、
前記差分算出ステップでは、前回取得した加速度データを用いて算出した加速度と今回取得した加速度データを用いて算出した加速度との差分を前記複数軸方向それぞれに算出し、当該複数軸方向それぞれの差分ベクトルを合成した差分合成ベクトルの大きさが加速度の差分として算出される、請求項3に記載の音楽演奏プログラム。
【請求項8】
前記複数のトラックデータには、それぞれ異なった楽器が割り当てられており、
前記トラックデータに割り当てられた楽器をそれぞれ仮想ゲーム世界に配置し、前記トラックデータ選択ステップで選択されたトラックデータに割り当てられた楽器のみが演奏されるアクションを表示装置に表示する表示処理ステップを、さらに前記コンピュータに実行させる、請求項1に記載の音楽演奏プログラム。
【請求項9】
前記複数のトラックデータには、それぞれ異なった楽器の演奏データが割り当てられていることを特徴とする、請求項1に記載の音楽演奏プログラム。
【請求項10】
前記トラックデータ群に割り当てられる演奏データは、他のトラックデータ群に割り当てられる演奏データに対して、同じ楽曲で奏法、ビート数、および曲調の少なくとも1つが互いに異なることを特徴とする、請求項1に記載の音楽演奏プログラム。
【請求項11】
前記装置は、音響発生機器から楽音を発生させる音源を備えており、
前記楽曲データに含まれる複数のトラックデータは、それぞれ前記音源の制御データで構成され、
前記音楽演奏ステップでは、前記トラックデータ選択ステップで選択されたトラックデータに記述された制御データが出力されて前記音源が制御される、請求項1に記載の音楽演奏プログラム。
【請求項12】
少なくとも1軸方向の加速度を検出する加速度センサを備えた入力装置で検出された加速度に応じて操作される音楽演奏装置であって、
前記加速度センサから出力される加速度データを取得する加速度データ取得手段と、
取得した加速度データを用いて、加速度の大きさを算出する加速度算出手段と、
算出された加速度の大きさに基づいて、記憶手段に記憶された複数のトラックデータを含む楽曲データから演奏対象とするトラックデータを少なくとも1つ選択するトラックデータ選択手段と、
前記トラックデータ選択手段が選択したトラックデータに基づいて、音響発生機器から発生する楽音を制御するためのデータを出力する音楽演奏手段とを備える、音楽演奏装置。


【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5A】
image rotate

【図5B】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10A】
image rotate

【図10B】
image rotate

【図10C】
image rotate

【図11A】
image rotate

【図11B】
image rotate

【図11C】
image rotate

【図12A】
image rotate

【図12B】
image rotate

【図12C】
image rotate

【図13A】
image rotate

【図13B】
image rotate

【図13C】
image rotate

【図14A】
image rotate

【図14B】
image rotate

【図14C】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate

【図21】
image rotate