(57)【要約】【目的】本発明は、音楽演奏家のシミュレーションゲームにて、キャラクタの能力値（技術力、スキル等）に基づいて、キャラクタによる演奏の上手下手を表現することを目的としている。【構成】このため、ビデオゲームのゲーム音楽の演奏状態を制御するビデオゲームの曲演奏制御方法、プログラム、記憶媒体及びゲーム装置であって、ピッチシフトテーブルに基づいて、再生中の曲のピッチシフトのタイミング及びピッチを自動的に変更するステップ（手段）、またはボリュームチェンジテーブルに基づいて、再生中の各曲の音量バランスを自動的に変更するステップ（手段）を含んでいる。また、プログラムを記録したコンピュータ読み取り可能な記録媒体である。【選択図】        図２
2004290501.tif 000002
【特許請求の範囲】
【請求項１】
ビデオゲームのゲーム音楽の演奏状態を制御する曲演奏制御方法であって、曲の再生を開始するステップと、キャラクタの能力値に基づいて作成されたピッチシフトテーブルに基づいて、再生中の曲のピッチシフトのタイミング及びピッチを自動的に変更するステップと、を含むことを特徴とするビデオゲームの曲演奏制御方法。
【請求項２】
ビデオゲームのゲーム音楽の演奏状態を制御する曲演奏制御方法であって、複数の曲の再生を同時に開始するステップと、キャラクタの能力値に基づいて作成されたボリュームチェンジテーブルに基づいて、再生中の各曲の音量バランスを自動的に変更するステップと、を含むことを特徴とするビデオゲームの曲演奏制御方法。
【請求項３】
ビデオゲームが実行可能なゲーム音楽の演奏状態を制御するプログラムであって、コンピュータを、曲の再生を開始する手段、キャラクタの能力値に基づいて作成されたピッチシフトテーブルに基づいて、再生中の曲のピッチシフトのタイミング及びピッチを自動的に変更する手段、として機能させるためのプログラム。
【請求項４】
ビデオゲームが実行可能なゲーム音楽の演奏状態を制御するプログラムであって、コンピュータを、複数の曲の再生を同時に開始する手段、キャラクタの能力値に基づいて作成されたボリュームチェンジテーブルに基づいて、再生中の各曲の音量バランスを自動的に変更する手段、として機能させるためのプログラム。
【請求項５】
請求項３又は請求項４に記載のプログラムを記録したコンピュータ読み取り可能な記録媒体。
【請求項６】
ビデオゲームのゲーム音楽の演奏状態を制御するゲーム装置であって、曲の再生を開始する手段と、キャラクタの能力値に基づいて作成されたピッチシフトテーブルに基づいて、再生中の曲のピッチシフトのタイミング及びピッチを自動的に変更する手段と、を備えることを特徴とするゲーム装置。
【請求項７】
ビデオゲームのゲーム音楽の演奏状態を制御するゲーム装置であって、複数の曲の再生を同時に開始する手段と、キャラクタの能力値に基づいて作成されたボリュームチェンジテーブルに基づいて、再生中の各曲の音量バランスを自動的に変更する手段と、を備えることを特徴とするゲーム装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明はビデオゲームの曲演奏制御方法、プログラム、記憶媒体及びゲーム装置に係り、特に音楽演奏家のシミュレーションゲームにて、キャラクタの能力値（技術力、スキル等）に基づいて、キャラクタによる演奏の上手下手を表現するビデオゲームの曲演奏制御方法、プログラム、記憶媒体及びゲーム装置に関する。
【０００２】
【従来の技術】
【特許文献１】
特許第２６３１０３０号公報  （第１−３頁、図３）
【特許文献２】
特開平１０−３３７３７９号公報  （第１−３頁、図１）
【特許文献３】
特開２０００−１８５１７５号公報  （第１−４頁、図１−５）
【特許文献４】
特開平１０−７８７９２号公報  （第１−３頁、図１）
【特許文献５】
特開平５−１８１４９７号公報  （第１−３頁、図１）
【０００３】
【発明が解決しようとする課題】
ところで、従来、ビデオゲームの曲演奏制御方法においては、以下の如きものがある。
【０００４】
先ず、演奏ミスを表現する場合、最も簡単な手法としては、本来同じ曲だが、上手い方と下手な方の少なくとも２つの曲を用意しておき、キャラクタの能力値（技術力、スキル等）に基づいて自動的に何れか１曲を選択して再生する方法が考えられる。しかし、この場合、曲の再生途中での変化はなく、表現としては用意した曲の何れか１曲を単に再生するにすぎないので、いつも同じ部分でミスをすることとなり、すぐに飽きてしまうという欠点がある。
【０００５】
そして、演奏の上手さの段階を増やせば増やす分だけ用意する曲が増えてしまい記録容量が増加することとなるので好ましくない。
【０００６】
また、本件出願人による特許第２６３１０３０号公報（特許文献１参照）では、伴奏用のＢＧＭ再生開始後、メロディ用の音の再生を開始し、プレイヤによるポインティングデバイスの移動量を検出して再生中のメロディ用の音の高さ（音程）を変化させ、即興演奏を行うことができる発明が開示されている。この発明によれば、特別な音楽知識を必要とすることなく、パーソナルコンピュータに接続されたマウス等のポインティングデバイスを動かすことによって、即興演奏を楽しむことができる。
【０００７】
しかしながら、現実的には、マウス等の座標変位によってプレイヤが音程変化を上手に制御する（即ち演奏する）のは容易ではなく、飽きられてしまう傾向にあった。
【０００８】
一方で、特開平１０−３３７３７９号公報（特許文献２参照）では、ゲーム成果度の段階的な変化に伴いゲーム音楽の音色数、演奏パート数、演奏単位長さを段階的に変化させる発明が開示されている。即ち、ゲームの獲得ポイントや勝ち抜き数等によって、少しずつ演奏パートや演奏フレーズを増やしていくことにより、最終的に豪華なオーケストラ構成となるようにしてあるので、ゲーム成果度の増加を聴覚的に認識することが可能となる。
【０００９】
しかしながら、演奏ミスを表現するものではないので、演奏途中の任意のごく一部の音のみを変化させるものではない。
【００１０】
そして、特開２０００−１８５１７５号公報（特許文献３参照）では、再生するゲーム音楽のパートのオンオフを管理するパートテーブルのフラグ情報を、ゲームの進行状況に応じて変更し、フラグがオンとなっているパートのみを再生する発明が開示されている。同時に、単にフラグ情報でなく、各パートの音量についての混合比を示す数値情報をパートテーブル上で管理し、例えば宝物を取得する度に、その宝物に対応したパートの混合比を上げることにより、そのパートの音量を増加（宝物を失った場合は減少）させる発明も開示されている。
【００１１】
この発明によっても、ゲームの進行状況に応じて、再生される楽曲が徐々に明らかになっていくので、プレイヤの達成感を向上させることができるが、上記同様に、演奏ミスを表現するものではないので、演奏途中の任意のごく一部の音のみを変化させるものではない。
【００１２】
更に、特開平１０−７８７９２号公報（特許文献４参照）では、登録した文字の音声データを、音量やピッチ等を変更するための簡単な操作でゲームプレイヤの好みの音声に加工し、後でその音声を再生できる発明が開示されている。
【００１３】
この発明では、プレイヤの好みにより自ら設定した通りに音声が再生されるが、やはり、演奏ミスを表現するものではないので、同様に、演奏途中の任意のごく一部の音のみを変化させるものではない。
【００１４】
その他、ピッチシフトする技術自体は広く知られており、例えば特開平５−１８１４９７号公報（特許文献５参照）のように音声再生中でビブラート効果を得るためにピッチシフト量を変化させる発明が開示されているが、同様に、演奏ミスを表現するものではないので、演奏途中の任意のごく一部の音のみを変化させるものではない。
【００１５】
そこで、この発明は、音楽演奏家のシミュレーションゲームにて、キャラクタの能力値（技術力、スキル等）に基づいて、キャラクタによる演奏の上手下手を表現する以下２つの方策を提供するものである。
（ア）再生中の曲のピッチ（音程）を、ピッチシフトテーブルに基づき、自動的に変更（ピッチシフト）して演奏ミスを表現する。
（イ）本来同じ曲だが上手い方と下手な方の２つの曲を用意し、一方の音量を０、他方を最大として同期再生を開始し、ボリュームチェンジテーブルに基づき、再生途中で自動的に各曲の音量バランスを変更して演奏ミスを表現する。
【００１６】
【課題を解決するための手段】
そこで、この発明は、上記課題を解決するために、ビデオゲームのゲーム音楽の演奏状態を制御する曲演奏制御方法であって、曲の再生を開始するステップと、キャラクタの能力値に基づいて作成されたピッチシフトテーブルに基づいて、再生中の曲のピッチシフトのタイミング及びピッチを自動的に変更するステップと、を含むことを特徴とする。
【００１７】
また、ビデオゲームのゲーム音楽の演奏状態を制御する曲演奏制御方法であって、複数の曲の再生を同時に開始するステップと、キャラクタの能力値に基づいて作成されたボリュームチェンジテーブルに基づいて、再生中の各曲の音量バランスを自動的に変更するステップと、を含むことを特徴とする。
【００１８】
更に、ビデオゲームが実行可能なゲーム音楽の演奏状態を制御するプログラムであって、コンピュータを、曲の再生を開始する手段、キャラクタの能力値に基づいて作成されたピッチシフトテーブルに基づいて、再生中の曲のピッチシフトのタイミング及びピッチを自動的に変更する手段、として機能させるためのプログラムである。
【００１９】
更にまた、ビデオゲームが実行可能なゲーム音楽の演奏状態を制御するプログラムであって、コンピュータを、複数の曲の再生を同時に開始する手段、キャラクタの能力値に基づいて作成されたボリュームチェンジテーブルに基づいて、再生中の各曲の音量バランスを自動的に変更する手段、として機能させるためのプログラムである。
【００２０】
また、請求項３又は請求項４に記載のプログラムを記録したコンピュータ読み取り可能な記録媒体である。
【００２１】
更に、ビデオゲームのゲーム音楽の演奏状態を制御するゲーム装置であって、曲の再生を開始する手段と、キャラクタの能力値に基づいて作成されたピッチシフトテーブルに基づいて、再生中の曲のピッチシフトのタイミング及びピッチを自動的に変更する手段と、を備えることを特徴とするゲーム装置である。
【００２２】
更にまた、ビデオゲームのゲーム音楽の演奏状態を制御するゲーム装置であって、複数の曲の再生を同時に開始する手段と、キャラクタの能力値に基づいて作成されたボリュームチェンジテーブルに基づいて、再生中の各曲の音量バランスを自動的に変更する手段と、を備えることを特徴とするゲーム装置である。
【００２３】
【発明の実施の形態】
上述の如く発明したことにより、再生中の曲のピッチ（音程）を、ピッチシフトテーブルに基づき、自動的に変更（ピッチシフト）し、演奏ミスを表現している。
【００２４】
また、本来同じ曲だが上手い方と下手な方の２つの曲を用意し、一方の音量を０、他方を最大として同期再生を開始し、ボリュームチェンジテーブルに基づき、再生途中で自動的に各曲の音量バランスを変更して演奏ミスを表現している。
【００２５】
【実施例】
以下、この発明の実施例を、家庭用のテレビを利用したビデオゲームのゲーム装置上で実行されるプログラムの実施の形態として、図面を参照しながら説明する。
【００２６】
図１〜図６はこの発明の第１実施例を示すものである。図３において、２はテレビ、４はモニタ、６はスピーカ、８はゲーム装置、１０は入力装置、１２は記録媒体である。
【００２７】
前記ゲーム装置８は、本体１４をテレビ２に接続するとともに、この本体１４に入力装置１０を接続し、本体１４に挿入した記録媒体１２からビデオゲーム用プログラムを読み出して、ビデオゲームを実行する。
【００２８】
また、前記ゲーム装置８は、図４に示す如く、ビデオゲーム用プログラムを実行するためのコンピュータとして、本体１４に装置全体の制御を行うＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）ブロック１６を備えている。
【００２９】
このＣＰＵブロック１６は、本体１４内の後述する各部３０〜３６とのデータ転送を主に制御するＳＣＵ（Ｓｙｓｔｅｍ  Ｃｏｎｔｒｏｌ  Ｕｎｉｔ）１８と、中央演算処理装置として高速クロックで作動するＣＰＵ２０と、ゲーム装置８の基本制御動作が記憶されたＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）２２と、ＣＰＵのワークエリアとして働くと共に記録媒体１２に記録されたゲームプログラムを一時的に記憶するＲＡＭ（Ｒａｎｄｏｍ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）２４と、及びこれらを接続するバス２６と、で構成されている。
【００３０】
前記ＣＰＵブロック１６のＳＣＵ１８には、外部バス２８が接続されている。外部バス２８は、コントローラパッド等の入力装置１０からの入力を受信してＣＰＵブロック１６へ入力情報を転送する入力受信部３０と、図示しないサブＣＰＵを備え記録媒体１２に記録されたゲームプログラムを読み取りＣＰＵブロック１６へ転送するＣＤ−ＲＯＭドライブ等の媒体読取部３２と、図示しないフレームバッファを備えＣＰＵブロック１６から転送された情報に従って画像情報を作成する画像処理部３４と、及び図示しないサブＣＰＵとを備え音響を処理する音響処理部３６と、に接続されている。
【００３１】
更に、前記入力受信部３０には、入力装置８が接続されている。前記画像処理部３４は、テレビ２のモニタ４に接続されている。前記音響処理部３６は、スピーカ６に接続されている。なお、前記ゲーム装置８は、外部バス２８にネットワーク接続部３８を接続し、このネットワーク接続部３８により外部のネットワーク４０を介して他のゲーム装置８ａと接続することにより、他のプレイヤの参加も可能となる。
【００３２】
次に、図１及び図２に示すフローチャートを参照して、ゲーム装置８の動作について、ＣＰＵブロック１６のＣＰＵ２０を主体として説明する。
【００３３】
まず、前記記録媒体１２をゲーム装置８に挿入し、ゲーム装置８の図示しない電源スイッチを押下して電源が投入されると、ＣＰＵ２０は記録媒体１２からビデオゲーム用プログラム及びゲームデータを読み出し、ＲＡＭ２４に記憶する。以降、ＣＰＵ２０は、ＲＡＭ２４に記憶されているビデオゲーム用プログラム並びに入力装置１０からの指示内容に基づきテレビ２のモニタ４に所定のゲーム画面を表示させ、ビデオゲームを制御して進行させる。
【００３４】
図１に示すように、制御がスタートすると、まず、ステップ１００（「Ｓ１００」とも記載する）において、本発明の画面表示処理を実行するための初期設定処理が行われる。
【００３５】
この初期設定処理では、ゲームプログラムにおいて、ＲＡＭ２４に一時記憶されている前回データの値等の種々のデータを初期化する。
【００３６】
ここで、データとは、後述するピッチシフトのデータテーブルから求められる値であって、ピッチシフトのデータテーブルとは、どのタイミングでどの程度のピッチシフトをさせるかを示すテーブルである。
【００３７】
次に、ステップ１０２において、テレビ２の垂直帰線周期と一致した、例えば１／６０秒（１６．６ミリ秒）に一度の周期で行われる垂直帰線割込（Ｖｓｙｎｃ）がなされたか否かを判断する。肯定判断のときは、ミス演奏処理のステップ１０４へ進む。否定判断のときは、次のステップ１０６において、入力受信部３０から転送された入力情報に対する入力処理やゲーム効果音を音響処理部３６に合成させるための音響処理等のメイン処理を実行して、ステップ１０８へ進む。
【００３８】
ステップ１０８では、ステップ１０６でゲームを終了させるための所定ボタンが選択押下されたか否かを判断し、否定判断のときはステップ１０２へ戻り、肯定判断のときはプログラムを終了（ステップ１１０）する。
【００３９】
図１に示すステップ１０４のミス演奏処理においては、図２に示す如く、ステップ２００において、ステータス曲が停止しているか否かを判断し、肯定判断のときはステップ２０２に移行し、このステップ２０２において、新たな曲を選択してカウンタをクリア、つまり「０（ゼロ）」とする。
【００４０】
そして、ステップ２０２の後にステップ２０４に移行し、このステップ２０４において、キャラクタの能力値からミス頻度を算出し、ステップ２０６において、ピッチシフトテーブルを作成するとともに、ミス頻度から待ち時間やピッチ変位、シフト時間を算出する。
【００４１】
その後、ステップ２０８において、カウンタに待ち時間を設定するとともに、ステータスをシフト待ちに設定し、曲の再生を開始し、メインルーチンにリターンする。
【００４２】
上述のステップ２００が否定判断のときは、ステップ２１０において、「曲データエンド」、つまり選択された曲のデータ処理が終了したか否かを判断し、肯定判断のときはステップ２１２に移行し、このステップ２１２において、ステータスを曲停止に設定し、ステップ２１４において、曲の停止処理を行い、メインルーチンにリターンする。
【００４３】
また、上述のステップ２１０が否定判断のときは、ステップ２１６において、ステータスがシフト待ちか否かを判断し、肯定判断のときは、ステップ２１８において、カウンタが「０（ゼロ）」であるか否かを判断する。
【００４４】
このステップ２１８における判断が否定判断のときは、ステップ２２０において、カウンタを「１」だけデクリメントし、ステップ２２２において、曲の再生処理を行い、メインルーチンにリターンする。
【００４５】
なお、上述のステップ２１８における判断が肯定判断のときは、ステップ２２４において、カウンタにシフト時間を設定するとともに、ステータスをピッチシフトに設定し、ピッチ変位分だけシフトを開始し、ステップ２２２において、曲の再生処理を行い、メインルーチンにリターンする。
【００４６】
更に、上述のステップ２１６における判断が否定判断のときは、ステップ２２６において、ステータスがピッチシフトであるか否かを判断し、この判断が肯定判断のときは、ステップ２２８において、カウンタが「０（ゼロ）」であるか否かを判断し、ステップ２２８における判断が否定判断のときは、ステップ２３０において、ピッチシフト処理を行い、ステップ２３２において、カウンタを「１」だけデクリメントし、ステップ２２２において、曲の再生処理を行い、メインルーチンにリターンする。
【００４７】
上述のステップ２２６における判断が否定判断のときは、ステップ２２２において、曲の再生処理を行い、メインルーチンにリターンする。
【００４８】
更にまた、上述のステップ２２８における判断が肯定判断のときは、元のピッチに戻すとともに、カウンタに次の待ち時間を設定し、そしてステータスをシフト待ちに設定し、ステップ２２２において、曲の再生処理を行い、メインルーチンにリターンする。
【００４９】
この第１実施例においては、キャラクタが演奏中（再生中）の曲のピッチ（音程：音の高さ）を、ピッチシフトのデータテーブルに基づき、自動的に変更、つまりピッチシフトして演奏ミスを表現することにある。
【００５０】
実際の処理動作について詳述すると、ピッチシフトは、音声データの処理時間を圧縮したり、又は伸張したりすることで実現できる。即ち、メモリに一時記憶された音声データの読み出し速度（即ち、再生速度）を変更することにより実現できる。
【００５１】
具体的には、メモリから速く読み出せば、読み出される音声データの時間軸が圧縮され、ゆっくり読み出せば、時間軸が伸長されることになる。例えば、再生しようとする音声データが、サンプリング周波数４４．１ｋＨｚ，量子化ビット数１６ビット，ステレオの場合では、音声再生のプログラムにおいて、その音声データの処理速度として１秒間には、以下の式
【数１】
2004290501.tif 000003
により、１７６４００バイトのデータを処理する必要がある。
【００５２】
ここで、１秒間に処理するデータ数を２倍にすると再生される音声のピッチが２倍となる一方、時間軸を１／２だけ縮めることとなり再生時間が１／２となる。これによりテンポが２倍となり、サンプリング周波数も２倍となったものとして処理されることとなる。
【００５３】
このサンプリング周波数とは、再生周波数、即ち１秒間に再生処理するデータ数を意味することから、ピッチシフト後の音声データを更に加工する等のデジタル信号処理を施す場合は、サンプリング周波数を元に戻す処理をする方が好ましい。
【００５４】
具体的には、サンプリング周波数が上がった場合は、密集した音声データを例えば２サンプル毎に１サンプルを残すようにして間引くことによりサンプリング周波数を戻すことができ、サンプリング周波数が下がった場合は、広がったサンプル間にふさわしいデータを挿入する補間処理をすることでサンプリング周波数を元に戻すことができる。
【００５５】
そして、この補間処理においては、一般にデジタルフィルタを用いてなされることが知られている。尚、本実施例ではピッチシフトした音声を単に再生できれば良いので、サンプリング周波数の調整を考慮する必要が無い。
【００５６】
ピッチシフトする場合には、テンポ変化により聞きづらくならないように、後で本来の時間に戻すことが必要となる。ここで、テンポとは、１分間に演奏される４分音符の数であり、例えばテンポ１２０といった場合は１分間に１２０個の４分音符が演奏されることを意味している。
【００５７】
そして、本来の時間に戻す処理として、ピッチを上げる場合には、例えば入力音声データ中の圧縮対象部分以降のデータを一部先読みして、圧縮対象部分の再生以降は、その先読みしたデータを本来の戻り時間となるまで連結再生し、本来の戻り時間となったら通常再生に復帰するという方法が考えられる。この場合、先読みしたデータは重複して再生されることになる。
【００５８】
また、ピッチを下げる場合には、例えば入力側音声データ中の伸張対象部分を伸張して再生後に通常再生に復帰し、伸張分の入力音声データをカットするという方法が考えられる。そして、この場合、そのままでは双方とも本来の時間再生に復帰する際に、音声波形の不連続によるノイズが発生してしまうので、何らかの対策が必要となってくる。しかしながら、この発明の実施例においては、ソロ演奏の演奏ミスを表現したいので、ミスの後で本来の時間に戻す必要はなく、上記したデータの重複やカットをせずに順番どおりにデータを処理していくので、ノイズの問題は起こらない。また、演奏ミスを表現するには、サンプリング周波数４４．１ｋＨｚの場合でもプラス・マイナス５ｋＨｚ程度変化すれば十分であり、実際の処理時間の圧縮伸張で大きな影響が生ずる事はない。
【００５９】
ピッチシフトの実際の処理においては、１秒間に再生処理するデータ数を増減すれば良いので、例えば通常の音声再生で１秒間に１７６４００バイトのデータを読み込む（再生する）必要がある場合は、これを増減すれば良いことになる。
【００６０】
ここで、前記ゲーム装置８の本体１４と接続したテレビ２のモニタ４の垂直帰線周期と一致し、ゲームの画面表示を制御する垂直帰線割込（Ｖｓｙｎｃ）は、通常、ゲームプログラムにおいて１／６０秒（１６ミリ秒）に一度の周期で呼び出されるが、上記の例でいうと１Ｖｓｙｎｃ（１６ミリ秒）で約２８２２バイトのデータを読み込む（再生する）必要があることになる。
【００６１】
実際には、記録媒体等に予め記録された音声データを先頭から順次読み込みながら３２ＫＸ４バイト程度のストリームバッファ（一般にダブルバッファ）に一時記憶していき、その一方では一時記憶されている音声データを再生周波数に基づいて順次音声処理部に転送してスピーカから再生するという処理がなされる。この際、１秒分のデータを一度に読み込む必要はなく、再生速度が合っていれば良いことになる。
【００６２】
この第１実施例において、ピッチがプラス・マイナス１の変化で再生周波数がプラス・マイナス１０００Ｈｚだけ変化すると取り決めた場合、１秒間に増減するデータ数は、１６ビット，ステレオの場合で、式
【数２】
2004290501.tif 000004
によってプラス・マイナス４０００バイトとなり、１６ミリ秒を１ｔｉｃｋとする（以降、同じ）と、１ｔｉｃｋで約プラス・マイナス６４バイトの増減となる。また、１６ミリ秒を１ｔｉｃｋとしたので、１秒間に約６２ｔｉｃｋとなる。
【００６３】
内部処理について説明する。
【００６４】
この発明の第１実施例における第１の内部処理としては、どのタイミングでどの程度のピッチシフトをさせるかを示すピッチシフトのデータテーブルを設ける。
【００６５】
このとき、ピッチシフトのデータ形式は、現在のピッチをセンター（０）とした−（マイナス）５から＋（プラス）５までの数字（即ち、ピッチ変位）と、ピッチシフトを開始して復帰までの時間（即ち、シフト時間）、及びそのピッチシフトまでの待ち時間で構成される。
【００６６】
ピッチシフトデータのデータ構造とその一例を図５に示す。
【００６７】
図５に示す如く、最初の２バイト（上位ワード）で、次のピッチシフト処理までの待ち時間（単位はｔｉｃｋ）を表す。ここで、２バイトは０から６５５３５までの数値を表現できるが、１ｔｉｃｋは０．０１６秒とすると、式
【数３】
2004290501.tif 000005
によって、約１７分となり、２バイトで最大約１７分間の待ち時間を表現することができる。即ち、最大約１７分間の曲に対してこの発明の第１実施例のピッチシフト処理が可能であり、この点、２バイトで十分と考えられる。
【００６８】
ここで、１０秒後にピッチシフトが起こるとすると、１秒間に約６２ｔｉｃｋ、即ち１０秒間に約６２０ｔｉｃｋ進むこととなり、１６進数表記で２６ＣＨとなる（Ｈは１６進数表記であることを示す。以下同じ）。
【００６９】
次の２バイト（下位ワード）の上位バイトで、現在のピッチをセンタ（０）とした−５から＋５までの数字（１６進数表記でＦＢＨから０５Ｈ）、即ちピッチシフト量（ピッチ変位）を示す。この値が＋１の時、上記の例でいえば上述したとおり、０．０１６秒で約６４バイト（４０Ｈ）多く処理することになる。即ち、０．０１６秒毎に本来処理すべき２８２２バイトに６４バイトを足したバイト数２８２２＋６４＝２８８６バイトを処理することとなる。
【００７０】
また、この値が−１の時は、０．０１６秒毎に２８２２−６４＝２７５８バイトを処理することとなる。同様に、この値が＋５の時は、１秒間で再生周波数が５０００Ｈｚだけ増加することとなり、０．０１６秒に６４Ｘ５＝３２０バイト（１４０Ｈ）だけ多く処理することになる。、即ち、本来処理すべき２８２２バイトに３２０バイトを足したバイト数２８２２＋３２０＝３１４２バイトを０．０１６秒毎に処理することとなる。尚、ピッチ変位が０の場合はミスは表現されないことになる。
【００７１】
また、下位ワードの下位バイトで、ピッチシフト処理を何ｔｉｃｋ繰り返すか、即ち、ピッチシフトする時間を示す。１ｔｉｃｋは０．０１６秒なので、１秒間に約６２ｔｉｃｋ（３ＥＨ）となる。本実施例では１秒間でピッチがプラス・マイナス１の変化に対し再生周波数プラス・マイナス１０００Ｈｚの変化すると取り決めたので、ここでは６２ｔｉｃｋ（３ＥＨ）用いるが、演奏ミスとしてピッチシフトを明確に表現するために１２４ｔｉｃｋ（２秒）程度としたり、一定値範囲内での乱数により求めても良い。
【００７２】
ピッチシフト処理後は、元のピッチに徐々に戻るように処理しても良いが、この発明の第１実施例では、直ぐに元の再生速度に戻る、即ち、０．０１６秒毎に処理する本来のバイト数２８２２バイトに戻るものとする。
【００７３】
このようなピッチシフトデータが集まって一時記憶されたものが、図６のようなピッチシフトのデータテーブルである。
【００７４】
図６は、曲再生開始から約１０秒（２６ＣＨｔｉｃｋ）後に約１秒（３ＥＨｔｉｃｋ）間だけ＋５のピッチシフトを実行し、その約３０秒（７４４Ｈｔｉｃｋ）後に約１秒（３ＥＨｔｉｃｋ）間だけ−３のピッチシフトを実行する・・・という内容である。
【００７５】
また、第２の内部処理は、キャラクタの能力値に基づいてデータテーブル内のデータ列を予め演奏直前に計算して一時記憶しておく。
【００７６】
ピッチシフトのタイミング（時間）や、どの程度深く（程度）又どの程度の回数（頻度）とするかは、演奏キャラクタの能力値（技術力、スキル等）に基づいて演奏毎に変化するようにし、データテーブルのデータを曲演奏前に毎回計算し更新する。
【００７７】
ピッチシフトを起こす頻度（ミス頻度：ＭＮ）については、例えば、キャラクタの能力値を技術力の程度として考えて０から１２７までの値を取りうるとすると、先ずはその値を２５で割って商を０から５までの値（演奏レベル：ＰＬ）とし、最大演奏レベル５からその商ＰＬを引くとミスの回数（ミス頻度：ＭＮ）として０から５までの値となる。
【００７８】
ミスの程度であるピッチシフト量（ピッチ変位：ＳＬ）については、例えば、０からミス頻度ＭＮまでの範囲で乱数ＲＮを発生させてメモリに一時記憶し、前回得られた乱数ＲＰ（初期値は０とする）と比較して
ＲＮ≧ＲＰ
ならば＋ＲＮをＳＬとし（増加）、
ＲＮ＜ＲＰ
ならば−ＲＮをＳＬ（減少）とする。このようにすると、ピッチ変位ＳＬは−４から＋５までの範囲となる。これをミス頻度ＭＮだけ繰り返し求める。これによりピッチシフトデータのピッチ変位が算出される。
【００７９】
尚、この発明の第１実施例では、ピッチシフトデータのシフト時間は、上述の通り６２ｔｉｃｋ（３ＥＨ）で固定する。
【００８０】
また、ピッチシフトを起こす時間ＰＴについては、再生する曲の長さは予め分かっているので、例えば３分の曲の場合は全体で、式
【数４】
2004290501.tif 000006
により、１１２５０ｔｉｃｋであるから、０から９９までの範囲で乱数を発生させて、
【数５】
2004290501.tif 000007
とすると、１から１１２５０までの任意の値が得られ、得られた値をピッチシフトを起こす時間ＰＴとすればよい。
【００８１】
例えば、乱数で５と出れば、式
【数６】
2004290501.tif 000008
によって６７５（２Ａ３Ｈ）ｔｉｃｋであり、式
【数７】
2004290501.tif 000009
によって約１０秒後にピッチシフトを起こすことになる。
【００８２】
これをミス頻度ＭＮだけ繰り返し求める。求めたピッチシフトを起こす時間ＰＴは曲先頭からの絶対時間であるので、それ以前にピッチシフトデータがある場合は、その待ち時間とシフト時間の和を引いて前のデータからの相対時間を求めることにより、目的のピッチシフトデータの待ち時間が算出される。ここで、仮に曲全体で１１２５０ｔｉｃｋであったとしても、上述したように「本来の時間に戻す」という問題があるので、曲の再生途中で確実に目的の回数だけミスを表現するために、ピッチシフトを起こす時間ＰＴの算出で用いる値を１１２５０よりも若干少なめに設定しても、曲の終了と共にピッチシフトの処理を終了するので、大きな問題とはならない。また、求めたピッチシフトを起こす時間ＰＴが、丁度他のピッチシフトデータのシフト時間と重なる場合は、再度時間ＰＴを求める。
【００８３】
更に、これら算出に用いる演奏キャラクタの能力値（技術力、スキル等）は、プレイヤの操作により楽譜を集めるという動作で練習すると上昇し、予め設定されている楽譜の難易度やプレイヤの練習（操作）時間等から能力値を計算する。
【００８４】
この発明の第１実施例では、ここでいう能力値を技術力として考える。即ち、楽譜の難易度は０から５までの数値とし、練習時間は便宜的に練習回数として考え、楽譜の難易度別に各々の練習回数を掛けてこれらの総和をとり、０から１２７までの値にしたものを技術力とする。実際の設定において、難易度の高い楽譜は、技術力が一定値を超えないと練習できないようにするとか、所定のイベントが発生したときにのみ練習できるようにする等の制限を設けることができる。
【００８５】
尚、ここでいう楽譜とは、再生したい曲の楽譜とは異なる曲（例えばジャンルやアレンジ、フレーズの一部が似た曲等）の楽譜であっても良い。また、ここでいう練習とは、演奏ミスを含めたその楽譜の曲の演奏（即ち再生）であっても良いが、単にゲーム中でプレイヤが所定の操作をする（例えばその楽譜を選択する）程度の取り決めであっても良い。
【００８６】
第３の内部処理は、音声データの再生（演奏開始）と同期して先頭から順にデータテーブル内のデータを読んで行く。
【００８７】
ピッチシフトのデータテーブルは、再生するその曲（音声データ）に対応したピッチシフト用の再生チャンネルと考える。
【００８８】
データを２バイト読んで処理したら次の２バイトを読んで処理し（即ち２バイトずつ読んでいき）、曲再生終了までこれを繰り返す。
【００８９】
第４の内部処理は、読んだデータに基づいて実際に発音中の音に対してピッチシフトを実行する。
【００９０】
実際には、先ず最初のピッチシフトデータの上位ワードの待ち時間を読み、これを残り時間（計時手段）としてメモリに一時記憶し、１ｔｉｃｋ経過する度に残り時間を１デクリメントし、０になったら下位ワードのピッチ変位及びシフト時間を読み、ピッチ変位分だけ音声データの再生速度を変化させる処理（ピッチシフト）を開始すると共に、シフト時間を残り時間としてメモリに一時記憶し、１ｔｉｃｋ経過する度に残り時間を１デクリメントすると共にピッチシフト後の再生速度で継続し、残り時間が０になったら元の再生速度に戻してピッチシフトを終了すると共に、次のピッチシフトデータの上位ワードの待ち時間を読み、曲再生終了までこれを繰り返す。
【００９１】
さすれば、ビデオゲームの実行中にピッチシフトのデータテーブルに基づいてピッチシフトのタイミング及びピッチが自動的に変更され、前記ミス演奏処理における演奏ミスが表現されるので、記録容量を増加させることなく、ビデオゲーム中でのキャラクタによる演奏の上手下手を表現することができる。
【００９２】
図７〜図１１はこの発明の第２実施例を示すものである。この第２実施例において、上述第１実施例のものと同一機能を果たす箇所には、同一符号を付して説明する。
【００９３】
この第２実施例の特徴とするところは、上述した第１実施例におけるピッチシフトのデータテーブルの代わりに、ボリュームチェンジテーブルを使用した点にある。
【００９４】
図７及び図８に示すフローチャートを参照して、ゲーム装置の動作について、ＣＰＵブロックのＣＰＵを主体として説明する。
【００９５】
まず、上述第１実施例と同様に、記録媒体をゲーム装置に挿入し、ゲーム装置の電源スイッチを押下して電源が投入されると、ＣＰＵは記録媒体からビデオゲーム用プログラム及びゲームデータを読み出し、ＲＡＭに記憶する。以降、ＣＰＵは、ＲＡＭに記憶されているビデオゲーム用プログラム並びに入力装置からの指示内容に基づきテレビのモニタに所定のゲーム画面を表示させ、ビデオゲームを制御して進行させる。
【００９６】
この第２実施例において、制御がスタートした際には、上述した第１実施例のものと同様に、本発明の画面表示処理を実行するための初期設定処理が行われるため、説明は省略する。
【００９７】
上述した第１実施例における図１に示すステップ１０４の後のミス演奏処理においては、図７に示す如く、ステップ３００において、ステータス曲が停止しているか否かを判断し、肯定判断のときはステップ３０２に移行し、このステップ３０２において、新たな曲を選択してカウンタをクリア、つまり「０（ゼロ）」とする。
【００９８】
そして、ステップ３０２の後にステップ３０４に移行し、このステップ３０４において、キャラクタの能力値からミス頻度を算出し、ステップ３０６において、ボリュームチェンジテーブルを作成するとともに、ミス頻度から上手な曲の再生時間や下手な曲の再生時間を算出する。
【００９９】
その後、ステップ３０８において、カウンタに上手な曲の再生時間を設定するとともに、ステータスを上手な曲に設定し、曲の再生を開始し、メインルーチンにリターンする。
【０１００】
上述のステップ３００が否定判断のときは、ステップ３１０において、「曲データエンド」、つまり選択された曲のデータ処理が終了したか否かを判断し、肯定判断のときはステップ３１２に移行し、このステップ３１２において、ステータスを曲停止に設定し、ステップ３１４において、曲の停止処理を行い、メインルーチンにリターンする。
【０１０１】
また、上述のステップ３１０が否定判断のときは、ステップ３１６において、ステータスが上手な曲か否かを判断し、肯定判断のときは、ステップ３１８において、カウンタが「０（ゼロ）」であるか否かを判断する。
【０１０２】
このステップ３１８における判断が否定判断のときは、ステップ３２０において、フェード処理を行い、ステップ３２２において、カウンタを「１」だけデクリメントし、ステップ３２４において、曲の再生処理を行い、メインルーチンにリターンする。
【０１０３】
なお、上述のステップ２１８における判断が肯定判断のときは、ステップ３２６において、カウンタに下手な曲の再生時間を設定するとともに、ステータスを下手な曲に設定し、フェード処理を開始し、ステップ３２４において、曲の再生処理を行い、メインルーチンにリターンする。
【０１０４】
更に、上述のステップ３１６における判断が否定判断のときは、ステップ３２８において、ステータスが下手な曲であるか否かを判断し、この判断が肯定判断のときは、ステップ３３０において、カウンタが「０（ゼロ）」であるか否かを判断し、ステップ３３０における判断が否定判断のときは、ステップ３３２において、フェード処理を行い、ステップ３３４において、カウンタを「１」だけデクリメントし、ステップ３２４において、曲の再生処理を行い、メインルーチンにリターンする。
【０１０５】
上述のステップ３２８における判断が否定判断のときは、ステップ３２４において、曲の再生処理を行い、メインルーチンにリターンする。
【０１０６】
更にまた、上述のステップ３３０における判断が肯定判断のときは、カウンタに次の上手な曲の再生時間を設定するとともに、ステータスを上手に曲に設定し、フェード処理を開始し、ステップ３２４において、曲の再生処理を行い、メインルーチンにリターンする。
【０１０７】
次に、図８に沿って、図７中に記載のフェード処理について説明する。
【０１０８】
フェード処理に移行する際には、音圧レベルを下げて消音する方の曲と、音圧レベルを上げて発音する方の曲とを予め特定し、一時記憶しておくとともに、フェードカウンタを設け、例えば１０（ｔｉｃｋ）を設定する。なお、この場合、１６０ｍｓｅｃでフェード終了とする。
【０１０９】
そして、フェード処理に移行した際には、ステップ４００において、フェードカウンタが「０（ゼロ）」であるか否かを判断し、この判断が否定判断のときは、ステップ４０２において、音圧レベルを下げて消音する方の曲をフェードアウトし、その後、ステップ４０４において、音圧レベルを上げて発音する方の曲をフェードインし、図７中のルーチンにリターンするとともに、判断が肯定判断のときは、図７中のルーチンにリターンする。
【０１１０】
この第２実施例においては、本来同じ曲だが上手い方（一切ミスなしのもの）と下手な方（ミスばかりのもの）の２つの曲を用意し、一方の音量を０、他方を最大として同期再生を開始し、ボリュームチェンジテーブルに基づき、再生途中で自動的に各曲の音量バランスを変更して演奏ミスを表現することにある。
【０１１１】
この第２実施例における第１の内部処理は、本来同じ曲だが、上手い方（一切ミスなしのもの）の曲Ａと下手な方（ミスばかりのもの）の曲Ｂの２つの曲を用意する。
【０１１２】
この第２実施例では、ソロ演奏を想定しているためその他の楽器（音色）を同時演奏（合奏）しない、即ち、上手い方の曲Ａと下手な方の曲Ｂの２曲を１組として他の曲は用意していないが、複数の異なる音色で同時再生可能なように他に複数組用意しても良い。
【０１１３】
また、同一曲で複数パート（チャンネル）を同時再生可能な環境下（ＭＩＤＩを用いる場合等）では、別な曲として用意するまでもなく、上手な方と下手な方の２つのパートを１組として再生しても良い。更に、この場合も複数の異なる音色で同時再生可能なように複数組みで構成されるようにしても良い。
【０１１４】
第２の内部処理は、どのタイミングでボリュームチェンジするかを示すボリュームチェンジのデータテーブルを設ける。
【０１１５】
ボリュームチェンジデータのデータ形式は、上手な方の曲Ａの再生時間と下手な方の曲Ｂの再生時間で構成される。
【０１１６】
ボリュームチェンジデータのデータ構造とその一例を図９に示す。
【０１１７】
図９に示す如く、最初の２バイト（上位ワード）で上手な方の曲Ａの再生時間を表し、次の２バイト（下位ワード）で下手な方の曲Ｂの再生時間を表す。単位は共に、上述した第１の実施形態でいうｔｉｃｋと同一である。
【０１１８】
上記の例では約１０秒間だけ上手な方の曲Ａを再生し、その後約３秒間は下手な方の曲Ｂを再生する。
【０１１９】
第３の内部処理は、キャラクタの能力値に基づいてテーブル内のデータ列を予め演奏直前に計算して一時記憶しておく。
【０１２０】
ボリュームチェンジのタイミング（ミス演奏の開始時間：ＶＴ）とチェンジ後の再生時間（ミス演奏時間：ＶＩ）、どの程度の回数（ミス頻度）とするかは、演奏キャラクタの能力値（技術力、スキル等）に基づいて演奏毎に変化するようにし、テーブルデータを曲演奏前に毎回計算し更新する。
【０１２１】
ボリュームチェンジを起こす上記ミス頻度については、例えば、キャラクタの能力値を技術力の程度として考えて０から１２７までの値を取りうるとすると、先ずはその値を２５で割って商を０から５までの値（演奏レベル：ＰＬ）とし、最大演奏レベル５からその商ＰＬを引くとミスの回数（ミス頻度：ＭＮ）として０から５までの値となる。
【０１２２】
また、ミス演奏時間ＶＩは求めたミス頻度ＭＮを使って求める。１回のミス演奏で少なくとも３秒間は継続するとした場合、ミス頻度ＭＮＸ３とすれば０から１５秒の値となる。例えば３秒で約１８７（ＢＢＨ）ｔｉｃｋとなる。また、このミス演奏時間ＶＩがボリュームチェンジデータの下手な方の曲の再生時間となる。
【０１２３】
そして、ボリュームチェンジを起こす時間即ち、ミス演奏の開始時間ＶＴについては、再生する曲の長さは予め分かっているので、例えば３分の曲の場合は全体で、式
【数８】
2004290501.tif 000010
によって１１２５０ｔｉｃｋであるから、０から９９までの範囲で乱数を発生させて、
【数９】
2004290501.tif 000011
とすると、１から１１２５０までの任意の値が得られ、得られた値をボリュームチェンジを起こす時間ＰＴとすればよい。例えば乱数で５と出れば、式
【数１０】
2004290501.tif 000012
によって６７５（２Ａ３Ｈ）ｔｉｃｋであり、式
【数１１】
2004290501.tif 000013
によって約１０秒後にボリュームチェンジを起こすことになる。
【０１２４】
これをミス頻度ＭＮだけ繰り返し求める。求めたミス演奏の開始時間ＶＴは曲先頭からの絶対時間であるので、それ以前にボリュームチェンジデータがある場合は、上手な方の曲Ａの再生時間及び下手な方の曲Ｂの再生時間の和を引いて前のデータからの相対時間を求めることにより、目的のボリュームチェンジデータの上手な方の曲Ａの再生時間となる。
【０１２５】
また、求めたミス演奏の開始時間ＶＴが、丁度他のボリュームチェンジデータの下手な方の曲Ｂの再生時間と重なる場合は、再度ミス演奏の開始時間ＶＴを求める。
【０１２６】
更に、これら算出に用いる演奏キャラクタの能力値（技術力、スキル等）は、上述した第１の実施形態の場合と同じとする。
【０１２７】
第４の内部処理は、音声データの再生（演奏開始）と同期して先頭から順にテーブル内のデータを読んで行く。
【０１２８】
即ち、ボリュームチェンジテーブルは、再生するその曲（音声データ）に対応したボリュームチェンジ用の再生チャンネルと考える。データは２バイト読んで処理したら次の２バイトを読んで処理し（即ち２バイトずつ読んでいき）、曲再生終了までこれを繰り返す。
【０１２９】
第５の内部処理は、読んだデータに基づいて実際に発音中の音に対してボリュームチェンジを実行する。
【０１３０】
先ずは、上手な方の曲Ａの音量を最大値１２７、下手な方の曲Ｂの音量を最小値０にして同期演奏を開始し、同時にボリュームチェンジデータの上位ワードの最初の上手な方の曲Ａの再生時間を読み込み、読んだｔｉｃｋ数分経過するまで待つ。
【０１３１】
時間経過後は、下位ワードの下手な方の曲Ｂの再生時間を読み込み、上手な方の曲Ａの音量を最小値０、下手な方の曲Ｂの音量を最大値１２７に変更する。そして、読み込んだ再生時間のｔｉｃｋ数分だけ継続する。時間経過後は、次のボリュームチェンジデータの上位ワードの上手な方の曲の再生時間を読み込み、同時に上手な方の曲Ａの音量を最大値１２７、下手な方の曲Ｂの音量を最小値０にし、このような処理を曲再生終了まで繰り返す。
【０１３２】
ボリュームチェンジを実現するにあたって、単に音量を変更する技術自体は公知であるので言及しない。
【０１３３】
この第２実施例では、曲全体を音声データ（例えばＡＩＦＦやＷＡＶ等の周知のもの）としてその音量を変更する例で示したが、例えばＭＩＤＩを用いで楽器等の音色データを順次再生する曲再生の場合は、ＭＩＤＩ規格のチャンネルボイスメッセージのコントロールチェンジのパートボリューム（Ｂｎ０７ｘｘＨ：ｎはＭＩＤＩチャンネルで０から１５、ｘｘは０から１２７までのデータバイト）を使用すれば比較的容易に実現できる。この場合、チャンネル０をオンとするにはＢ００７７ＦＨ、チャンネル０をオフとするにはＢ００７００Ｈを発行し処理すれば良い。
【０１３４】
第６の内部処理は、一方の音量を０（オフ）他方を最大１２７（オン）として同期再生を開始し、再生途中で各曲のオン／オフを切り換えて演奏ミスを表現する。
【０１３５】
図１０の例では、同時再生を開始して約１０秒（２６ＣＨｔｉｃｋ）後に、上手な方の曲Ａの音量をオフ（０）と同時に下手な方の曲Ｂの音量をオン（１２７）とする。これを約３（ＢＢＨ）秒間続けた後、上手な方の曲Ａの音量をオン（１２７）と同時に下手な方の曲Ｂの音量をオフ（０）とする。その約３０秒（７４４Ｈｔｉｃｋ）後には、上手な方の曲Ａの音量をオフ（０）と同時に下手な方の曲Ｂの音量をオン（１２７）とする。これを約１２（２ＥＣＨ）秒間続ける。
【０１３６】
これにより、図１１に示す如く、あるところでは上手な方の曲Ａが聞こえ、別なところでは下手な方の曲Ｂが聞こえる、即ち、１本の演奏として成立して聞こえるようになるが、ボリュームチェンジのタイミングについては、例えばある小節の先頭ですればより自然に聞こえると考えられる。その曲のテンポと拍子が分かれば小節の時間がわかる。例えばテンポ１２０の場合は１分間に１２０個の四分音符を処理する速さなので、４／４拍子の場合の１小節あたりの時間は、式
【数１２】
2004290501.tif 000014
によって１２秒と求まる。これより１小節あたりのｔｉｃｋが求まる。その他、再生したい曲の中に休符が存在すればその時間的位置を調べておき、そのタイミングで切り換えるとより自然と考えられる。また、切り換え時は上手下手な双方の曲のボリュームをクロスフェードすれば、多少の同期のズレがあったとしても適度に曖昧にすることができる。
【０１３７】
さすれば、ビデオゲームの実行中にボリュームチェンジテーブルに基づいて曲の音量バランスが自動的に変更され、ミス演奏処理における演奏ミスが表現されるので、記録容量を増加させることなく、ビデオゲーム中でのキャラクタによる演奏の上手下手を表現することができる。
【０１３８】
なお、この発明は上述第１及び第２実施例に限定されるものではなく、種々の応用改変が可能である。
【０１３９】
例えば、第１実施例においては、ピッチシフトデータの待ち時間は、曲先頭からの絶対時間ではなく直前のデータとの相対時間を求めているが、絶対時間のまま処理することも可能である。
【０１４０】
即ち、図６を図１２とした場合である。
【０１４１】
この場合、図１２に示す如く、２番目のデータの待ち時間は０７４４Ｈではなく，１番目の待ち時間とシフト時間を更に足した値２６ＣＨ＋３ＥＨ＋０７４４Ｈ＝９ＥＥＨとなる。
【０１４２】
この場合、１ｔｉｃｋ経過する度に１インクリメントする変数を経過時間（計時手段１）としてメモリに用意し、１インクリメントする度に経過時間とテーブル上のピッチシフトデータ先頭の待ち時間と比較していき、一致した場合はそのピッチシフトデータのピッチ変位及びシフト時間を読み、ピッチ変位分だけピッチシフトを開始すると共に読んだシフト時間を残り時間（計時手段２）としてメモリに一時記憶し、１ｔｉｃｋ経過する度に残り時間を１デクリメントすると共にこの間も経過時間を１インクリメントし、残り時間が０になったらピッチシフトを終了し、経過時間を１インクリメントする度に経過時間とテーブル上のピッチシフトデータ先頭の待ち時間（未だ処理していないもの）と比較していき、曲再生終了までこれを繰り返す。
【０１４３】
また、第１実施例においては、曲再生直前にテーブル内のデータを作成する場合で説明したが、予め作成されたデータを用いて曲再生直前にいずれかのデータを選択する構造であっても良い。
【０１４４】
この場合、図５のようなデータ構造のピッチシフトデータを、実際に曲再生で使用するものよりも多い数、例えば１０パターン程度を予め作成してプログラムで用意しておき、再生直前にキャラクタの能力値に応じて０から５つ以内（ミス頻度数分）で選択する。いずれかを選択するかは、テーブル内ピッチシフトデータ数、即ち１０であれば０から９（即ち１０−１）までの範囲で乱数を発生させてミス頻度数分繰り返す。そして得られた値をデータ先頭からのオフセットとして昇順にした後、テーブル上で対応するその位置のピッチシフトデータをメモリに一時記憶して曲再生を開始する。
【０１４５】
ここで、予め作成されたデータを用いる利点として、単に曲再生前の処理落ちの回避という点だけでなく、任意の位置でピッチシフトするとした場合の明らかに不自然な音程変化の防止や、曲の盛り上がりいわゆるサビの部分でミスを表現することができる等が考えられる。
【０１４６】
また、単に音声データの再生途中で再生周波数を変更する技術自体は公知であるので、実際にピッチシフト処理をする部分のプログラムを組む場合、再生途中で再生周波数を変更するためのソフトウェア及びハードウェア環境が予め用意されていれば、ピッチ変更後の再生周波数を直接指定し、シフト時間経過後に元の再生周波数に戻すという比較的単純な命令で組むことができる。
【０１４７】
また、ピッチシフトを実現するにあたって、本実施例では曲全体を音声データ（例えばＡＩＦＦやＷＡＶ等の周知のもの）としてその再生周波数を変更する例で示したが、例えばＭＩＤＩを用いで楽器等の音色データを順次再生する曲再生の場合は、ＭＩＤＩ規格のチャンネルボイスメッセージのピッチベンドチェンジ（ＥｎｘｘｙｙＨ：ｎはＭＩＤＩチャンネルで０から１５、ｘｘとｙｙは０から１２７までのデータ）を使用すれば比較的容易に実現できる。ＭＩＤＩデータは、ある音色データを、いつ、どの程度のピッチで再生するかといった命令が列記されたプログラムであり、ＭＩＤＩデータ中のデルタタイムの計時によってその曲の時間制御を行うことから、曲の再生時間と各音色データの再生速度とは無関係であるといえる。ここで、例えばある音色波形データが減衰しないでループするものであれば、ＭＩＤＩデータ中のノートオン（発音）処理後、その音色データの終端まで再生したら先頭に戻り、次のノートオフ（消音）を処理するまで再生を繰り返すこととなる。このため、仮にＭＩＤＩによる曲再生途中でピッチを変更したとしても、本実施例のように上述した本来の時間に戻すという問題は起こらないので、複数の音色による合奏でも特別な処理を必要とせずに特定の音色のみを容易にピッチシフトすることができる。
【０１４８】
更に、第２実施例において、ボリュームチェンジデータの上位ワードの上手な曲の再生時間は、曲先頭からの絶対時間ではなく直前のデータとの相対時間を求めているが、下手な曲への切換時間として絶対時間のまま処理することも可能である。
【０１４９】
即ち、図１０を図１３とした場合である。
【０１５０】
この場合、図１３に示す如く、２番目のボリュームチェンジデータの下手な曲への切換時間はは０７４４Ｈではなく，１番目の下手への切換時間と下手な曲再生時間を更に足した値は、式
【数１３】
2004290501.tif 000015
によってＡ６ＢＨとなる。
【０１５１】
この場合、１ｔｉｃｋ経過する度に１インクリメントする変数を経過時間（計時手段１）としてメモリに用意し、１インクリメントする度に経過時間とテーブル上のボリュームチェンジデータ先頭（上位ワード）の下手な曲への切換時間と比較していき、一致した場合は下位ワードの下手な曲の再生時間を読み、上手な曲の音量を０で下手な曲の音量を最大に切り換えると同時に読んだ再生時間を残り時間（計時手段２）としてメモリに一時記憶し、１ｔｉｃｋ経過する度に残り時間を１デクリメントすると共にこの間も経過時間を１インクリメントし、残り時間が０になったら上手な曲の音量を最大で下手な曲の音量を０に切り換えて、経過時間を１インクリメントする度に経過時間とテーブル上のボリュームチェンジデータ先頭の下手な曲への切換時間（未だ処理していないもの）と比較していき、曲再生終了までこれを繰り返す。
【０１５２】
尚、下位ワードの下手な曲再生時間についても、上手な曲への切換時間として曲の先頭からの絶対時間で表現することも可能である。
【０１５３】
更にまた、第２実施例においては、曲再生直前にテーブル内のデータを作成する場合で説明したが、予め作成されたデータを用いて曲再生直前にいずれかのデータを選択する構造であっても良い。
【０１５４】
この場合、図１３のようなデータ構造のボリュームチェンジデータを、実際に曲再生で使用するものよりも多い数、例えば１０パターン程度予め作成しておき、再生直前にキャラクタの能力値に応じて０から５つ以内（ミス頻度数分）で選択する。いずれかを選択するかは、テーブル内ボリュームチェンジデータ数、即ち１０であれば０から９（即ち１０−１）までの範囲で乱数を発生させミス頻度数分繰り返す。そして得られた値をデータ先頭からのオフセットとして昇順にした後、テーブル上で対応するその位置のボリュームチェンジデータをメモリに一時記憶して曲再生を開始する。
【０１５５】
予め作成されたデータを用いる利点として、単に曲再生前の処理落ちの回避という点だけでなく、任意の位置でボリュームチェンジするとした場合の音の不連続によるノイズを回避できたり、曲の盛り上がりいわゆるサビの部分でミスを表現することができる等が考えられる。
【０１５６】
また、演奏ミスとは単に音程を間違えただけでなく発音タイミングを間違えた場合、即ち時間的なズレがある場合も含まれるが、このズレが表現されている最中に丁度下手な曲から上手な曲へ切り換えるタイミングの場合、データの不連続によるノイズが発生する場合がある。これを回避するには、現在発音中の曲を一度に最小値にするのではなく所定時間毎に徐々に最小値に減衰（フェードアウト）させ、一方では現在消音中の曲を一度に最大値にするのではなく所定時間毎に徐々に最大値に増加（フェードイン）させるクロスフェード処理をすることが好ましい。音量を徐々に変化させるためには例えば約１６０ミリ秒程度のフェード時間を定め、１０ｔｉｃｋ経過する度に音量を増加又は減少させる処理をする。尚、双方の曲に与える音量は音圧レベルの変化と考えるとより自然な変化を表現できる。音圧レベルは
【数１４】
2004290501.tif 000016
で表されることが知られている。
【０１５７】
実際には、音量最大値（１２７で固定）をＰ０、音量変数（０から１２７で線形に変化）をＰとして上記式に代入すると、Ｐが０付近の時は音圧レベルの変化率が大きく、最大値付近の時は音圧レベルの変化率が小さいような特性が得られる。これをテーブルに持ち、Ｐをフェード開始からのｔｉｃｋ数（即ちインデックス）として１０ｔｉｃｋ（フェード間隔）経過する度にこのテーブルからＳＰＬを求めて、得られたＳＰＬを音響処理部に与えることでより自然な音量変化を表現できる。ここで、フェードインはＰが０から１２７に向けて変化し、フェードアウトはＰが１２７から０に向けて変化する。
【０１５８】
尚、上記実施例ではフェード時間を約１６０ミリ秒程度と定めたが、これを変更する場合はフェード間隔が変更される（図１４参照）。
【０１５９】
また、追記すると、上述した第１実施例においては、ピッチがプラス・マイナス１の変化で再生周波数がプラス・マイナス１０００Ｈｚだけ変化するとし、ピッチシフトデータのシフト時間を６２ｔｉｃｋ（３ＥＨ）で固定としたが、これに限定されるものではない。
【０１６０】
更に、第２実施例におけるボリュームチェンジデータのデータ構造で、上手な曲と下手な曲の再生時間としたが、例えば、各曲に対応したオンオフフラグを設け、発音したい曲に対応したフラグは１（オン）、発音しない曲に対応したフラグは０（オフ）とし、第１の実施形態でいう待ち時間とこれらのオンオフフラグで構成したテーブルデータに基づいてボリュームチェンジしても良い。この際、２バイトを使用してオンオフフラグを表した場合、最下位ビット（ビット０）を曲０、最上位ビット（ビット１５）を曲１５に対応させると、１６曲のフラグ処理が可能となり、上手な曲と下手な曲の２曲を１組としても８組の音色の同時制御に対応することになる。
【０１６１】
更にまた、本第１及び第２実施例においては、キャラクタの能力値として技術力を挙げたが、他にも例えば表現力を挙げることができる。表現力は演奏ミスと直接関係しないため本実施例では取りあげなかったが、表現力が高まった時には、いわゆるビブラートやトレモロ、付加音によるハーモニー等の処理が可能なようにすれば、能力値に対する表現として効果的と考えられる。ここで、例えばビブラートであれば、細かい所定間隔で繰り返すピッチシフトとも考えられ、またトレモロであれば、細かい所定間隔で繰り返すボリュームチェンジとも考えられるので、本実施例のテーブルデータによる時間制御を応用すれば実現できることが明らかである。また、ＭＩＤＩ等による曲再生環境であれば、付加音によるハーモニーについても、テンション等の音楽理論に基づいてピッチシフトした音を別パート（チャンネル）で同時に再生することで実現できる可能性がある。また、いわゆるこもった感じや金属的な響き等の音質の変化を表現するにはデジタルフィルタを用いることが知られている。
【０１６２】
また、本第１及び第２実施例においては、処理時間の単位をｔｉｃｋと定義し、１ｔｉｃｋを１６ミリ秒と設定したが、これに限定されるものではない。１６ミリ秒はゲームの画面表示を制御する垂直帰線割込（Ｖｓｙｎｃ）の周期と一致するので、画像処理時間に影響する（処理落ちの危険がある）ような場合は、別にタイマ割込みを発生させ、例えば１０ミリ秒に１度の周期で呼び出される（処理される）ようにしても良い。この場合は１ｔｉｃｋが１０ミリ秒となる。
【０１６３】
更に、この発明の第１または第２実施例においては、ピッチシフトのデータテーブルに基づくピッチシフトのタイミング及びピッチの自動変更処理や、ボリュームチェンジテーブルに基づく曲の音量バランスを自動変更処理を行う構成としたが、演奏ミスを表現する場合に、上述のピッチシフトのタイミング及びピッチ、あるいは曲の音量バランス以外にも、曲に合致しない異音を発生させる特別構成とすることも可能である。
【０１６４】
さすれば、演奏ミスを表現する際に、曲に合致しない異音を発生させれば、音楽用ビデオゲーム中でのキャラクタによる演奏の上手下手の表現に際して、上手な方と下手な方との演奏状況をより一層明確に表現することが可能となり、演奏の上達しようとする意欲を湧かせることができるものである。
【０１６５】
【発明の効果】
以上詳細に説明した如く、この発明によれば、ビデオゲームのゲーム音楽の演奏状態を制御する曲演奏制御方法であって、曲の再生を開始するステップと、キャラクタの能力値に基づいて作成されたピッチシフトテーブルに基づいて、再生中の曲のピッチシフトのタイミング及びピッチを自動的に変更するステップと、を含むことによって、演奏ミスを表現することができ、記録容量を増加させることなく、ビデオゲーム中でのキャラクタによる演奏の上手下手を表現することができるものである。
【０１６６】
また、ビデオゲームのゲーム音楽の演奏状態を制御する曲演奏制御方法であって、複数の曲の再生を同時に開始するステップと、キャラクタの能力値に基づいて作成されたボリュームチェンジテーブルに基づいて、再生中の各曲の音量バランスを自動的に変更するステップと、を含むことによって、演奏ミスを表現することができ、記録容量を増加させることなく、ビデオゲーム中でのキャラクタによる演奏の上手下手を表現することができるものである。
【図面の簡単な説明】
【図１】この発明の第１実施例を示すビデオゲームの曲演奏制御方法の制御用メインルーチンのフローチャートである。
【図２】ビデオゲームの曲演奏制御方法のミス演算処理のサブルーチンを示すフローチャートである。
【図３】ゲーム装置の接続態様を示す概略斜視図である。
【図４】ゲーム装置の本体の構成を示す概略ブロック図である。
【図５】ピッチシフトデータのデータ構造を示す図である。
【図６】ピッチシフトのデータテーブルを示す図である。
【図７】この発明の第２実施例を示すビデオゲームの曲演奏制御方法のミス演算処理のサブルーチンを示すフローチャートである。
【図８】フェード処理のフローチャートである。
【図９】ボリュームチェンジデータのデータ構造を示す図である。
【図１０】ボリュームチェンジのデータテーブルを示す図である。
【図１１】演奏状態を示す概略説明図である。
【図１２】この発明の第１の実施例におけるピッチシフトのデータテーブル（図６）の応用改変例を示す図である。
【図１３】この発明の第２の実施例におけるボリュームチェンジデータのデータ構造（図９）とボリュームチェンジのデータテーブル（図１０）の応用改変例を示す図である。
【図１４】この発明の第３の実施例における音圧の実効値Ｐと音圧レベルＳＰＬとの関係を示す図である。
【符号の説明】
２  テレビ
４  モニタ
６  スピーカ
８  ゲーム装置
１０  入力装置
１２  記録媒体
１４  本体
１６  ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）ブロック
１８  ＳＣＵ（Ｓｙｓｔｅｍ  Ｃｏｎｔｒｏｌ  Ｕｎｉｔ）
２０  ＣＰＵ
２２  ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）
２４  ＲＡＭ（Ｒａｎｄｏｍ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）
２６  バス
２８  外部バス
３０  入力受信部
３２  媒体読取部
３４  画像処理部
３６  音響処理部
３８  ネットワーク接続部
４０  ネットワーク
【図１】
2004290501.tif 000017
【図２】
2004290501.tif 000018
【図３】
2004290501.tif 000019
【図４】
2004290501.tif 000020
【図５】
2004290501.tif 000021
【図６】
2004290501.tif 000022
【図７】
2004290501.tif 000023
【図８】
2004290501.tif 000024
【図９】
2004290501.tif 000025
【図１０】
2004290501.tif 000026
【図１１】
2004290501.tif 000027
【図１２】
2004290501.tif 000028
【図１３】
2004290501.tif 000029
【図１４】
2004290501.tif 000030