図1は、本発明の実施例による楽音信号生成装置の構成図である。
楽音信号生成装置は、3つのゲームパッド1a,1b,1cとコンピュータ2と音源スピーカ4を有する。以下、ゲームパッド1a,1b,1cの個々をまたは全てをゲームパッド1という。
ゲームパッド1は、ユーザが演奏操作又は演奏設定を行うための操作キーを有する。ユーザは、ゲームパッド1を操作することにより、所望の演奏を行うことができる。コンピュータ2に、3つのゲームパッド1a,1b,1cが接続される場合を示すが、ゲームパッド1は、3つに限定されず、1つでもよい。
例えば、3つのゲームパッド1a,1b,1cを用意すれば、3人のユーザが合奏を行うことができる。1つのゲームパッド1には、1人のユーザが割り当てられる。
楽音信号生成装置は、バンド演奏を行うことができる。バンド演奏は、バック演奏とソロ演奏に分けることができる。バック演奏は、例えばドラム、ベース等のリズムパートに相当する。ソロ演奏は、例えばギター、サックス、キーボード等のメロディパートに相当する。
バック演奏は、コンピュータ2により自動演奏される。ソロ演奏は、ユーザがゲームパッド1を操作することにより行われる。各ゲームパッドには、所望のソロ演奏用楽器を割り当てることができる。例えば、ゲームパッド1aにギター、ゲームパッド1bにサックス、ゲームパッド1cにキーボードを割り当てることができる。
さらに、ユーザは、その楽器演奏のキャラクタを選択することができる。キャラクタは、例えば第1ギター又は第2ギター、男性プレーヤ又は女性プレーヤである。
コンピュータ2は、上記の楽器及びキャラクタ別に、例えば24個のフレーズの演奏データを記憶する。ユーザは、24個のフレーズの中から所定のフレーズ番号をゲームパッド1で順次切り替えて選択する。ユーザがフレーズ番号を選択すれば、そのフレーズ番号に応じたフレーズの演奏がリアルタイムで開始する。ユーザは、フレーズのシーケンス及び各フレーズの開始タイミングを指定するだけで、即興演奏を行うことができる。フレーズは、長さのいかんにかかわらず、ひとつながりのまとまりのある旋律、あるいはそのような楽音様態である。
コンピュータ2は、自動演奏によりバック演奏用楽音パラメータを出力し、ゲームパッド1の操作に応じてソロ演奏用楽音パラメータを出力する。それらの楽音パラメータは、音源3に供給される。
また、ユーザは、ゲームパッド1を用いて楽音に効果(例えばピッチベンド)を付与することができる。コンピュータ2は、ゲームパッド1の操作に応じて、効果パラメータを音源3に供給する。
音源3は、例えばPCM音源、FM音源、物理モデル音源、フォルマント音源等であり、上記の楽音パラメータや効果パラメータに応じて楽音信号を生成する。楽音信号は、スピーカ4に供給される。
スピーカ4は、楽音信号をデジタル形式からアナログ形式に変換し、楽音を発音する。バック演奏とソロ演奏の合奏音がスピーカ4から発せられる。
図2は、本実施例による楽音信号生成装置を用いた演奏例を示す。横軸は時間を示す。
バック演奏BKは、ユーザが曲の再生開始を指示することにより開始され、ゲームパッド1の操作とは無関係に進行する。
第1のユーザは、ゲームパッド1aを用いて、所定時間経過後に、フレーズ2の再生を指示し、その後にフレーズ1の再生を指示するものとする。その際、ユーザは、ゲームパッド1aを用いてピッチベンドイベントを発生させ、音高を変化させることもできる。
第2のユーザは、ゲームパッド1bを用いて、フレーズ3の再生を指示し、その後にフレーズ6の再生を指示するものとする。
第3のユーザは、ゲームパッド1cを用いて、フレーズ3、フレーズ10、フレーズ23、フレーズ1、フレーズ24の再生を順次指示するものとする。フレーズ24の再生時には、ユーザは、ゲームパッド1cを用いてピッチベンドイベントを発生させ、音高を変化させるものとする。
図3は、ゲームパッド1の操作ボタンを示す図である。ゲームパッド1は、「L」、「R」、「M」、「A」、「B」、「C」、「X」、「Y」、「Z」ボタン及び方向キー5を有する。
まず、演奏モードにおけるフレーズ番号の指定方法を説明する。フレーズ1〜24は、4種類に分けることができる。
フレーズ1〜6は、第1の楽曲フレーズであり、フレーズ7〜12は、第2の楽曲フレーズである。楽曲フレーズは、楽曲に必要なフレーズである。フレーズ13〜18は、第1の奏法フレーズであり、フレーズ19〜24は、第2の奏法フレーズである。奏法フレーズは、コードカッティング等の楽器特有の奏法のフレーズである。
フレーズ1〜6を指定するには、「L」ボタン及び「R」ボタンの両者を離したまま、表1に示すボタンを押す。フレーズ1〜6は、第1の楽曲フレーズであり、比較的短くて簡単なフレーズである。
フレーズ7〜12を指定するには、「L」ボタンを押しながら、表1に示すボタンを押す。フレーズ7〜12は、第2の楽曲フレーズであり、比較的長くて複雑なフレーズである。
フレーズ13〜18を指定するには、「R」ボタンを押しながら、表1に示すボタンを押す。フレーズ13〜18は、第1の奏法フレーズであり、基本的な奏法フレーズである。例えば、コードカッティング、アルペジオ、ミュートカッティング等である。
フレーズ19〜24を指定するには、「L」ボタン及び「R」ボタンを押しながら、表1に示すボタンを押す。フレーズ19〜24は、第2の奏法フレーズであり、特殊な奏法フレーズである。例えば、スライドダウン/アップ、トレモロアーム、ハーモニクス等である。
方向キー5は、十字形キーになっており、8方向に操作することができる。演奏モードにおいて、方向キー5を操作することにより、表2に示すように、楽音に効果を付与することができる。方向キー5を上方向に操作すればピッチベンドをアップさせ、下方向に操作すればピッチベンドをダウンさせることができる。方向キー5を右方向に操作すればテンポをアップさせ、左方向に操作すればテンポをダウンさせることができる。ピッチベンドやテンポの他、ボリュームや定位等を変化させてもよい。
また、ユーザが選択した楽器及びキャラクタに応じて、方向キー5の機能を自動的に設定してもよい。
「M」ボタンは、モード切り換えボタンであり、演奏モードや初期設定モード等を指定するためのボタンである。モードに応じて、他のボタンの機能を変更することもできる。
ユーザは、「M」ボタンを押すことにより、バック演奏の自動演奏を開始させることができる。また、ユーザは、フレーズを指定することにより、そのフレーズのソロ演奏を開始させることができる。
図4は、コンピュータ2の構成を示す図である。バス16には、CPU11、ROM12、RAM13、外部記憶装置15、操作子17、、表示器18、ゲームパッドインターフェース14、MIDIインターフェース19、通信インターフェース22が接続される。
ゲームパッドインターフェース14には、例えば3個のゲームパッド1a,1b,1cが接続される。ユーザがゲームパッド1を操作すると、操作情報がバス16上に供給される。
外部記憶装置15は、ハードディスクドライブ、フロッピディスクドライブ、CD−ROMドライブ等である。外部記憶装置は、複数曲の演奏データを記憶することができる。演奏データは、ソロ演奏データ及びバック演奏データを含む。
表示器18には、外部記憶装置15に記憶されている複数曲の演奏データを一覧表として表示することができる。ユーザは、曲の一覧表の中から、ゲームパッド1を用いて演奏曲を選択することができる。表示器18は、ソロ演奏やバック演奏等の設定情報を表示することもできる。
ユーザが演奏曲、楽器及びキャラクタを選択すると、外部記憶装置15内の演奏データは、RAM13にコピーされる。
また、表示器18には、演奏プレーヤの画像が表示される。画像は、静止画でも動画でもよい。例えば、表示器18には、バンド演奏を行う複数人のプレーヤが表示される。表示器上のプレーヤは、楽器を操作する動作やステージ上を動く動作を行う。
ROM12は、コンピュータプログラムおよび各種パラメータを記憶している。CPU11は、ROM12に記憶されているコンピュータプログラムに従い、楽音パラメータや効果パラメータの生成等を行う。RAM13は、レジスタ、フラグ、バッファを含むCPU11のワーキングエリアを有する。
タイマ20は、時間情報をCPU11に供給する。CPU11は、その時間情報に応じて、割り込み処理を行うことができる。
MIDIインターフェース19は、上記の楽音パラメータや効果パラメータをMIDI形式で音源3(図1)に出力する。音源は、コンピュータ2に内蔵してもよい。
外部記憶装置15は動作プログラムや演奏データ等の各種データを記憶することができる。ROM12に動作プログラムが記憶されていない場合、外部記憶装置15に動作プログラムを記憶させておき、それをRAM13に読み込むことにより、ROM12に動作プログラムを記憶している場合と同様の動作をCPU11にさせることができる。このようにすると、動作プログラムの追加やバージョンアップ等が容易に行える。CD−ROM(コンパクトディスク−リード・オンリィ・メモリ)ドライブは、CD−ROMに記憶されている動作プログラムや各種データを読み出す装置である。読み出した動作プログラムや各種データは、ハードディスクにストアされる。動作プログラムの新規インストールやバージョンアップ等が容易に行える。なお、CD−ROMドライブ以外にも、光磁気ディスク(MO)装置等、様々な形態のメディアを利用するための装置を設けるようにしてもよい。
通信インターフェース22はLAN(ローカルエリアネットワーク)やインターネット、電話回路等の通信ネットワーク24に接続されており、該通信ネットワーク24を介して、サーバコンピュータ23と接続される。外部記憶装置15内に上記動作プログラムや各種データが記憶されていない場合、サーバコンピュータ23からプログラムやデータをダウンロードすることができる。クライアントとなるコンピュータ2は、通信インターフェース22及び通信ネットワーク24を介してサーバコンピュータ23へと動作プログラムやデータのダウンロードを要求するコマンドを通信する。ユーザは、操作子17を用いて当該コマンドを通信することができる。サーバコンピュータ23は、このコマンドを受け、要求された動作プログラムやデータを、通信ネットワーク24を介してコンピュータ2へと配信し、コンピュータ2が通信インターフェース22を介して、これらプログラムやデータを受信して外部記憶装置15に蓄積することにより、ダウンロードが完了する。
なお、本実施例は、本実施例に対応する動作プログラムや各種データをインストールした市販のパーソナルコンピュータ等によって、実施させるようにしてもよい。その場合には、本実施例に対応する動作プログラムや各種データを、CD−ROMやフロッピディスク等の、パーソナルコンピュータが読み込むことができる記憶媒体に記憶させた状態で、ユーザーに提供してもよい。そのパーソナルコンピュータ等が、LAN、インターネット、電話回線等の通信ネットワークに接続されている場合には、通信ネットワークを介して、動作プログラムや各種データ等をパーソナルコンピュータ等に提供してもよい。
図5(A)は、外部記憶装置又はRAMに記憶されるソロ演奏データ31を示す。ソロ演奏データ31は、曲、楽器、キャラクタ毎に設けられる。例えば、ギター用演奏データとサックス用演奏データは異なる。ソロ演奏データ31は、フレーズ1〜24の演奏データを有する。
ソロ演奏データ31は、スタンダードMIDIファイル形式で外部記憶装置に記憶される。スタンダードMIDIファイルは、MIDI規格に準拠した標準的なファイル形式である。スタンダードMIDIファイルの場合、演奏データ31は、図5(C)に示すように、イベント30aとインターバル30bを1単位として構成される。イベント30aは、例えばノートオンイベントである。インターバル30bは、当該イベント発生から次のイベント発生までの時間間隔である。
図5(B)は、外部記憶装置又はRAMに記憶されるソロ画像データ32を示す。ソロ画像データ32は、曲、楽器、キャラクタ毎に設けられる。ソロ画像データ32は、フレーズ1〜24の画像データを有し、演奏データ31(図5(A))に対応したデータである。各フレーズの演奏データ31と画像データ32は、再生時間が同じであり、フレーズの開始が指示されると両者はほぼ同時に再生開始される。
図6(A)は、外部記憶装置又はRAMに記憶されるバック演奏データ33を示す。バック演奏データ33は、曲毎に設けられる。1曲につき、複数種類のバック演奏データ33を設けてもよい。バック演奏データ33は、フレーズに別れておらず、連続して自動演奏される1曲分のデータである。バック演奏データ33も、スタンダードMIDIファイル形式で外部記憶装置に記憶される。
図6(B)は、外部記憶装置又はRAMに記憶されるバック演奏画像データ34を示す。バック演奏画像データ34は、1曲分の画像データを有し、演奏データ33(図6(A))に対応したデータである。バック演奏画像データ34は、曲毎に設けても、1曲につき複数種類設けてもよい。
図7(A)は、RAMに記憶されるフレーズ開始アドレス群35を示す。ソロ演奏データ31(図5(A))は、フレーズ1〜24を有する。開始アドレス群35は、各フレーズの開始アドレスを有する。ユーザがフレーズ番号を指定したときには、この開始アドレスを参照することにより、図5(A)に示す所定フレーズの演奏データ31の再生を行うことができる。
図7(B)は、RAMに記憶される画像データ開始アドレス群36を示す。ソロ画像データ32(図5(B))は、フレーズ1〜24を有する。開始アドレス群36は、各フレーズの画像データ開始アドレスを有する。ユーザがフレーズ番号を指定したときには、この開始アドレスを参照することにより、図5(B)に示す所定フレーズの画像データ32の再生を行うことができる。
図8(A)は、外部記憶装置又はRAMに記憶される補間演奏データ37を示す。補間演奏データ37は、フレーズが切り換わる際に2つのフレーズ間を補間する演奏データである。補間演奏データ37を用いることにより、あるフレーズから次のフレーズにスムーズに移行することができる。補間演奏データ37は、例えばグリッサンドやフィルイン等のデータである。補間演奏データ37についても、図7(A)と同様な開始アドレス群が用意される。
図8(B)は、外部記憶装置又はRAMに記憶される補間画像データ38を示す。補間画像データ38は、フレーズが切り換わる際に2つのフレーズ間を補間する画像データである。補間画像データ38を用いることにより、あるフレーズから次のフレーズに画像をスムーズに移行することができる。補間画像データ38についても、図7(B)と同様な開始アドレス群が用意される。
図9は、CPUが行う全体処理を示すフローチャートである。ステップSA1では、演奏曲を決定する。演奏曲は、ユーザがゲームパッドを用いて選択することができる。
ステップSA2では、ソロプレーヤを決定する。ユーザは、ゲームパッドを用いてソロプレーヤを選択する。ユーザが複数の場合は、各ユーザが異なるソロプレーヤを選択することできる。選択されたソロプレーヤが、自己のゲームパッドに割り当てられる。ソロプレーヤの決定は、楽器の決定とキャラクタの決定を含む。
ステップSA3では、バック演奏を決定する。ステップSA1で曲が決まると、ユーザは、その曲用のバック演奏の中から所望のものを選択することができる。
ステップSA4では、演奏を行う。バック演奏は自動演奏され、ソロ演奏はユーザの操作により演奏される。ユーザは、ゲームパッドを用いて、所望のフレーズのソロ演奏を行うことができる。その際、ピッチベンド等の効果を付与することもできる。詳細は、後に説明する。
ステップSA5では、上記の演奏操作情報を保存するか否かをユーザに問い合わせる。ユーザが保存を希望すれば、ステップSA6で保存処理を行い、終了する。ユーザが保存を希望しなければ、保存せずに終了する。ステップSA6の保存処理は、フレーズのシーケンス、発生タイミング及び効果付与情報等を外部記憶装置に記録する処理である。
図10は、CPUが行う割り込み処理を示すフローチャートである。CPUは、タイマから供給される時間情報に応じて、所定時間間隔で割り込み処理を行う。この処理により、時間が設定され、バック演奏及びソロ演奏が行われる。ステップSB1では、レジスタintervalの値をデクリメントし、割り込み前の処理に戻る。レジスタintervalには、図5(C)に示すインターバル30bに応じた時間情報が格納され、その後、ステップSB1でデクリメントされる。レジスタintervalが0になったところで、次のイベントを再生すればよい。
なお、タイマから供給される時間情報の代わりに、外部からMIDIインターフェースに供給されるMIDIクロック等を用いて、上記の割り込み処理を行ってもよい。
図11は、バック演奏処理を示すフローチャートである。ステップSC1では、レジスタintervalが0であるか否かをチェックする。0でないときには、未だイベントの再生タイミングでないことを意味するので、noの矢印に従い、処理を終了する。
レジスタintervalが0であるときには、イベントの再生タイミングであることを意味するので、yesの矢印に従い、ステップSC2へ進む。
ステップSC2では、バック演奏用カレントポインタ(読み出しポインタ)から1タイミング分だけバック演奏データ33(図6(A))を読み出して再生する。具体的には、演奏データ33を音源に供給し、スピーカから発音させる。続いて、読み出しポインタを、次のイベントのアドレスにセットする。
ステップSC3では、バック演奏画像用カレントポインタ(読み出しポインタ)から1タイミング分だけバック演奏用画像データ34(図6(B))を読み出して表示器に描画する。続いて、読み出しポインタを、次のイベント用画像データのアドレスにセットする。
ステップSC4では、インターバル30b(図5(C))とレジスタtempoとから新たなインターバルを算出し、そのインターバルをレジスタintervalにセットする。インターバル30bは、現在のイベントから次のイベントまでの時間間隔を示す。レジスタtempoは、曲のテンポ値を格納し、ゲームパッドを用いて変更可能である。その後、ステップSC1へ戻り、上記の処理を繰り返す。
図12は、第1のキーイベント処理を示すフローチャートである。この処理は、上記の表1に従い、ゲームパッドの操作に応じてフレーズ番号1〜24を決定する処理である。フレーズ番号1〜24に応じて、レジスタphraseに0〜23が記憶される。レジスタphraseには、フレーズ番号−1の値が格納される。
ステップSD1では、「L,R,A,B,C,X,Y,Z」のうちのいずれかが押されたか否かをチェックする。押されたときには、yesの矢印に従い、ステップSD2へ進む。
ステップSD2では、「L」ボタンが押されたか否かをチェックする。押されたときには、ステップSD13においてレジスタoffsetの値を6だけ増加し、処理を終了する。すなわち、「L」ボタンを押せば、フレーズ7〜12を選択可能であることを意味する。レジスタoffsetの初期値は0である。
「L」ボタンが押されていないときには、ステップSD3で「R」ボタンが押されたか否かをチェックする。押されたときには、ステップSD14においてレジスタoffsetの値を12だけ増加し、処理を終了する。すなわち、「R」ボタンを押せば、フレーズ13〜18を選択可能であることを意味し、「L」ボタンと「R」ボタンを押せば、まず6が加算され続いて12が加算され、フレーズ19〜24を選択可能であることを意味する。
「R」ボタンが押されていないときには、ステップSD4で「A」ボタンが押されたか否かをチェックする。押されたときには、ステップSD15においてレジスタoffsetに0を加算した値をレジスタphraseに格納し、ステップSD21へ進む。
「A」ボタンが押されていないときには、ステップSD5で「B」ボタンが押されたか否かをチェックする。押されたときには、ステップSD16においてレジスタoffsetに1を加算した値をレジスタphraseに格納し、ステップSD21へ進む。
「B」ボタンが押されていないときには、ステップSD6で「C」ボタンが押されたか否かをチェックする。押されたときには、ステップSD17においてレジスタoffsetに2を加算した値をレジスタphraseに格納し、ステップSD21へ進む。
「C」ボタンが押されていないときには、ステップSD7で「X」ボタンが押されたか否かをチェックする。押されたときには、ステップSD18においてレジスタoffsetに3を加算した値をレジスタphraseに格納し、ステップSD21へ進む。
「X」ボタンが押されていないときには、ステップSD8で「Y」ボタンが押されたか否かをチェックする。押されたときには、ステップSD19においてレジスタoffsetに4を加算した値をレジスタphraseに格納し、ステップSD21へ進む。
「Y」ボタンが押されていないときには、「Z」ボタンが押されたことを意味するので、ステップSD20においてレジスタoffsetに5を加算した値をレジスタphraseに格納し、ステップSD21へ進む。
ステップSD21では、レジスタphraseが示すフレーズ番号のソロ演奏データの開始アドレス35(図7(A))を読み出しポインタtop_pointer_to_phraseにセットする。
次に、レジスタphraseが示すフレーズ番号のソロ画像データの開始アドレス36(図7(B))を読み出しポインタtop_pointer_to_phrase_graphicにセットする。
次に、フレーズ切り替えのフラグを1にする。その後、処理を終了する。ステップSD1で「L,R,A,B,C,X,Y,Z」のうちのいずれも押されていないときには、noの矢印に従い、ステップSD9へ進む。
ステップSD9では、「L,R」のどちらかが離されたか否かをチェックする。離されていないときにはnoの矢印に従い処理を終了し、離されたときにはyesの矢印に従いステップSD10へ進む。
ステップSD10では、「L」が離されたか否かをチェックする。「L」が離されたときには、yesの矢印に従い、ステップSD12でレジスタoffsetから6を減算して、処理を終了する。「L」が離されていないときには、「R」が離されたことを意味するので、noの矢印に従い、ステップSD11でレジスタoffsetから12を減算して、処理を終了する。
以上の処理により、レジスタphraseにフレーズ番号が格納され、演奏データ及び画像データの読み出しポインタがセットされる。
図13は、第2のキーイベント処理を示すフローチャートである。この処理は、上記の表2に従い、ゲームパッドの操作に応じて楽音に効果を付与する処理である。レジスタpitchbendは、ピッチベンド値を格納する。レジスタtempoは、テンポ値を格納する。
ステップSE1では、「↑」キーがオンになっているか否かをチェックする。オンになっているときには、ピッチベンドのアップが指示されたことを意味するので、ステップSE5でレジスタpitchbendをインクリメントし、ステップSE9へ進む。
ステップSE2では、「↓」キーがオンになっているか否かをチェックする。オンになっているときには、ピッチベンドのダウンが指示されたことを意味するので、ステップSE6でレジスタpitchbendをデクリメントし、ステップSE9へ進む。
ステップSE9では、レジスタpitchbendの値をピッチベンドデータとして音源に送信し、「↑」キー又は「↓」キーの情報を表示処理用ソロ画像モジュールに送信する。音源は、ピッチベンドデータに応じて楽音信号を生成する。表示器には、ピッチベンドデータに応じた画像が表示される。その後、処理を終了する。
ステップSE3では、「→」キーがオンになっているか否かをチェックする。オンになっているときには、テンポのアップが指示されたことを意味するので、ステップSE7でレジスタtempoをインクリメントし、処理を終了する。
ステップSE4では、「←」キーがオンになっているか否かをチェックする。オンになっているときには、テンポのダウンが指示されたことを意味するので、ステップSE8でレジスタtempoをデクリメントし、処理を終了する。
レジスタtempoの値は、バック演奏及びソロ演奏のテンポ値を示す。バック演奏のテンポは、上記の図11のステップSC4で決められる。ソロ演奏のテンポは、後に説明する図14のステップSF6で決められる。
上記の方向キーの操作は、オートリピート機能を有する。すなわち、キーを押し続ければ、上記の処理を繰り返し、ピッチベンド値又はテンポ値が変化し続ける。
なお、ピッチベンド値又はテンポ値は、1づつ変化する場合に限定されず、2以上のステップで変化させてもよい。
図14は、ソロ演奏処理を示すフローチャートである。ステップSF1では、フレーズ切り替えのフラグが1か否かをチェックする。ユーザがフレーズの切り替えを指示すると、上記の図12のステップSD21でフレーズ切り替えのフラグが1になる。フラグが1であれば、yesの矢印に従い、ステップSF8へ進む。
ステップSF8では、ポインタtop_pointer_to_phrase_graphicが示す画像データと現在描画中の画像データを比較する。すなわち、切り替え前の画像データと切り替え後の画像データとを比較する。ポインタtop_pointer_to_phrase_graphicは、図12のステップSD21で切り替え後の読み出しポインタとしてセットされている。その後、ステップSF9へ進む。
なお、演奏の開始時には、切り替え前のフレーズが存在しないので、ステップSF8及びSF9を素通りして、ステップSF10へ進む。
ステップSF9では、連続再生可能か否かをチェックする。例えば、切り替え前の画像データと切り替え後の画像データとが大きく異なるときには、画像の切り替えが不自然になるので、連続再生不可能と判断し、補間を行うためステップSF11へ進む。一方、画像データが大きく異ならないときには、連続再生可能であると判断し、ステップSF10へ進む。
ステップSF10では、ソロ演奏用読み出しポインタとして、ポインタtop_pointer_to_phraseをセットし、ソロ演奏用画像読み出しポインタとして、ポインタtop_pointer_to_phrase_graphicをセットする。こららのポインタは、図12のステップSD21で決定済みである。続いて、フレーズ切り替えのフラグを0にし、フレーズ切り替え処理が終了したことを記録する。その後、ステップSF4へ進む。
ステップSF4では、ソロ演奏用読み出しポインタから1タイミング分だけソロ演奏データ31(図5(A))を読み出して再生する。具体的には、演奏データ31を音源に供給し、スピーカから発音させる。続いて、読み出しポインタを、次のイベントのアドレスにセットする。フレーズ終了のときには、次のイベントがないので、読み出しポインタにエンドマークをセットする。
ステップSF5では、ソロ演奏用画像読み出しポインタから1タイミング分だけソロ演奏用画像データ32(図5(B))を読み出して表示器に描画する。続いて、読み出しポインタを、次のイベント用画像データのアドレスにセットする。フレーズ終了のときには、次のイベントがないので、読み出しポインタにエンドマークをセットする。
ステップSF6では、インターバル30b(図5(C))とレジスタtempoとから新たなインターバルを算出し、そのインターバルをレジスタintervalにセットする。インターバル30bは、現在のイベントから次のイベントまでの時間間隔を示す。レジスタintervalは、バック演奏及び各ソロパート毎に別に設けられるが、説明の簡単のため、全てレジスタintervalで表す。レジスタtempoは、曲のテンポ値を格納し、ゲームパッドを用いて変更可能である。一人のユーザがテンポの変更を指示した場合には、そのユーザが演奏するソロ演奏パートのテンポのみを変更してもよいし、全てのソロ演奏パートのテンポを変更してもよい。その後、ステップSF1へ戻る。
上記のステップSF9で連続再生可能でないと判断されたときには、補間を行うため、ステップSF11へ進む。
ステップSF11では、現在補間中であるか否かをチェックする。すなわち、補間用演奏データ及び補間用画像データを再生中であるか否かをチェックする。補間中でないときにはnoの矢印に従いステップSF12へ進み、補間中であるときにはyesの矢印に従いステップSF15へ進む。
ステップSF12では、連続再生不可能を示すエラーコードより補間画像データ用ポインタ(開始アドレス)及び補間演奏データ用ポインタ(開始アドレス)を得る。
ステップSF13では、ソロ演奏用読み出しポインタとして、上記の補間演奏データ用ポインタをセットし、ソロ演奏用画像読み出しポインタとして、上記の補間画像データ用ポインタをセットする。
ステップSF14では、補間フラグを1にセットする。この補間フラグを参照することにより、上記のステップSF11で補間中であるか否かをチェックすることができる。その後、ステップSF4へ進み、上記の処理を行う。
上記のステップSF11で補間中であると判断されたときには、ステップSF15へ進む。
ステップSF15では、補間が終了したか否かをチェックする。全ての補間データの読み出しが終了すれば、補間が終了したことを意味する。補間が終了していないときには、ステップSF4へ進み、上記の処理を行う。補間が終了しているときには、ステップSF16で補間フラグを0にクリアし、ステップSF1へ戻る。
ステップSF1でフレーズ切り替えのフラグが0であると判断されると、フレーズの切り替えが行われていないことを意味するので、ステップSF2へ進む。
ステップSF2では、レジスタintervalが0であるか否かをチェックする。0でないときには、未だイベントの再生タイミングでないことを意味するので、noの矢印に従い、ステップSF1へ戻る。
レジスタintervalが0であるときには、イベントの再生タイミングであることを意味するので、yesの矢印に従い、ステップSF3へ進む。
ステップSF3では、フレーズが終了したか否かをチェックする。フレーズが終了していないときには、noの矢印に従い、ステップSF4へ進み、上記の処理を行う。フレーズが終了しているときには、yesの矢印に従い、ステップSF7へ進む。
ステップSF7では、演奏曲が終了したか否かをチェックする。演奏曲が終了していないときには、noの矢印に従い、ステップSF1へ戻る。演奏曲が終了しているときには、yesの矢印に従い、処理を終了する。
本実施例によれば、ユーザがゲームパッドを用いてフレーズを切り替えて選択するだけで、簡単に即興演奏を行うことができる。フレーズを指定して演奏を行うことにより、鍵盤を用いて演奏を行う場合に比べ、簡単な演奏操作ですむ。
ユーザは、楽器や音楽の知識や技術がなくても、ゲームパッドのボタンを押すタイミングを制御するだけで、簡単にソロ演奏や合奏を行うことができる。
バック演奏は自動演奏されるので、ユーザがゲームパッドを用いてソロ演奏を行えば、簡単に合奏を行うことができる。ゲームパッドを複数用意すれば、複数のユーザが合奏を行うことができる。
なお、ゲームパッドの代わりに、鍵盤やコンピュータ用キーボードを用いてもよい。その場合も、ユーザはフレーズを選択するだけでよい。
更に発音ボタンを設け、これを押しているときにパターン(演奏データ)を再生させ、離すと停止させることもできる。これらの操作方法によりバリエーション豊かな演奏が可能になる。また離した後に再度発音ボタンを押した場合、停止した箇所から再スタートさせてもよいし、パターンの最初から開始させてもよい。また設定により両者を切り替えたり、更に他のボタンを設けて逐次切り替えられるようにすると、さらにバリエーションを増やすことができる。前述の発音ボタンをパターン切り替えスイッチと兼用していても構わない。
以上実施例に沿って本発明を説明したが、本発明はこれらに制限されるものではない。例えば、種々の変更、改良、組み合わせ等が可能なことは当業者に自明であろう。
1 ゲームパッド、 2 コンピュータ、3 音源、 4 スピーカ、 5 方向キー、 11 CPU、 12 ROM、 13 RAM、 14 ゲームパッドインタフェース、 15 外部記憶装置、 16 バス、17 操作子、 18 表示器、 19 MIDIインターフェース、 20 タイマ、 22 通信インターフェース、 23 サーバコンピュータ、 24 通信ネットワーク、30a イベント、30b インターバル、 31 ソロ演奏データ、 32 ソロ演奏用画像データ、 33 バック演奏データ、 34 バック演奏用画像データ、35 演奏データ開始アドレス群、36 画像データ開始アドレス群、37 補間用演奏データ、 38 補間用画像データ、 BK バック演奏