(57)【特許請求の範囲】
【請求項１】
記憶手段と、音楽ストリーミングデータ再生手段と、音源手段とを備えた音楽再生装置の音楽再生プログラムであって、その音楽再生装置のコンピュータに、
音楽再生開始指示に応じて、前記記憶手段に記憶されたストリーミングデータに基づいて前記音楽ストリーミングデータ再生手段から音楽を再生する、ストリーミング再生ステップ、
前記音楽再生開始指示に応じて、前記記憶手段に記憶された所定の音源制御シーケンスデータおよびテンポに基づいて、前記音源手段から音楽を再生する、シーケンス再生ステップ、
前記シーケンス再生ステップにおいて前記ストリーミング再生ステップにおける予測再生時間と実再生時間との誤差を算出する、再生時間誤差算出ステップ、および
前記再生時間誤差算出ステップで検出した前記予測再生時間と実再生時間との誤差に基づいて、前記シーケンス再生ステップにおけるテンポを調整する、テンポ調整ステップ
を実行させる音楽再生プログラム。
【請求項２】
前記シーケンス再生ステップは、基準タイミング信号を検出する、基準タイミング信号検出ステップをさらに含み、
前記再生時間誤差算出ステップは、前記基準タイミング信号に応答して、前記ストリーミング再生ステップにおける再生サンプル数の予測値を取得する、サンプル数予測ステップ、および前記基準タイミング信号に応答して、前記ストリーミング再生ステップにおける実際のストリーミング再生に基づく再生サンプル数を取得する、再生サンプル数取得ステップを含み、前記サンプル数予測ステップで取得された再生サンプル数の予測値と前記再生サンプル数取得ステップで取得された再生サンプル数とに基づいて、前記予測再生時間と実再生時間との誤差を算出する、請求項１記載の音楽再生プログラム。
【請求項３】
前記テンポ調整ステップは、前記再生時間誤差算出ステップで算出された誤差に基づいて、前記シーケンス再生ステップにおけるテンポを増減する、請求項１または２記載の音楽再生プログラム。
【請求項４】
前記テンポ調整ステップは、前記誤差の大きさに応じて非線形な関係のテンポ増減率に応じてテンポを修正する、請求項３記載の音楽再生プログラム。
【請求項５】
音源手段、
前記音源手段を制御するための音源制御シーケンスデータおよびテンポならびに音楽ストリーミングデータを記憶する記憶手段、
音楽再生開始指示に応じて、前記記憶手段に記憶されたストリーミングデータに基づいて音楽を再生するストリーミング再生手段、
前記音楽再生開始指示に応じて、前記記憶手段に記憶された音源制御シーケンスデータおよびテンポに基づいて、前記音源手段から音楽を再生するシーケンス再生手段、
前記ストリーミング再生手段における予測再生時間と実再生時間との誤差を算出する再生時間誤差算出手段、および
前記予測再生時間と実再生時間との誤差に基づいて、前記シーケンス再生手段によるシーケンス再生のテンポを調整するテンポ調整手段を備える、音楽再生装置。
【請求項６】
記憶手段と、音楽ストリーミングデータ再生手段と、音源手段と、処理手段とを備えた音楽再生装置における音楽再生方法であって、
前記処理手段が、音楽再生開始指示に応じて、前記記憶手段に記憶されたストリーミングデータに基づいて前記音楽ストリーミングデータ再生手段から音楽を再生するストリーミング再生ステップ、
前記処理手段が、前記音楽再生開始指示に応じて、前記記憶手段に記憶された所定の音源制御シーケンスデータおよびテンポに基づいて、前記音源手段から音楽を再生するシーケンス再生ステップ、
前記処理手段が、前記シーケンス再生ステップにおいて前記ストリーミング再生ステップにおける予測再生時間と実再生時間との誤差を算出する再生時間誤差算出ステップ、および
前記処理手段が、前記再生時間誤差算出ステップで検出した前記予測再生時間と実再生時間との誤差に基づいて、前記シーケンス再生ステップにおけるテンポを調整するテンポ調整ステップを含む音楽再生方法。
【請求項７】
音源手段、
前記音源手段を制御するための音源制御シーケンスデータおよびテンポならびに音楽ストリーミングデータを記憶する記憶手段、
音楽再生開始指示に応じて、前記記憶手段に記憶されたストリーミングデータに基づいて音楽を再生するストリーミング再生手段、
前記音楽再生開始指示に応じて、前記記憶手段に記憶された音源制御シーケンスデータおよびテンポに基づいて、前記音源手段から音楽を再生するシーケンス再生手段、
前記ストリーミング再生手段における予測再生時間と実再生時間との誤差を算出する再生時間誤差算出手段、および
前記予測再生時間と実再生時間との誤差に基づいて、前記シーケンス再生手段によるシーケンス再生のテンポを調整するテンポ調整手段を備える、音楽再生システム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は音楽再生プログラムおよび音楽再生装置に関し、特に例えば、ゲームなどのＢＧＭにおいて、ＭＩＤＩデータなどで音源をシーケンス制御することによる音楽再生と、実際の音楽演奏を録音したストリーミングデータによる音楽再生とを同時に行う、音楽再生プログラムおよび音楽再生装置に関する。
【背景技術】
【０００２】
この発明の背景となるビデオゲームにおけるＢＧＭ（背景音楽）の再生方式は、大きく分けて、ストリーミング再生方式と、シーケンス再生方式の２種類がある。ストリーミング再生方式は、曲をそのままオーディオファイルとし、これを逐次メディアから読み込みつつ再生する方式であり、通常のＣＤなどと同様の方式である。シーケンス再生方式は、典型的にはＭＩＤＩシーケンスデータのようなシーケンスデータを用い、そのシーケンスデータに基づいて音源（楽器）を逐次鳴らしつつ、ゲーム機上で楽曲を構成していく方式である。
【０００３】
ストリーミング再生方式では、たとえばＤＡＷ（Desktop Audio Workstation）上で予め曲を作り込んでおくことができるので、高音質な楽曲を再生することができるという利点があるものの、楽曲にプログラム的変化を施すことが困難であるという難点もある。シーケンス再生方式では、演奏情報をプログラム的に操作できるので、ゲームの進行に合わせて楽曲の変化（楽器を変更する、演奏トラックを追加／削除する、特定の位置へ楽曲を分岐させる、など）を施すことができる。しかしながら、ゲーム機の処理速度の制約があるため、ＤＡＷで予め作りこむ場合には行なえるような処理、たとえばエフェクタ処理や、長尺のオーディオ（ボーカルなど）の組み込み、などが使えず、そのためストリーミング再生方式に比べて音質が劣る。
【０００４】
これらを組み合わせることによって、高品質で多彩な楽曲表現が可能となるが、しかしながら、ストリーミング方式とシーケンス方式とで同時に音楽再生を行なうと、両者に演奏時間のずれが生じる。これは以下のような理由による。
【０００５】
シーケンス再生処理はプログラムによって行なわれるが、プロセサのクロックの微小な誤差や、プログラム処理上の誤差が蓄積し、実際に想定している再生テンポからほんの僅かではあるが、ずれが生じる。また、ストリーミング再生処理で再生する波形にループを組む場合、丁度よいタイミングできれいにループが繋がるよう、ループポイントを、たとえば波形サンプル値が０の箇所を選択し、ここでループが接合されるように調整する必要があるが、その際に、僅かではあるが本来のテンポから、時間的に正確なループ位置とサンプル値０の位置の誤差の分だけずれることがある。さらには、シーケンスＢＧＭと同じ演奏長のストリーミングＢＧＭを作る場合には、人間の作業が必要なため、そこでヒューマンエラーが入り込む余地がある。そして、このような原因による演奏時間のずれは、非常に長い楽曲や、楽曲を何回もループ再生を行なう際に顕著に現れる。
【０００６】
一方、一般的なＤＡＷソフトウェアでは、実際の音楽演奏を録音したストリーミングデータと、シーケンスデータとの同期をとりながら音楽制作を行うことができる。
【０００７】
また、特許文献１に掲げた技術では、ハードディスクに記録されたオーディオデータと、磁気ディスクに記録されたＭＩＤＩデータとを、クロック生成部からのクロックに従って再生するので、オーディオデータとＭＩＤＩデータとの同期をとることができる。
【特許文献１】特開２００３−２８０６６２号［Ｇ１０Ｈ７／０２  １／００］
【発明の開示】
【発明が解決しようとする課題】
【０００８】
しかしながら、一般的なＤＡＷソフトウェアでは、オーディオデータからテンポ情報を抽出して、ＭＩＤＩデータに対するテンポを決め、あるいは、ＭＩＤＩデータに対してオーディオデータの長さが合致するように、タイムストレッチなどの技術を用いて、高度な同期をとる方法を採用している。このため、ゲームなどリアルタイムにテンポ同期を行う必要がある局面では、コンピュータへの処理負担が非常に高くなる上に、タイムストレッチ技術などの音質面に配慮するような高度な処理はあまり必要ではない。
【０００９】
また特許文献１に掲げた技術では、クロック生成部からのクロックに応じて音楽を生成するので、ゲームなどではあらかじめクロックを別途設定しておく必要があり、データを用意する負担が大きくなる。
【００１０】
それゆえに、この発明の主たる目的は、シーケンス方式とストリーミング方式による音楽再生を同時に行う、新規な音楽再生プログラムおよび音楽再生装置を提供することである。
【００１１】
この発明の他の目的は、ストリーミング再生に対してシーケンス再生のテンポを調整することによって、双方の演奏形式のよい部分を組み合わせた楽曲（ＢＧＭ）を演奏できる、音楽再生プログラムおよび音楽再生装置を提供することである。
【００１２】
この発明のさらに他の目的は、少ない処理負担で、ストリーミング再生に対してシーケンス再生を同期させることができる、音楽再生プログラムおよび音楽再生装置を提供することである。
【課題を解決するための手段】
【００１３】
請求項１の発明は、記憶手段と、音楽ストリーミングデータ再生手段と、音源手段とを備えた音楽再生装置の音楽再生プログラムであって、その音楽再生装置のコンピュータに、音楽再生開始指示に応じて、記憶手段に記憶されたストリーミングデータに基づいて音楽ストリーミングデータ再生手段から音楽を再生する、ストリーミング再生ステップ、音楽再生開始指示に応じて、記憶手段に記憶された所定の音源制御シーケンスデータおよびテンポに基づいて、音源手段から音楽を再生する、シーケンス再生ステップ、シーケンス再生ステップにおいてストリーミング再生ステップにおける予測再生時間と実再生時間との誤差を算出する、再生時間誤差算出ステップ、および再生時間誤差算出ステップで検出した予測再生時間と実再生時間との誤差に基づいて、シーケンス再生ステップにおけるテンポを調整する、テンポ調整ステップを実行させる音楽再生プログラムである。
【００１４】
請求項１の発明では、音楽再生装置（１２：実施例で相当する部分を例示したとえば機の参照番号。以下同じ。）は、記憶手段（４０）、音楽ストリーミング再生手段（３６，６２，６６）、音源手段（５２，５４，６２，６６）、およびコンピュータ（３６）を含む。コンピュータ（３６）は、再生開始指示に応じて、記憶手段に記憶されたストリーミングデータに基づいて音楽ストリーミングデータ再生手段から音楽を再生する（Ｓ７：図５）とともに、記憶手段に記憶された所定の音源制御シーケンスデータおよびテンポに基づいて、音源手段から音楽を再生する（図６，図７）。コンピュータ（３６）は、シーケンス再生ステップの実行中に、ストリーミング再生における予測再生時間と実再生時間との誤差を算出し（Ｓ３７，Ｓ３９）、その算出した誤差に基づいてテンポを調整する（Ｓ４１−Ｓ４９）。
【００１５】
請求項１の発明によれば、ストリーミング再生に対してシーケンス再生のテンポを調整するので、双方の演奏形式（再生方式）のよい部分を組み合わせた楽曲（ＢＧＭ）を演奏できる。
【００１６】
請求項２の発明は、シーケンス再生ステップは、基準タイミング信号を検出する、基準タイミング信号検出ステップをさらに含み、再生時間誤差算出ステップは、基準タイミング信号に応答して、ストリーミング再生ステップにおける再生サンプル数の予測値を取得する、サンプル数予測ステップ、および基準タイミング信号に応答して、ストリーミング再生ステップにおける実際のストリーミング再生に基づく再生サンプル数を取得する、再生サンプル数取得ステップを含み、サンプル数予測ステップで取得された再生サンプル数の予測値と再生サンプル数取得ステップで取得された再生サンプル数とに基づいて、予測再生時間と実再生時間との誤差を算出する、請求項１記載の音楽再生プログラム、請求項１記載の音楽再生プログラムである。
【００１７】
請求項２の発明では、コンピュータ（３６）は、基準タイミング信号検出ステップ（Ｓ３５）で拍信号のような基準タイミング信号を検知すると、それに応答して、ストリーミング再生における、予測再生サンプル数と実際の再生サンプル数とに基づいて予測再生時間と実再生時間との誤差を算出する。
【００１８】
請求項２の発明によれば、たとえば拍信号のような、シーケンス再生における基準タイミング信号に応答してストリーミング再生の再生経過、すなわち実際の再生サンプル数および予測サンプル数を検出するので、複雑な制御なしに、両者を同期させることができる。
【００１９】
請求項３の発明は、テンポ調整ステップは、再生時間誤差算出ステップで算出された誤差に基づいて、シーケンス再生ステップにおけるテンポを増減する、テンポ増減ステップを含む、請求項１または２記載の音楽再生プログラムである。
【００２０】
請求項３の発明では、コンピュータ（３６）は、再生時間誤差算出ステップ（Ｓ４１）を実行し、その誤差に基づいて、テンポを増減する（Ｓ４５，Ｓ４７，Ｓ４９）。
【００２１】
請求項３の発明によれば、誤差によってテンポを増減するので、少ない処理負担で正確な同期制御を行なうことができる。
【００２２】
請求項４の発明は、テンポ調整ステップは、誤差の大きさに応じて非線形な関係のテンポ増減率に応じてテンポを修正する、請求項３記載の音楽再生プログラムである。
【００２３】
請求項４の発明では、コンピュータ（３６）は、たとえば２次曲線のような非線形の関係で誤差量と増減率とを対応付ける。
【００２４】
請求項４の発明によれば、誤差量に応じてテンポの増減率を非線形にしたので、大きい誤差量のときでも早く収束させることができる。
【００２５】
請求項５の発明は、音源手段、音源手段を制御するための音源制御シーケンスデータおよびテンポならびに音楽ストリーミングデータを記憶する記憶手段、音楽再生開始指示に応じて、記憶手段に記憶されたストリーミングデータに基づいて音楽を再生するストリーミング再生手段、音楽再生開始指示に応じて、記憶手段に記憶された音源制御シーケンスデータおよびテンポに基づいて、音源手段から音楽を再生するシーケンス再生手段、ストリーミング再生手段における予測再生時間と実再生時間との誤差を算出する再生時間誤差算出手段、および予測再生時間と実再生時間との誤差に基づいて、シーケンス再生手段によるシーケンス再生のテンポを調整するテンポ調整手段を備える、音楽再生装置である。
請求項６の発明は、記憶手段と、音楽ストリーミングデータ再生手段と、音源手段と、処理手段とを備えた音楽再生装置における音楽再生方法であって、処理手段が、音楽再生開始指示に応じて、記憶手段に記憶されたストリーミングデータに基づいて音楽ストリーミングデータ再生手段から音楽を再生するストリーミング再生ステップ、
処理手段が、音楽再生開始指示に応じて、記憶手段に記憶された所定の音源制御シーケンスデータおよびテンポに基づいて、音源手段から音楽を再生するシーケンス再生ステップ、処理手段が、シーケンス再生ステップにおいてストリーミング再生ステップにおける予測再生時間と実再生時間との誤差を算出する再生時間誤差算出ステップ、および処理手段が、再生時間誤差算出ステップで検出した予測再生時間と実再生時間との誤差に基づいて、シーケンス再生ステップにおけるテンポを調整するテンポ調整ステップを含む音楽再生方法である。
請求項７の発明は、音源手段、音源手段を制御するための音源制御シーケンスデータおよびテンポならびに音楽ストリーミングデータを記憶する記憶手段、音楽再生開始指示に応じて、記憶手段に記憶されたストリーミングデータに基づいて音楽を再生するストリーミング再生手段、音楽再生開始指示に応じて、記憶手段に記憶された音源制御シーケンスデータおよびテンポに基づいて、音源手段から音楽を再生するシーケンス再生手段、ストリーミング再生手段における予測再生時間と実再生時間との誤差を算出する再生時間誤差算出手段、および予測再生時間と実再生時間との誤差に基づいて、シーケンス再生手段によるシーケンス再生のテンポを調整するテンポ調整手段を備える、音楽再生システムである。
【００２６】
請求項５、請求項６および請求項７の発明では、それぞれ、請求項１の発明と同様の効果が期待できる。
【発明の効果】
【００２７】
この発明によれば、ストリーミング再生に対してシーケンス再生のテンポを調整することによって、双方の演奏形式のよい部分を組み合わせた楽曲（ＢＧＭ）を演奏できる。
【００２８】
この発明の上述の目的，その他の目的，特徴および利点は、図面を参照して行う以下の実施例の詳細な説明から一層明らかとなろう。
【発明を実施するための最良の形態】
【００２９】
図１に示す実施例のビデオゲームシステム１０はビデオゲーム機（以下、単に「ゲーム機」という。）１２を含む。この発明の音楽再生プログラムはこの実施例ではゲーム機１２に適用されるので、その意味では、ゲーム機１２は音楽再生装置でもある。
【００３０】
ゲーム機１２は、略立方体のハウジング１４を含み、ハウジング１４の上端には光ディスクドライブ１６が設けられる。光ディスクドライブ１６には、ゲームプログラムを記憶した情報記憶媒体の一例である光ディスク１８が装着される。ハウジング１４の前面には複数の（実施例では４つの）コネクタ２０が設けられる。これらコネクタ２０は、ケーブル２４によって、コントローラ２２をゲーム機１２に接続するためのものであり、この実施例では最大４つのコントローラをゲーム機１２に接続することができる。
【００３１】
コントローラ２２には、その上面，下面，あるいは側面などに、操作手段（コントロール）２６が設けられる。操作手段２６は，たとえば２つのアナログジョイスティック，１つの十字キー，複数のボタンスイッチ等を含む。１つのアナログジョイスティックは、スティックの傾き量と方向とによって、プレイヤキャラクタ（「プレイヤオブジェクト」ということもある。）（プレイヤがコントローラ２２によって操作可能な動画キャラクタまたはオブジェクト）の移動方向および／または移動速度ないし移動量などを入力するために用いられる。他のアナログジョイスティックは、傾斜方向によって、仮想カメラの移動を制御する。十字スイッチは、アナログジョイスティックに代えてプレイヤキャラクタの移動方向を指示するために用いられる。ボタンスイッチは、プレイヤキャラクタの動作を指示するために利用されたり、３次元画像の仮想カメラの視点を切り換えたり、プレイヤキャラクタの移動スピード調節等に用いられる。ボタンスイッチは、さらに、たとえばメニュー選択やポインタあるいはカーソル移動を制御する。
【００３２】
なお、実施例ではコントローラ２２がケーブル２４によってゲーム機１２に接続された。しかしながら、コントローラ２２は、他の方法、たとえば電磁波（たとえば電波または赤外線）を介してワイヤレスで、ゲーム機１２に接続されてもよい。また、コントローラ２２の操作手段の具体的構成は、もちろん実施例の構成に限られるものではなく、任意の変形が可能である。たとえば、アナログジョイスティックは１つだけでもよいし、用いられなくてもよい。十字スイッチは用いられなくてもよい。
【００３３】
ゲーム機１２のハウジング１４の前面のコネクタ２０の下方には、少なくとも１つの（実施例では２つの）メモリスロット２８が設けられる。このメモリスロット２８にはメモリカード３０が挿入される。メモリカード３０は、光ディスク１８から読み出したゲームプログラムや表示用データ（図３参照）をローディングして一時的に記憶し、あるいはこのゲームシステム１０を利用してプレイしたゲームのゲームデータ（たとえばゲームの結果）をセーブしておくために利用される。
【００３４】
ゲーム機１２のハウジング１４の後面には、ＡＶケーブルコネクタ（図示せず）が設けられ、そのコネクタを用いて、ＡＶケーブル３２を通してゲーム機１２にモニタ３４を接続する。このモニタ３４は典型的にはカラーテレビジョン受像機であり、ＡＶケーブル３２は、ゲーム機１２からの映像信号をカラーテレビのビデオ入力端子に入力し、音声信号を音声入力端子に与える。したがって、カラーテレビ（モニタ）３４の画面上にたとえば３次元（３Ｄ）ビデオゲームのゲーム画像が表示され、左右のスピーカからゲーム音楽（ＢＧＭ）や効果音などのステレオゲーム音声が出力され得る。
【００３５】
このゲームシステム１０において、ユーザまたはゲームプレイヤがゲーム（または他のアプリケーション）をプレイするために、ユーザはまずゲーム機１２の電源をオンし、ついで、ユーザはビデオゲーム（もしくはプレイしたいと思う他のアプリケーション）のソフトウェア（データ）をストアしている適宜の光ディスク１８を選択し、その光ディスク１８をゲーム機１２のディスクドライブ１６にローディングする。応じて、ゲーム機１２がその光ディスク１８にストアされているソフトウェアに基づいてビデオゲームもしくは他のアプリケーションを実行し始めるようにする。ユーザはゲーム機１２に入力を与えるためにコントローラ２２を操作する。たとえば、操作手段２６のどれかを操作することによってゲームもしくは他のアプリケーションをスタートさせる。操作手段２６の他のものを動かすことによって、動画キャラクタ（プレイヤキャラクタ）を異なる方向に移動させ、または３次元（３Ｄ）のゲーム世界におけるユーザの視点（カメラ位置）を変化させることができる。
【００３６】
光ディスク１８には上述のようにゲームデータが記録されているが、そのようなゲームデータには、ゲームのプログラムのデータや、そのゲームに登場するプレイヤキャラクタ（プレイヤオブジェクト）やそれ以外のノンプレイヤキャラクタ（背景キャラクタ、敵キャラクタなど）を表現するゲーム画像データなどが含まれる。ゲームデータはさらに、ゲーム音楽（ＢＧＭ）をストリーミング再生方式で再生するためのストリーミングデータ（たとえば、ＰＣＭデータ）を含む。
【００３７】
なお、後述の音源手段を逐次的に制御するためのシーケンスデータは、たとえばＭＩＤＩメッセージを含み、そのようなシーケンスデータは上記プログラムの一部を構成するサウンド処理プログラムに含まれる。
【００３８】
図２は図１実施例のビデオゲームシステム１０の構成を示すブロック図である。ビデオゲーム機１２には、このゲーム機の全体的な制御を担当する中央処理ユニット（以下、「ＣＰＵ」という。）３６が設けられ、このＣＰＵ３６には、バスを介して、メモリコントローラ３８が結合される。メモリコントローラ３８は主として、ＣＰＵ３６の制御の下で、バスを介して結合されるメインメモリ４０の書込みや読出しを制御する。このメモリコントローラ３８にはＧＰＵ(Graphics Processing Unit:グラフィックス処理装置) ４２が結合される。
【００３９】
ＧＰＵ４２は、たとえばシングルチップＡＳＩＣで構成され、メモリコントローラ３８を介してＣＰＵ３６からのグラフィクスコマンド(graphics command：作画命令)を受け、そのコマンドに従って、ジオメトリユニット４４およびレンダリングユニット４６によって３次元（３Ｄ）ゲーム画像を生成する。つまり、ジオメトリユニット４４は、３次元座標系の各種キャラクタやオブジェクト（複数のポリゴンで構成されている。そして、ポリゴンとは少なくとも３つの頂点座標によって定義される多角形平面をいう）の回転，移動，変形等の座標演算処理を行う。レンダリングユニット４６は、各種オブジェクトの各ポリゴンにテクスチャ（Texture：模様画像）を貼り付ける（レンダリングする）。したがって、ＧＰＵ４２によって、ゲーム画面上に表示すべき３Ｄ画像データが作成され、その画像データはフレームバッファ４８内に描画（記憶）される。なお、ＧＰＵ４２が作画コマンドを実行するにあたって必要なデータ（プリミティブまたはポリゴンやテクスチャ等）は、ＧＰＵ４２がメモリコントローラ３８を介して、メインメモリ４０から入手する。
【００４０】
フレームバッファ４８は、たとえばラスタスキャンモニタ３４の１フレーム分の画像データを描画（蓄積）しておくためのメモリであり、ＧＰＵ４２によって１フレーム毎に書き換えられる。後述のビデオＩ／Ｆ５８がメモリコントローラ３８を介してフレームバッファ４８のデータを読み出すことによって、モニタ３４の画面上に３Ｄゲーム画像が表示される。なお、フレームバッファ４８の容量は、表示したい画面の画素（ピクセルまたはドット）数に応じた大きさである。たとえば、ディスプレイないしモニタ３４の画素数に応じた画素数（記憶位置またはアドレス）を有する。
【００４１】
また、Ｚバッファ５０は、フレームバッファ４８に対応する画素（記憶位置またはアドレス）数×１画素当たりの奥行データのビット数に相当する記憶容量を有し、フレームバッファ４８の各記憶位置に対応するドットの奥行き情報または奥行データ（Ｚ値）を記憶するものである。
【００４２】
なお、フレームバッファ４８およびＺバッファ５０は、ともにメインメモリ４０の一部を用いて構成されてもよい。
【００４３】
メモリコントローラ３８はまた、ＤＳＰ(Digital Signal Processor)５２を介して、オーディオメモリ５４に結合される。したがって、メモリコントローラ３８は、メインメモリ４０だけでなく、オーディオメモリ５４の書込みおよび／または読出しを制御する。このＤＳＰ５２およびオーディオメモリ５４によって、音源手段（ＭＩＤＩ音源）を構成する。つまり、オーディオメモリ５２に、その音源手段から出力できる楽器（たとえば、ピアノなどの鍵盤楽器、バイオリンなどの弦楽器、トランペットやフルートなどの管楽器、さらには打楽器やパーカッションなど）の音色やその他のいろいろな音色に相当する波形データを記憶しておき、ＤＳＰ５２がシーケンスデータ（代表的にはＭＩＤＩメッセージ）に基づいてその波形データを加工することによって、音楽データ（オーディオデータ）として出力する。音源手段から出力されるこの音楽データないしオーディオデータは、メモリコントローラ３８によって、画像データなどともに一旦フレームメモリ４８に蓄えられ、そのフレームメモリ４８から出力されて後述のオーディオＩ／Ｆ６２に与えられる。
【００４４】
メモリコントローラ３８は、さらに、バスによって、各インタフェース（Ｉ／Ｆ）５６，５８，６０，６２および６４に結合される。コントローラＩ／Ｆ５６は、コントローラ２２のためのインタフェースであり、コントローラ２２の操作手段２６の操作信号またはデータをメモリコントローラ３８を通してＣＰＵ３６に与える。ビデオＩ／Ｆ５８は、フレームバッファ４８にアクセスし、ＧＰＵ４２で作成した画像データを読み出して、画像信号または画像データ（ディジタルＲＧＢピクセル値）をＡＶケーブル３２（図１）を介してモニタ３４に与える。外部メモリＩ／Ｆ６０は、ゲーム機１２の前面に挿入されるメモリカード３０（図１）をメモリコントローラ３８に連係させる。それによって、メモリコントローラ３８を介して、ＣＰＵ３６がこのメモリカード３０にデータを書込み、またはメモリカード３０からデータを読み出すことができる。オーディオＩ／Ｆ６２は、メモリコントローラ３８を通してフレームバッファ４８から与えられるオーディオデータまたは光ディスク１８（実際にはメインメモリ４０の適宜場所に形成された後述のストリーミングバッファ）から読み出されたオーディオストリームデータを受け、それらに応じたオーディオ信号（音声信号）をモニタ３４のスピーカ６６に与える。なお、ステレオ音声の場合には、スピーカ６６は、少なくとも、左右１つずつ設けられる。そして、ディスクＩ／Ｆは、そのディスクドライブ１６をメモリコントローラ３８に結合し、したがって、ＣＰＵ３６がディスクドライブ１６を制御する。このディスクドライブ１６によって光ディスク１８から読み出されたプログラムデータやテクスチャデータ等が、ＣＰＵ３６の制御の下で、メインメモリ４０に書き込まれる。
【００４５】
図３にはメインメモリ４０のメモリマップが示される。メインメモリ４０は、プログラム記憶領域６８を含む。プログラム記憶領域６８には、ゲーム処理プログラム領域７０、画像処理プログラム領域７２およびサウンド処理プログラム領域７２が設けられる。ゲーム処理プログラム領域７０には、光ディスク１８から読み出したゲームプログラムが、１度に全部または部分的かつ順次的に、記憶される。画像処理プログラム領域７２にも同様に、光ディスク１８から読み出したプログラムデータが１度に全部または部分的かつ順次的に、記憶される。画像処理プログラムデータは、たとえば、ゲームプレイヤがコントローラ３８を操作することによってゲーム空間内で移動させ、あるいは他の任意の動作をさせるためのプログラムである。
【００４６】
プログラム記憶領域６８に含まれるサウンド処理プログラム領域７４には、ゲーム音楽（ＢＧＭ）を再生するためのＢＧＭ再生プログラム７６が含まれる。このＢＧＭ再生プログラム７６の一例が後述の図４のフローチャートで表される。サウンド処理プログラム領域７４はさらに、後述の図５のフローチャートで例示するストリーミングデータ再生プログラム７８、および後述の図６および図７のフローチャートで例示するシーケンス再生プログラム８０を含む。
【００４７】
シーケンス再生プログラム８０に関連して、さらに、拍信号取得プログラム８２、再生サンプル数予測プログラム８４、再生サンプル数取得プログラム８６およびテンポ修正プログラム８８などが設けられる。
【００４８】
拍信号取得プログラム８２は、シーケンス再生において１拍毎に拍信号を取得するためのプログラムである。すなわち、シーケンスデータに１拍毎の情報を埋め込んでおき、シーケンスの進行中にこの情報があったとき、拍信号を発生する方法である。他には、ｔｉｃｋ数（ＭＩＤＩシーケンスデータを処理する、単位時間当たりの分解能）および楽曲の拍子情報から、特定間隔のｔｉｃｋが処理されたときに１拍が経過したと判断し、拍信号を発生する方法も考え得る。
【００４９】
ストリーミングバッファに蓄積されたストリーミング波形データは、逐次オーディオＩ／Ｆ６２での発音処理に回されるが、その発音処理に回されたサンプル数が、再生サンプル数である。再生サンプル数予測プログラム８４は、拍信号が発生するタイミングで、その時点で再生されていなければならないストリーミング波形サンプル数を予測するためのプログラムであり、再生サンプル数取得プログラム８６は、ストリーミング再生された実際のサンプル数を拍信号が発生するタイミングで取得するためのプログラムである。
【００５０】
メインメモリ４０にはさらに、データ記憶領域９０が形成され、その中にはストリーミングバッファ９２、シーケンスデータバッファ９４および再生カウント数データカウンタ９６が設けられる。ストリーミングバッファ９２には、先に説明したように光ディスク１８から読み出されたストリーミングデータがストアされる。ストリーミングデータは音楽（ＢＧＭ）毎に一連のデータとして記憶され、ここではそれらをＢＧＭ１，ＢＧＭ２，…として表す。ストリーミングデータは、波形データのほか、そのストリーミングデータをどの程度の速さで再生するかを示す再生レート（周波数）や、ループ再生（繰り返し再生）の場合の開始サンプル値および終了サンプル値などが含まれる。ループ開始サンプル値とは、ループを開始させるサンプル値（アドレス）のことであり、ループ終了サンプル値とは、ループを終了させるサンプル値（アドレス）のことである。
【００５１】
シーケンスデータバッファ９４には、サウンド処理プログラム７４から抽出されたシーケンスデータがストアされる。シーケンスデータは音楽毎に一連のデータとして記憶され、ここではそれらをシーケンス１，シーケンス２，…として表す。シーケンスデータは、ＭＩＤＩメッセージ（音源への指示コマンドと演奏の制御コマンドとを包括的に扱ったデータ）を含む。シーケンスデータは、基本形としてのＭＩＤＩメッセージや、そのＭＩＤＩメッセージを拡張した形で使用するループコマンドなどを含み、ループ演奏の場合には、開始拍数および終了拍数などが含まれる。ループ開始拍数とは、シーケンス再生においてループを開始させる拍数のことであり、ループ終了拍数とは、そのループを終了させる拍数のことである。
【００５２】
シーケンスデータにはさらにテンポデータが含まれるが、ＭＩＤＩ再生はゲームの処理フレームやストリーミングデータのサンプリングレートとは同期しない。シーケンスデータではまず、全ての基本となるカウント値（ｔｉｃｋ）が定義されていることはよく知られている。（たとえば、４分音符は４８０ｔｉｃｋ。）テンポデータは、何秒で１ｔｉｃｋとするかを定義するデータである。したがって、テンポデータは、最終的には、４分音符を１分間に何カウントするか、という音楽的なテンポと同義になる。
【００５３】
なお、再生カウント数データカウンタ９６は上記テンポデータに基づいて、ｔｉｃｋ数をカウントする。つまり、何秒で１ｔｉｃｋとするかはテンポデータで決まるので、そのテンポに基づいてカウント値すなわちｔｉｃｋ数をカウントする。
【００５４】
ゲームをプレイするとき、上述のように光ディスク１８をゲーム機１２にセットし、電源を投入すると、光ディスクからデータが読み出され、そのときのゲームマップないしステージに必要なプログラムやデータが図３に示すようにメインメモリ４０に記憶（ロード）される。そのプログラムやデータに従ってゲームが実行されるが、この発明にはゲームそれ自体には関係しないので、ゲームについての説明は省略する。
【００５５】
ＣＰＵ３６はゲームの実行中に、ゲームプログラムによって、ＢＧＭ（ゲーム音楽）再生要求を受ける。応じて、ＣＰＵ３６は、図４の最初のステップＳ１において、ディスク１８からメインメモリ４０のストリーミングバッファ９２（図３）に、即座に再生を開始できる分だけの適宜量のストリーミングデータを読み込む。そして、そのストリーミングバッファ９２に適宜量のストリーミングデータが読み込まれたとき、ＣＰＵ３６は、ステップＳ５において、ＢＧＭの再生開始を指示する。つまり、ステップＳ３でストリーミングバッファ９２に十分な量のストリーミングデータが蓄積されたことを検出したとき、ステップＳ５でＢＧＭ再生開始指示を出す。ストリーミング再生では記録メディアすなわちディスク１８からメインメモリ（ＲＡＭ）４０のストリーミングデータ（波形データ）を読み込むまでのタイムラグが生じるので、ストリーミングバッファ９２に所要量の波形データが蓄積されるまで、シーケンス再生を待つようにしている。このようにして同期を確保した状態で、再生開始指示に応答して、ステップＳ７でシーケンスデータ再生を実行し、ステップＳ７でストリーミング再生を実行する。ストリーミング再生とシーケンス再生とは同時に開始されるのであるが、以下の説明では、便宜上両者を別々に説明する。
【００５６】
ストリーミングデータ再生は具体的には図５に詳細に示される。ストリーミング再生では、ストリーミングバッファ９２が空にならないように、つまり常に適当量のストリーミングデータを蓄積しておけるように、逐次記録メディア１８からストリーミングデータを読み込み、ストリーミングバッファ９２を更新し続けるのであるが、この図５ではそのことは省略していることを最初に指摘しておく。
【００５７】
そして、最初のステップＳ１１で、ＣＰＵ３６は、ストリーミングバッファ９２にストアされているストリーミングデータ（ＢＧＭ）に含まれる再生レートを読み取って、そのときのストリーミングデータ再生のテンポ（速さ）を決める。そして、ステップＳ１３では、たとえばメインメモリ４０のデータ記憶領域９０の適宜の場所に形成される再生サンプル位置カウンタ（図示せず）をインクリメントし、ステップＳ１５でストリーミングバッファ９２からストリーミングサンプル（波形データ）を読み出し、ステップＳ１７でその波形データをオーディオＩ/Ｆ６２（図２）に入力することによって発音する。つまり、ストリーミング再生では、ステップＳ１９で最終サンプル値が検知されるまで、ステップＳ１３−Ｓ１７を繰り返し実行し、ストリーミングバッファ９２に蓄積したストリーミング波形データは逐次発音処理に送られる。このとき、図３の再生サンプル数取得プログラム８６に従って、発音処理されたストリーミング波形サンプルの数（サンプル数）が検知またはカウントされる。
【００５８】
ステップＳ１９で最終サンプル値であることを検出したとき、ステップＳ２１でそのストリーミングＢＧＭはループ再生するのかどうか、判断する。もし、ループ再生すべきストリーミングＢＧＭであれば、図３のストリーミングバッファ９２に、ループ開始／終了サンプル値が予め設定されているので、それを見れば、このステップＳ２１で“ＹＥＳ”か“ＮＯ”かを判断できる。ループ再生の必要がないなら、そのまま、終了する。
【００５９】
そして、ループ再生する場合には、すなわちステップＳ２１で“ＹＥＳ”が判断されたときには、続くステップＳ２３で、ループを終了すべきかどうか、判断する。ループの終了条件は、一例として、ループ回数が予め設定されているループ回数に達したときである。ループが繰り返される都度、たとえばメインメモリ４０のデータ記憶領域の適宜の場所に設定されているループカウンタ（図示せず）をインクリメントすることによって、ループ回数をカウントする。他方、ループ再生すべき回数（ループ回数）はストリーミングデータの一部としてバッファ９２に設定されているので、このステップＳ２３では、先のループカウンタでカウントしたループ回数がバッファに設定されているループ回数に達したかどうか判断するようにすればよい。
【００６０】
ループを終了すべき別の条件は、ゲームの進行などの結果そのときのストリーミングＢＧＭを強制的に終了させる指令信号が出されたときである。この終了指令信号によってもループは終了され、このステップＳ２３で“ＹＥＳ”が判断される。
【００６１】
ステップＳ２３でループ終了ではない（“ＮＯ”）と判断したときには、ステップＳ１３‐Ｓ２５を繰り返し実行する。
【００６２】
このようにして、ストリーミング再生が実行されるが、先に述べたように、その実行中に、再生サンプル数がカウントまたは検出されている。
【００６３】
なお、ループをするかしないかをプログラム的に決定したい場合には、上で説明したステップＳ１９とステップＳ２１とを入れ替えてもよい。その場合は、ループ区間の終了点に来たとき、たとえばメインメモリ４０のデータ記憶領域９０の適宜の領域に設定された「ループすべき」フラグ（図示せず）が立っていたらループするし、そうでなければそのままスルーさせる。そして、最終サンプルまで再生が来たら終了させるようにする。
【００６４】
次に図６および図７を参照して、シーケンス再生について説明する。このシーケンス再生は先にも説明したように、ストリーミング再生と同期させるため、ストリーミング再生プログラムからシーケンス再生指示があるまでは開始できない。そして、ステップＳ３１でその再生指示を受けると、続くステップＳ３３で、シーケンスデータ再生を実行する。
【００６５】
シーケンスデータ再生は図７に示すように、最初のステップＳ６１で、ＣＰＵ３６は、図３に示すデータ記憶領域９０のシーケンスバッファ９４から、テンポデータを取得する。それとともに、ステップＳ６３で、ＣＰＵ３６は、データ記憶領域９４の再生カウント数カウンタ９６から再生カウント数データを取得する。この再生カウント数とは、ｔｉｃｋ数のことである。そして、ステップＳ６５で、ＣＰＵ３６は、その再生カウント数すなわちｔｉｃｋ数に対応したシーケンスデータをそのシーケンスデータバッファ９４から取得する。
【００６６】
次のステップＳ６７でＣＰＵ３６は、ステップＳ６５で取得したシーケンスデータがＭＩＤＩメッセージかどうか判断する。ＭＩＤＩメッセージとは、音の高さ（音階）、音の発音（NoteOn：発音開始タイミング）とその終了（NoteOff：発音終了タイミング）、大きさ（強さ）をＤＳＰ５０（図２）へ指示するコマンドであり、シーケンスデータはそのコマンドと演奏の制御コマンドとを包含するものである。したがって、ステップＳ６７で“ＹＥＳ”が判断されると、ＣＰＵ３６はステップＳ６９でそのＭＩＤＩメッセージをＤＳＰ５０に送る。したがって、ＤＳＰ５０は、その指示コマンドに従って、オーディオメモリ５２（図２）の音源波形を加工して音楽データ（オーディオデータ）として出力する。そのオーディオデータによって、オーディオＩ／Ｆ６２がオーディオ信号をスピーカ６６に出力し、発音させる。
【００６７】
ついで、ステップＳ７１で、ＣＰＵ３６は、再生カウント数カウンタ９６を、テンポデータに基づいてインクリメントする。つまり、何秒で１ｔｉｃｋとするかはテンポ（４分音符（４８０ｔｉｃｋ）を１分間に何個入れるか）によって決まるので、ここでは、処理フレームによってではなく、テンポによって、再生カウント数（ｔｉｃｋ）を進める（インクリメントする）どうかが決まる。
【００６８】
なお、ステップＳ６７で“ＮＯ”の判断をしたとき、ＣＰＵ３６は次にステップＳ７３で、ステップＳ６５で取得したシーケンスデータがループ再生指示かどうか判断する。実施例のようなゲーム機では基本的なシーケンスメッセージを拡張することによってコマンドを作っているので、ここでは、シーケンスデータにループ再生コマンドを含んでいるかどうか判断する。シーケンスデータがループコマンドを含んでいるときには、次のステップＳ７５でＣＰＵ３６は、再生カウント数カウンタ９６にループ開始位置のカウント数を設定する。
【００６９】
ただし、ステップＳ７７で、ステップＳ６５で取得したシーケンスデータが終了コマンドを含んでいると判断したときには、シーケンス再生を終了する。
【００７０】
このようにして、図６のステップＳ３３でシーケンスデータ再生が実行される。
【００７１】
そして、次のステップＳ３５で、ＣＰＵ３６は、拍信号があるかどうか判断する。拍信号は、先に説明したように拍信号取得プログラム８２に従って検出する。この拍信号は、そのときのストリーミング再生のずれを検出するための基準タイミング信号として機能するものであり、可能なら、拍信号以外の他の基準タイミング信号が利用されてもよい。
【００７２】
ステップＳ３５で拍信号を検出すると、ＣＰＵ３６は、次のステップＳ３７で、ストリーミングサンプル数予測プログラム８４（図２）に従って、そのとき再生されているであろう、またはそのとき再生されているはずのストリーミング波形サンプル数を予測する。具体的には、数１に従って、ストリーミングの再生レートで決まる１拍毎のサンプル数にそのときまでに得られた拍信号の数を掛ければ、そのときまでの再生サンプル数を予測できる。
［数１］
再生サンプル数予測値＝１拍毎のサンプル数×拍信号の数
次に、ＣＰＵ３６は、ステップＳ３９で、図５に示すストリーミング再生の実行中にカウントしておいた、実際に再生したストリーミングサンプル数を取得する。
【００７３】
ステップＳ４１で、数２に従って、ストリーミング波形の再生サンプル数の予測値と実際値とを比較して誤差を求める。
［数２］
誤差＝実際の再生サンプル数−予測再生サンプル数
その後、ステップＳ４３で誤差があるかどうか判断し、誤差がなければ、そのときのストリーミングＢＧＭ再生とシーケンスＢＧＭ再生とは同期がとれていることを意味している。したがって、この場合には、何もしないでリターンする。
【００７４】
ステップＳ４３で誤差を検出した場合には、次のステップＳ４５でＣＰＵ３６は、誤差が正かどうか判断する。
【００７５】
誤差が正である場合、予測値が遅れている、つまりはシーケンスＢＧＭがストリーミングＢＧＭよりも遅れていることを意味しているので、次のステップＳ４７でＣＰＵ３６は、シーケンスのテンポを速くする。逆に、誤差が負である場合、予測値が進んでいる、つまりシーケンスＢＧＭがストリーミングＢＧＭよりも進んでいるので、ステップＳ４９でＣＰＵ３６はシーケンスＢＧＭのテンポを遅くする。ただし、テンポを増減するためには、変化率（増減率）の数値を設定する。すなわち、テンポを速める増加率またはテンポを遅くする減少率を設定し、４８０ｔｉｃｋ（４分音符）毎にその増加率または減少率でｔｉｃｋ数をカウントする時間を逆比例的に変更するようにすれば、シーケンス再生が徐々にストリーミング再生と同期するようになる。
【００７６】
なお、上述の増減率を誤差の大きさによって変動するように設定することも可能である。たとえば、誤差量に対してテンポ変化率を２次曲線（非線形な関係の増減率）として用意すれば、誤差の大きいときにはテンポが大きく変化（増減）するようになり、誤差収束が速くなる。
【００７７】
シーケンス再生はシーケンスデータで逐次楽曲を合成していく方法であるので、上記のようにシーケンスの再生テンポを微調整することによって、シーケンス再生を容易にストリーミング再生と同期させることができる。
【００７８】
なお、このようなテンポ微調整の方法としては、毎ｔｉｃｋに上記のような誤差を軽減する方法や、ゲームの処理単位で誤差軽減処理をする方法も考えられるが、実施例ではそれらを採用せず、シーケンス再生の拍信号毎に誤差軽減処理を実行するようにした。それは、以下の理由による。すなわち、余りにも頻繁に誤差軽減処理を行うと、ゲーム機本来の仕事であるゲーム処理に負担をかけ過ぎることになるし、拍毎にテンポ調整を行なうことによって、人間の耳にはテンポ変化が自然に聞こえるからである。
【００７９】
なお、ループ再生の場合には、既に説明したように、１拍毎のサンプル数情報に加え、ストリーミングＢＧＭのループの開始サンプル値および終了サンプル値、さらにシーケンスＢＧＭのループ開始拍数およびループ終了拍数の情報を持たせることにより、ループを繰り返した場合の計算を正確に行なうことができる。
【００８０】
このように、シーケンスＢＧＭとストリーミングＢＧＭの同期がとれるようになるので、双方の演奏形式のよい部分を組み合わせた楽曲（ＢＧＭ）を演奏できる。たとえば、高音質なストリーミングＢＧＭの上に、シーケンスＢＧＭによる演奏トラックを追加することができる。また、大部分の演奏パートをストリーミング形式にしておくことにより、シーケンスの演奏処理（シーケンス解析処理および波形合成処理）を省くことができるため、シーケンス再生にかかるＣＰＵやＤＳＰの占有率を軽減することができる。
【００８１】
また、シーケンスデータを、ゲームの時系列制御用データとして捉えれば、ストリーミングＢＧＭに完全同期してゲーム中のイベントやオブジェクトの挙動を制御することができる。
【図面の簡単な説明】
【００８２】
【図１】図１はこの発明の一実施例のゲームシステムを示す図解図である。
【図２】図２は図１実施例のゲーム機を詳細に示すブロック図である。
【図３】図３は図２におけるメインメモリのメモリマップの一例を示す図解図である。
【図４】図４は図１実施例のＢＧＭ再生動作を示すフロー図である。
【図５】図５は図１実施例のストリーミング再生動作を示すフロー図である。
【図６】図６は図１実施例のシーケンス再生動作を示すフロー図である。
【図７】図７は図６実施例のデータ再生動作を示すフロー図である。
【符号の説明】
【００８３】
１０  …ゲームシステム
１２  …ゲーム機
２２  …コントローラ
３６  …ＣＰＵ
４０  …メインメモリ
５２  …ＤＳＰ
５４  …オーディオメモリ
６２  …オーディオＩ／Ｆ
６８  …プログラム記憶領域
７４  …サウンド処理プログラム
９２  …ストリーミングバッファ
９４  …シーケンスデータバッファ
【図１】
0004757704.tif 000002
【図２】
0004757704.tif 000003
【図３】
0004757704.tif 000004
【図４】
0004757704.tif 000005
【図５】
0004757704.tif 000006
【図６】
0004757704.tif 000007
【図７】
0004757704.tif 000008