以下、本発明の実施の形態を図面に基づいて詳細に説明する。
図1は、本発明の一実施の形態に係る演奏補助装置の概略構成を示すブロック図である。
同図に示すように、本実施の形態の演奏補助装置は、音声を入力するためのマイクロフォン、鍵盤等の演奏操作子および各種スイッチ等の設定操作子からなる入力操作部1と、装置全体の制御を司るCPU2と、該CPU2が実行する制御プログラムや各種テーブルデータ等を記憶するROM3と、前記演奏操作子から入力された、コード情報を含む演奏情報、各種入力情報および演算結果等を一時的に記憶するRAM4と、前記制御プログラムを含む各種アプリケーションプログラムや各種伴奏スタイルデータ、各種データ等を記憶する記憶装置5と、各種情報等を表示する、たとえばLCD(liquid crystal display)およびLED(light emitting diode)等を備えた表示装置6と、外部MIDI(musical instrument digital interface)機器等の外部機器100を接続し、この外部機器100とデータの送受信を行う通信インターフェース(I/F)7と、前記演奏操作子から入力された演奏情報や、前記記憶装置5に記憶されたいずれかの伴奏スタイルデータ(に含まれる伴奏パターン)を再生して得られた演奏情報等を楽音信号に変換する音源回路8と、該音源回路8からの楽音信号に各種効果を付与するための効果回路9と、該効果回路9からの楽音信号を音響に変換する、たとえば、DAC(digital-to-analog converter)やアンプ、スピーカ等のサウンドシステム10とにより構成されている。
上記構成要素1〜9は、バス11を介して相互に接続され、通信I/F7には外部機器100が接続され、音源回路8には効果回路9が接続され、効果回路9にはサウンドシステム10が接続されている。
記憶装置5は、たとえば、フレキシブルディスク(FD)、ハードディスク(HD)、CD−ROM、DVD(digital versatile disc)、光磁気ディスク(MO)および半導体メモリなどの記憶媒体とその駆動装置である。記憶媒体は駆動装置から着脱可能であってもよいし、記憶装置5自体が本実施の形態の演奏補助装置から着脱可能であってもよい。あるいは、記憶媒体も記憶装置5も着脱不可能であってもよい。なお記憶装置5(の記憶媒体)には、前述のように、CPU2が実行する制御プログラムも記憶でき、ROM3に制御プログラムが記憶されていない場合には、この記憶装置5に制御プログラムを記憶させておき、それをRAM4に読み込むことにより、ROM3に制御プログラムを記憶している場合と同様の動作をCPU2にさせることができる。このようにすると、制御プログラムの追加やバージョンアップ等が容易に行える。
また記憶装置5は、前述のように各種伴奏スタイルデータを予め記憶している。
図2は、その中のある1つの伴奏スタイルデータ21のフォーマットの一例を示す図である。図示例の伴奏スタイルデータ21は、伴奏パターン群21aおよびコード進行パターン群21bによって構成されている。そして、伴奏パターン群21aは、複数セクションの伴奏パターンによって構成され、コード進行パターン群21bは、複数セクションのコード進行パターンによって構成されている。
複数セクションの伴奏パターンは、具体的には、伴奏曲の「メイン」での使用に適した伴奏パターンと、伴奏曲中「フィルイン」としての使用に適した伴奏パターンと、伴奏曲の「イントロ」での使用に適した伴奏パターンと、伴奏曲の「エンディング」での使用に適した伴奏パターンとによって構成されている。なお、「メイン」および「フィルイン」用の伴奏パターンとして、名称の異なる複数の伴奏パターンが図示されているが、これは、同種の伴奏パターンにも内容の異なる伴奏パターンがあることを意味している。
各セクションの伴奏パターンはそれぞれ、ノートオン/オフ、ノートナンバ、ベロシティ等のデータを含むノートイベントデータ、ピッチベンドデータやボリュームデータ等のイベントデータと、該イベントデータの再生タイミングを示すタイミングデータとを一組とする複数組からなるシーケンスによって構成され、その末尾にはエンドデータが付加されている。そして各イベントデータには、そのイベントデータが属するパート(本実施の形態では「ベースパート」、「コードパート」および「リズムパート」のいずれか)を示すパート情報が付与されている。つまり、各セクションの伴奏パターンはそれぞれ、複数パートのイベントデータを混在させて再生順に配置するというデータ構造を採っている。もちろん、このデータ構造は一例に過ぎず、次に説明するコード進行パターンのように、パート毎に独立したデータ構造を採るようにしてもよい。また各セクションの伴奏パターン(の各ノートイベントの音高(ノートナンバ))は、所定のコード、たとえば「Cメジャコード」を基準にして設定されている。したがって、いずれかの伴奏パターンに基づいて実際に伴奏音を生成する際に、ユーザが指定したコードが「Cメジャコード」でない場合には、当該伴奏パターン内の各ノートイベントの音高を指定されたコードに合った音高に変換する必要がある。一方、各タイミングデータはいずれも、所定の音符長(たとえば、384分音符長)を単位とする整数値で設定されている。タイミングデータは、上述のようにその直後に配置されたイベントデータの再生タイミングを規定するが、その主な規定方法として、隣接するイベント間の時間間隔(相対時間)を規定する方法と、当該伴奏パターンの先頭からの経過時間(絶対時間)を規定する方法がある。本実施の形態では説明を簡単化するために、後者の方法を採ることにする。
複数セクションのコード進行パターンは、具体的には、「メイン」に属する伴奏パターンの再生中に参照されるコード進行パターンと、「フィルイン」に属する伴奏パターンの再生中に参照されるコード進行パターンとによって構成されている。なお、「メイン」用のコード進行パターンは、伴奏パターンと同様に、「メインA」および「メインB」にそれぞれ対応するものがあるものの、「フィルイン」用のコード進行パターンは、伴奏パターンと異なり、各「フィルイン」に共通した1種類しかなく、さらに「イントロ」および「エンディング」用のコード進行パターンは1種類も含まれていない。つまり、伴奏パターンとコード進行パターンとは、常に1対1に対応付けられている訳ではない。
各セクションのコード進行パターンはそれぞれ、各パートおよび各コードタイプ別のコード進行パターンによって構成されている。また、各パートおよび各コードタイプ別のコード進行パターンはそれぞれ、コードデータと、該コードデータの読み出しタイミングを示すタイミングデータとを一組とする複数組からなるシーケンスによって構成され、その末尾にはエンドデータが付加されている。さらに、各パートおよび各コードタイプ別のコード進行パターンにはそれぞれ、主和音の根音(たとえば“C”)が設定されており、当該各コード進行パターン内の各コードデータは、入力されたコードの根音に基づいてシフトされる。なおコードデータは、根音+コードタイプによって表されるものとする。またタイミングデータは、伴奏パターンのタイミングデータに対して、規定するタイミングの名称が異なっている(前者の名称が「読み出しタイミング」であるのに対して、後者の名称は「再生タイミング」である)が、実際の作用は名称のように異ならない。このように名称を異ならせたのは、伴奏パターンは再生の対象にするのに対して、コード進行パターンは参照の対象にするものの再生の対象にしないからである。
さらに伴奏スタイルデータ21は、ヘッダデータ(図示せず)を備えている。ヘッダデータは、たとえば、伴奏スタイルデータに関する情報、具体的には、伴奏スタイルの名称、各セクションの名称や長さ(小節数)、各コード進行パターンの名称、オリジナルコード(テンション度数を含む)、拍子および(オリジナル)テンポなどを含んでいる。
伴奏スタイルデータは、ロック、ポップスおよびジャズ等の曲のジャンル毎に複数定義されている。ただし、各伴奏スタイルデータのデータフォーマットは、上記伴奏スタイルデータ21のそれと同じとは限らない。たとえば、伴奏パターンはセクション毎に分かれておらず、伴奏スタイルについて1つのみ設けられていたり、伴奏パターンはセクション毎に分かれているものの、コード進行パターンが1つも設けられていなかったりというようにである。ただし、各伴奏スタイルデータはいずれも、コード進行パターンを含まないことはあるものの、少なくとも1つの伴奏パターンを含んでいるものとする。
また伴奏スタイルデータは、前述のように記憶装置5内に複数種類記憶されているが、ユーザは、たとえば曲のジャンルあるいは伴奏スタイルの名称を指定することで、その中からいずれかを自由に選択することができるようになっている。そして、選択対象の伴奏スタイルデータが複数セクションの伴奏パターンを備えている場合には、ユーザは、たとえばセクションの名称を指定することで、いずれかのセクションの伴奏パターンを選択して再生することができるようになっている。
なお本実施の形態では、各種伴奏スタイルデータは、演奏補助装置(の記憶装置5)内に予めすべて記憶されているとしたが、これに限らず、そのうちの一部は演奏補助装置内に予め記憶され、それ以外の伴奏スタイルデータが選択された場合には、その伴奏スタイルデータが、たとえば外部機器100に記憶されていれば、その伴奏スタイルデータを、通信I/F7を介して演奏補助装置内に取り込んで使用するようにしてもよい。
通信I/F7には、図示例では外部機器100が接続されているが、これに限られず、たとえばLAN(local area network)やインターネット、電話回線等の通信ネットワークを介して、サーバコンピュータが接続されるようにしてもよい。この場合、記憶装置5に上記各プログラムや各種パラメータが記憶されていなければ、通信I/F7はサーバコンピュータからプログラムやパラメータをダウンロードするために用いられる。クライアントとなる演奏補助装置は、通信I/F7および通信ネットワークを介してサーバコンピュータへとプログラムやパラメータのダウンロードを要求するコマンドを送信する。サーバコンピュータは、このコマンドを受け、要求されたプログラムやパラメータを、通信ネットワークを介して演奏補助装置へと配信し、演奏補助装置が通信I/F7を介して、これらプログラムやパラメータを受信して記憶装置5に蓄積することにより、ダウンロードが完了する。
なお本実施の形態の演奏補助装置は、上述の構成から分かるように電子鍵盤楽器上に構築されたものであるが、これに限らず、鍵盤を外部接続した汎用的なパーソナルコンピュータ上に構築してもよい。
以上のように構成された演奏補助装置が実行する制御処理を、まず図3を参照してその概要を説明し、次に図4a、図4bおよび図5を参照して詳細に説明する。
図3は、本実施の形態の演奏補助装置の制御構成を示すブロック図である。
演奏補助処理(図4aおよび図4bを用いて後述)が起動された状態で、ユーザが曲のジャンルを選択すると、前記CPU2は、選択されたジャンルに対応する伴奏スタイルデータを記憶装置5から読み出して、前記RAM4上に確保した伴奏スタイルデータ格納領域(図示せず)に格納する。このとき、選択された1つのジャンルについて複数の伴奏スタイルデータが記憶されている場合があるが、この場合には、当該複数の伴奏スタイルデータの、たとえば名称を前記表示装置6上に一覧表示させ、その中からユーザが選択した名称のものを読み出すようにすればよい。
次にCPU2は、選択された伴奏スタイルデータ、つまり伴奏スタイルデータ格納領域に格納された伴奏スタイルデータからコード感情報を抽出する(ブロック2a)。「コード感情報」とは、生成するハーモニー音のコード感を生成する伴奏音のコード感に合わせるために利用する情報であり、具体的には、コード進行パターンやテンション度数などである。なお、伴奏スタイルデータから「コード感情報」を抽出する具体的な方法については、後述する。
そしてユーザが、たとえば前記入力操作部1に設けられたスタートスイッチ(図示せず)を押すことにより演奏開始を指示すると、CPU2は、選択された伴奏スタイルデータ内の伴奏パターンの再生を開始する。このとき、選択された伴奏スタイルデータが複数の伴奏パターンを含んでいることもある(前記図2の伴奏スタイルデータ21参照)が、この場合には、いずれか1つの伴奏パターンが再生の対象として選択されているものとする。伴奏パターンの再生が進み、再生タイミングがノートイベントに到達すると、CPU2は、このノートイベントを読み出し、その音高を、ユーザが、たとえば前記入力操作部1に含まれる鍵盤を介して入力したコード情報に基づいて変換し、変換後の音高のノートイベントを前記音源回路8に送信する。これにより音源回路8は、変換後の音高の伴奏音(の楽音信号)を生成して(受信したノートイベントがノートオンデータを含む場合)、前記効果回路9に出力する(ブロック8a)。効果回路9は、入力された楽音信号に適宜効果を付与して、内蔵の信号出力制御回路(図示せず)に出力する(ブロック9a)。
一方、ユーザが、たとえば入力操作部1に含まれるマイクロフォンから自身の歌声によるリード音を入力すると、CPU2は、入力されたリード音(アナログ音声信号)をデジタル化して、リード音情報(データ)として、RAM4に確保したリード音データ格納領域(図示せず)に格納する。CPU2は、リード音データ格納領域に格納されたリード音データから公知の方法によりピッチ(音高)を検出してハーモニー音の生成に用いるとともに、当該リード音データを音源回路8に送信する。これにより、音源回路8は、当該リード音データに対応するリード音(の楽音信号)を生成して効果回路9に出力する(ブロック8c)。効果回路9は、入力された楽音信号に適宜効果を付与して、信号出力制御回路に出力する(ブロック9c)。
CPU2は、前記抽出されたコード感情報と前記入力されたコード情報に基づいてハーモニー音生成用コード情報を生成する(ブロック2b)。なお、ハーモニー音生成用コード情報の具体的な生成方法については、後述する。そしてCPU2は、このハーモニー音生成用コード情報と前記検出されたリード音データの音高に基づいて当該リード音データの音高を変換し、ハーモニー音(の楽音信号)を生成するように音源回路8に依頼する。これにより音源回路8は、ハーモニー音(の楽音信号)を生成して効果回路9に出力する(ブロック8b)。効果回路9は、入力された楽音信号に適宜効果を付与して、信号出力制御回路に出力する(ブロック9b)。
信号出力制御回路は、入力された3種類の楽音信号をミキシングした後、所定の出力タイミングに従って後段の前記サウンドシステム10に出力する(ブロック9d)。
このように本実施の形態の演奏補助装置では、選択された伴奏スタイルデータ(の伴奏パターン)および入力されたコード情報に基づいて伴奏音を生成するとともに、前記伴奏スタイルデータから抽出したコード感情報および前記コード情報に基づいてハーモニー音生成用コード情報を生成し、このハーモニー音生成用コード情報と入力されたリード音データに基づいてハーモニー音を生成するようにし、しかも、伴奏音およびハーモニー音の生成をいずれも、1箇所から入力されたコード情報に基づいて行うようにしたので、簡単なユーザ操作により、コード感の合ったハーモニー音および伴奏音を生成することが可能となる。
次に、この制御処理を詳細に説明する。
図4aおよび図4bは、本実施の形態の演奏補助装置、特にCPU2が実行する演奏補助処理の手順を示すフローチャートである。
本演奏補助処理は、主として、
(1)初期化処理(ステップS1〜S3)
(2)演奏開始時処理(ステップS5,S6)
(3)モード変更処理(ステップS8〜S10)
(4)伴奏スタイル(セクション)変更処理(ステップS12〜S14)
(5)リード音生成・出力処理(ステップS16)
(6)リード音消音処理(ステップS18,S19)
(7)演奏補助処理の終了処理(ステップS21)
(8)第1の伴奏音生成・出力処理(ステップS23,S24)
(9)第2の伴奏音生成・出力処理(ステップS45)
(10)第1のハーモニー音生成・出力処理(ステップS28,S29)
(11)第2のハーモニー音生成・出力処理(ステップS43,S44)
(12)第1の現在コード決定処理(ステップS31〜S37)
(13)第2の現在コード決定処理(ステップS41)
によって構成されている。
本演奏補助処理は、たとえば前記入力操作部1に含まれる電源スイッチ(図示せず)によって電源がオンされたときに起動される。起動後、前記(1)の初期化処理が1回実行される。そして演奏開始が指示されるまで待機し、演奏開始が指示されると、前記(2)の演奏開始時処理が1回実行され、これに続いて、前記(3)〜(6)および(8)〜(13)の各処理が適宜実行される。そして(3)〜(6)および(8)〜(13)の各処理は、演奏補助処理の終了が指示されるまで、あるいは電源ボタンによって電源がオフされるまで、適宜繰り返し実行される。なお、演奏補助処理の終了が指示されると、前記(7)の演奏補助処理の終了処理が実行された後、本演奏補助処理は終了する。
本演奏補助処理が起動すると、CPU2は、処理を前記(1)の初期化処理に進める。この(1)初期化処理では、まずCPU2は、初期設定を行う(ステップS1)。初期設定には、伴奏スタイル(セクション)やモードの選択、テンポや音色の設定などが含まれる。
伴奏スタイルデータの中には、前記図2の伴奏スタイルデータ21のように複数セクションの伴奏パターンを持ち、そのうちの1つのセクションの伴奏パターンを再生対象にすることができるように構成されているものがある。「セクション」をカッコ書きで示したのは、この種の伴奏スタイルデータについては、いずれかのセクションが選択できることを意味している。ただし伴奏スタイルデータ21では、「メイン」セクションと「フィルイン」セクションには複数の伴奏パターンがあり、これらのセクションについては、セクションを選択しただけでは1つの伴奏パターンを選択することができないので、さらにユーザに選択させるか、あるいはデフォルトでいずれか1つの伴奏パターンが自動的に選択されるようにしておく必要がある。本実施の形態では説明の都合上、後者の方法を採用し、ユーザはセクションを選択するだけで、いずれかの伴奏パターンが自動的に選択されることにする。もちろん、前者の方法を採用しても構わない。以下、この事情は同様である。
またモードには、本実施の形態では、ハーモニー音と伴奏音のそれぞれのコード感を合わせる「第1モード」とそれぞれのコード感を合わせない「第2モード」があり、上記「モードの選択」では、第1モードと第2モードのいずれかが選択される。つまり、第1モードが選択されたときには、CPU2は、伴奏スタイルデータからコード感情報を抽出する処理を行い、有効なコード感情報が抽出されれば常に、そのコード感情報を使用してハーモニー音を生成する一方、第2モードが選択されたときには、CPU2は、伴奏スタイルデータからコード感情報を抽出する処理そのものを行わない。
「テンポ」は、主として伴奏パターンを再生する際に用いられ、前記CPU2に内蔵されるタイマ(図示せず)によって計時されるタイマ割込の時間間隔を規定する。「音色」は、主として演奏音の音色である。
なお、上記「選択」および「設定」では、デフォルト値が「選択」および「設定」されるようにしてもよいし、前回の演奏補助処理で「選択」および「設定」されたものが「選択」および「設定」されるようにしてもよい。
次にCPU2は、コード感情報抽出処理を実行する(ステップS2)。
図5は、このコード感情報抽出処理の詳細な手順を示すフローチャートである。本コード感情報抽出処理が起動されると、まずCPU2は、選択された伴奏スタイル(セクション)の伴奏スタイルデータを記憶装置5から読み出してRAM4上の前記伴奏スタイルデータ格納領域にロードし参照する(ステップS101)。なお、このステップS101の処理には、カッコ書きで「変更」が記載されているが、これは、本コード感情報抽出処理を別の処理(図4aのステップS12)中で使用する際に必要となるものである。
次にCPU2は、次のようにしてコード感情報を抽出する。すなわち、
(a)第2モードが選択されている場合:コード感情報を「なし」に設定(ステップS102→S103)
(b)第1モードが選択されている場合であって、
(b1)被参照伴奏スタイルデータ、つまりステップS101で参照されている伴奏スタイルデータ中にコード進行パターンがある場合:被参照伴奏スタイルデータからコードタイプ毎に用意されたコード進行パターン(前記図2の伴奏スタイルデータ21の「メインA」セクションでは、ベースパート・メジャ用からコードパート・セブンス用までの6種類の伴奏パターン)を取得し、このコード進行パターンをコード感情報として記憶(ステップS102→S104→S105)
(b2)被参照伴奏スタイルデータ中にコード進行パターンはないものの、テンション度数を示す情報がある場合:被参照伴奏スタイルデータからテンション度数を抽出し、このテンション度数をコード感情報として記憶(ステップS102→S104→S106→S107)
(b3)被参照伴奏スタイルデータ中にコード進行パターンもテンション度数を示す情報もない場合:被参照伴奏スタイルデータから伴奏パターンとその伴奏パターンに対する基本コードを取得し、基本コードで伴奏パターン(のコードパートとベースパート)を1サイクル分音高変換して、コード進行パターンを検出する(ステップS102→S104→S106→S108→S109)。その結果、
(b31)検出されたコード進行パターン中のコードが基本コードと同じ1つのみの場合:コード感情報を「なし」に設定(ステップS110→S111)
(b32)検出されたコード進行パターン中のコードが基本コードと同じ1つのみでない場合:当該コード進行パターンをコード感情報として記憶(ステップS110→S112)。
なお、上記(b3)におけるコード進行パターンの検出処理は、本発明を特徴付けるものではないので、公知の方法を用いて行うようにすればよい。
図4aに戻り、CPU2は、現在コードを「なし」に設定する(ステップS3)。ここで「現在コード」は、伴奏音およびハーモニー音を生成する際に用いるコードであり、基本的には、ユーザが前述のようにして入力したものであるが、所定の条件下では、入力したコードに代えて新たに生成したコードが設定される。
次にCPU2は、演奏開始が指示されるまで処理の進行を待機し(ステップS4)、演奏開始が指示されると、CPU2は処理を前記(2)の演奏開始時処理に進める。演奏開始の指示は、本実施の形態では前述のように、ユーザがスタートスイッチを押すことによって行われるが、これに限らず、ユーザがコードあるいはリード音を初めて入力したことを検知し、これを「演奏開始の指示」とみなすようにしてもよい。
(2)演奏開始時処理では、CPU2は、前記タイマの計時を開始させる(ステップS5)とともに、コード再受付フラグおよびコード進行フラグをそれぞれリセット(“0”)する(ステップS6)。CPU2によって計時の開始が指示されると、タイマは、所定時間(本実施の形態では、384分音符長)を計時する度にタイマ割込信号を発生する。そして、タイマ割込信号が発生する度にCPU2は、タイマ割込処理(図示せず)を起動し、このタイマ割込処理内で、RAM4の所定位置に確保したカウンタ領域(図示せず)を“1”ずつインクリメントして行く。つまり、カウンタ領域には、タイマが作動している限り、タイマの計時を開始してから現在までの経過時間に相当する値(384分音符長の時間を単位とする値)が格納されることになる。したがって、カウンタ領域内の値と、伴奏パターンあるいはコード進行パターンに含まれるタイミングデータの値とが一致すれば、そのタイミングデータの直後に位置するイベントデータあるいはコードデータを読み出すべきタイミングとなる。コード再受付フラグは、モードが変更されたとき、あるいは伴奏スタイル(セクション)が変更されたときにセット(“1”)されるフラグである。モードが変更されたとき、あるいは伴奏スタイル(セクション)が変更されたときには、コードが入力されていなくても、コード入力があったものと見なして、伴奏音およびハーモニー音を(再)生成する必要があり、コード再受付フラグはこれに利用される。コード進行フラグは、被参照伴奏スタイルデータがコード進行パターンを持つタイプのものであるときにセットされるフラグである。
次にCPU2は、ユーザがモードの変更を指示したかどうかをチェックし(ステップS7)、モードの変更が指示されたときには、CPU2は処理を前記(3)のモード変更処理に進める一方、モードの変更が指示されなかったときには、CPU2は処理をステップS11に進める。(3)モード変更処理では、まずCPU2は、モードを指示されたモードに変更する(ステップS8)。本実施の形態では前述のように、モードとして第1モードと第2モードの2種類のモードしか設けられていないので、いずれか指示された方に変更される。なおモードの変更は、たとえば入力操作部1に設けられたモードスイッチ(図示せず)が押される度にトグルで行うようにすればよい。次にCPU2は、現在コードがあれば、つまり現在コードに「なし」以外の有効なコードが設定されていれば、前記コード再受付フラグをセットした(ステップS9)後、タイマを再スタートさせる(ステップS10)。この「再スタート」では、前記カウンタ領域もクリアすることは言うまでもない(後述するステップS14における「再スタート」でも、同様である)。
前記ステップS11では、CPU2は、ユーザが伴奏スタイル(セクション)の変更を指示したかどうかをチェックする。このチェックの結果、伴奏スタイル(セクション)の変更が指示されたときには、CPU2は処理を前記(4)の伴奏スタイル(セクション)変更処理に進める一方、伴奏スタイル(セクション)の変更が指示されなかったときには、CPU2は処理をステップS15に進める。(4)伴奏スタイル(セクション)変更処理では、まずCPU2は、前記図5のコード感情報抽出処理を実行する(ステップS12)。ここでのコード感情報抽出処理は、前記ステップS2でのコード感情報抽出処理に対して、ステップS101中の「選択された伴奏スタイル(セクション)」を「変更された伴奏スタイル(セクション)」に変更する以外異ならないので、コード感情報抽出処理についての説明は繰り返さない。次にCPU2は、前記ステップS9およびS10と同様に、現在コードがあればコード再受付フラグをセットした(ステップS13)後、タイマを再スタートさせる(ステップS14)。
前記ステップS15では、CPU2は、リード音が入力されたか、あるいは変更されたかをチェックする。このチェックの結果、リード音の入力または変更があったときには、CPU2は処理を前記(5)のリード音生成・出力処理に進める一方、リード音の入力および変更のいずれもなかったときには、CPU2は処理をステップS17に進める。本実施の形態では前述のように、リード音はユーザ自身の歌声であるので、(5)リード音生成・出力処理では、CPU2は、制御処理の概要で前述したように、入力されたアナログリード音信号をデジタル化して、リード音データとしてRAM4上のリード音データ格納領域に格納した後、当該リード音データを所定のタイミングで読み出して音源回路8に送信する。
前記ステップS17では、CPU2は、リード音の出力停止を検出したかどうかをチェックする。このチェックの結果、リード音の出力停止を検出したときには、CPU2は処理を前記(6)のリード音消音処理に進める一方、リード音の出力停止を検出しなかったときには、CPU2は処理をステップS20に進める。ここで「リード音の出力停止」は、たとえばリード音データ格納領域内のリード音データのレベルが所定の閾値(歌声が入力されていないと見なされる値)以下のときに、検出したと判定し、それ以外のときに、検出しなかった(歌声が依然として入力されている)と判定すればよい。(6)リード音消音処理では、CPU2は、リード音を消音し(ステップS18)、さらに、ハーモニー音が出力中であれば、そのハーモニー音を消音する(ステップS19)。リード音の出力停止が検出されたときには、リード音データのレベルは非常に低いので、そのリード音をさらに消音する必要があるかの問題はあるが、それでも敢えてその消音をしてもよい。もちろん、何もせずにそのまま放置することも考えられる。ただしリード音は、ユーザ自身の歌声ではなく、伴奏パターンのようにイベントデータとタイミングデータからなるリード音シーケンスを自動再生したものを入力することも考えられる。この場合には、ノートオフデータを含むノートイベントによってリード音の消音が指示されるだけであるので、CPU2は、前記ステップS17でノートオフデータを含むノートイベントが読み出されたかどうかチェックし、読み出されたときには、前記ステップS18で発音中のリード音を消音する必要がある。
前記ステップS20では、CPU2は、ユーザが本演奏補助処理の終了を指示したかどうかをチェックする。このチェックの結果、本演奏補助処理の終了が指示されたときには、CPU2は処理を前記(7)の演奏補助処理の終了処理に進める一方、本演奏補助処理の終了が指示されなかったときには、CPU2は処理をステップS22に進める。(7)演奏補助処理の終了処理では、CPU2は、現在選択中の伴奏スタイル(セクション)やモードおよび現在設定中のテンポや音色などを記憶装置5に記憶させる。これにより、本演奏補助処理が次回起動されたときに、直前の選択状態および設定状態を再現することができる。
前記ステップS22では、CPU2は、コードが入力されたか、あるいはコード再受付フラグがセット状態であるかをチェックする。このチェックの結果、コードの入力があったとき、またはコード再受付フラグがセット状態であったときには、CPU2は処理を前記(8)の第1の伴奏音生成・出力処理に進める一方、コードの入力がなく、かつコード再受付フラグがリセット状態であったときには、CPU2は処理を図4bのステップS38に進める。(8)第1の伴奏音生成・出力処理では、まずCPU2は、コードが入力された場合には、入力されたコードを現在コードに設定する(ステップS23)。なお、コード再受付フラグをセットするときには常に、現在コードには有効なコードが設定されている(前記ステップS9およびS13参照)ので、コード再受付フラグがセット状態である場合には、ステップS23の処理に対応する処理は、特になされない。次にCPU2は、再生対象の伴奏パターンと現在コードに基づいて伴奏音(を発音させるノートイベント)を生成して(音源回路8に)出力する(ステップS24)。ここで、「再生対象の伴奏パターン」とは、伴奏スタイルデータ格納領域に格納されている伴奏スタイルデータに含まれている伴奏パターンである。また「伴奏パターンと現在コードに基づいて伴奏音を生成」とは、伴奏パターンは所定のコードを基準にして作成されているので、伴奏パターンに含まれる複数のノートイベントのうち、生成すべき伴奏音に対応するノートイベントの音高を所定のコードと現在コードに基づいて音高変換し、変換後の音高のノートイベントを伴奏音のノートイベントとして生成することである。なお本実施の形態では、伴奏音(の楽音信号)の生成を音源回路8に任せているので、上記ステップS24では、CPU2は、発音すべき伴奏音(の楽音信号)を音源回路8が生成可能なノートイベントを生成し、これを音源回路8に出力するまでの処理を行う。
次にCPU2は、コード感情報が「なし」に設定されているか、あるいは第2モードが選択されているかをチェックする。このチェックの結果、コード感情報に「なし」以外の有効な情報が設定されているものの、第2モードが選択されている場合、第1モードが選択されているものの、コード感情報に「なし」が設定されている場合、あるいはコード感情報に「なし」が設定され、かつ第2モードが選択されている場合のいずれかの場合には、CPU2は、コード進行フラグをリセットした(ステップS26)後、処理をステップS27に進める一方、コード感情報に「なし」以外の有効な情報が設定され、かつ第1モードが選択されている場合には、CPU2は、処理を前記(12)の第1の現在コード決定処理に進める。
前記ステップS27では、CPU2は、リード音が出力中かどうかをチェックする。このチェックの結果、リード音が出力中のときには、CPU2は処理を前記(10)の第1のハーモニー音生成・出力処理に進める一方、リード音が出力中でないときには、CPU2は処理をステップS30に進める。ここで「リード音が出力中かどうか」は、リード音データ格納領域内のリード音データのうち、音源回路8が出力しようとしているデータから所定範囲のデータの、たとえば平均レベルが所定の閾値より大きいときに、出力中と判定し、それ以外のときに、出力中でないと判定すればよい。(10)第1のハーモニー音生成・出力処理では、まずCPU2は、出力中のリード音の音高(ピッチ)を検出する(ステップS28)。本実施の形態では前述のように、リード音はユーザの歌声であるので、歌声からそのピッチを検出しなければならないが、この種のピッチの検出は、公知の方法でよく行われている。そして本発明の特徴は、歌声からそのピッチを検出する方法にある訳ではないので、ステップS28でのピッチの検出は、公知の方法によって行うようにすればよい。なおリード音が、前述のようにリード音シーケンスを自動再生したものである場合には、ノートオンデータを含むノートイベントが生成されるので、CPU2は、そのノートイベント内の音高情報(ノートナンバ)からリード音の音高を簡単に検出することができる。次にCPU2は、現在コードと上記検出されたリード音の音高に基づいてハーモニー音の音高を決定し、その音高情報を音源回路8に出力する(ステップS29)。これにより音源回路8は、リード音データのピッチを入力された音高に変換し、変換後の音高のリード音データを前記効果回路9に出力する。
次にCPU2は、コード再受付フラグをリセットした(ステップS30)後、処理を前記ステップS7に戻す。
前記(12)第1の現在コード決定処理では、まずCPU2は、コード感情報としてテンション度数が設定されているかどうかをチェックする(図4bのステップS31)。処理が(12)第1の現在コード決定処理に進むときには常に、コード感情報として有効な情報、具体的には、テンション度数またはコード進行パターンのいずれかが設定されている。ステップS31のチェックの結果、コード感情報としてテンション度数が設定されているときには、CPU2は、コード進行フラグをリセットする(ステップS32)。次にCPU2は、現在コードとしてテンション付加可能コードが設定されているかどうかチェックする(ステップS33)。このチェックの結果、現在コードとしてテンション付加可能コードが設定されていれば、テンション度数に基づいて現在コードをテンションコードに変換し、変換後のテンションコードを現在コードに設定する(ステップS34)。具体的には、テンション度数として“9th”が設定されていれば、Maj→add9,min→madd9,M7→M7(9),m7→m7add9,d7→d7(9),…と変換され、“6th”が設定されていれば、Maj→6,min→m6,…と変換され、“M7th”が設定されていれば、Maj→M7,min→mM7,aug→M7aug,…と変換される。なお、この具体例はあくまでも例示に過ぎず、テンション度数としてこれ以外のものを設定するようにしてもよい。またテンション音は、1つのコードにつき複数あってもよい。
一方、ステップS33のチェックの結果、現在コードとしてテンション付加可能コードが設定されていなければ、ステップS34をスキップして、処理を前記図4aのステップS27に進める。この後、リード音が出力中であれば、前記(10)の第1のハーモニー音生成・出力処理が実行される。したがってこのとき、ユーザが入力した単純なコードが、前記ステップS34の処理によってより複雑なテンションコードに変換されて、現在コードに再設定されていれば、ハーモニー音は、ユーザが入力した単純なコードより複雑なコード(テンションコード)に基づいて生成されることになる。
一方、ステップS31のチェックの結果、コード感情報としてテンション度数が設定されていないときには、つまりコード感情報としてコード進行パターンが設定されているときには、まずCPU2は、コード進行フラグをセットする(ステップS35)。次にCPU2は、複数のコード進行パターンが設定されている場合(前記図5のステップS105参照)には、現在コードのタイプに対応するコード進行パターンを、1つのコード進行パターンしか設定されていない場合には、そのコード進行パターンを、現在コードを決定するために参照するコード進行パターン(以下、「被参照コード進行パターン」という)に設定する(ステップS36)。そしてCPU2は、被参照コード進行パターンを構成する複数のコードのうち、現在の再生タイミングに有効なコードを取得し、取得したコードのルートの、当該被参照コード進行パターンの主和音のルートからの度数差が、生成すべきコードのルートの、現在コードのルートからの度数差に一致し、生成すべきコードのタイプが取得したコードのタイプに一致するようなコードを生成し、生成したコードを現在コードに設定する(ステップS37)。ここで「現在の再生タイミングに有効なコード」とは、被参照コード進行パターンに含まれる複数のコードのうち、現在の再生タイミング以前のコードであって、現在の再生タイミングに最も近いものを意味する。これは、処理がステップS37に進んだときに、現在の再生タイミングに一致する読み出しタイミングのコードが被参照コード進行パターン中にあるとは限らないからである。なお、後述するステップS41(前記(13)の第2の現在コード決定処理)でも、ステップS37と同様の処理を行っているが、処理がステップS41に進むときには、現在の再生タイミングは被参照コード進行パターンのコードチェンジタイミングである(後述するステップS40参照)ので、このときには、被参照コード進行パターン中に、現在の再生タイミングに一致する読み出しタイミングのコードが必ず存在する。
上記ステップS37の処理を具体例に則して説明すると、たとえば、被参照コード進行パターンが、Cmaj→Fmaj→G7→Cmaj(主和音の根音を“C”とする)のように1拍ずつコードチェンジするものとし、現在コードが“Gmaj”であり、現在の再生タイミングに有効なコードが“G7”である場合、“G7”は主和音の根音“C”から5度差になるので、現在コード“Gmaj”からルートが5度差になり、タイプが“G7”の“7th”である“D7”を生成し、これを新たな現在コードに設定する。
続いてCPU2は、処理を前記図4aのステップS27に進める。この後、リード音が出力中であれば、前記(10)の第1のハーモニー音生成・出力処理が実行される。したがってこのとき、ユーザが入力した単純なコードが、上記ステップS37の処理によってより複雑なもしくは変化した他のコードに変換されて、現在コードに再設定されていれば、ハーモニー音は、ユーザが入力した単純なコードより複雑なもしくは変化したコードに基づいて生成されることになる。
前記ステップS38(図4b)では、CPU2は、現在コードが「なし」に設定されているかどうか、つまり前記(1)の初期化処理がなされてから現在まで1度もコードが入力されていないかどうかをチェックする。このチェックの結果、現在コードが「なし」に設定されているときには、CPU2は何もせずに、処理を前記図4aのステップS7に戻す一方、現在コードとして有効なコードが設定されているときには、CPU2は処理をステップS39に進める。
コード進行フラグがセット状態であって、かつ現在の再生タイミングが被参照コード進行パターンのコードチェンジタイミングであれば、CPU2は、処理を前記(13)の第2の現在コード決定処理に進める(ステップS39→S40→S41)一方、コード進行フラグがリセット状態であるか、または現在の再生タイミングが被参照コード進行パターンのコードチェンジタイミングでなければ、CPU2は、ステップS41をスキップして、処理をステップS42に進める。つまり、処理が(13)第2の現在コード決定処理に進む場合は、(12)第1の現在コード決定処理が実行された(このとき、前記ステップS35でコード進行フラグがセットされている)後、コード入力がなされずに(前記ステップS22参照)現在の再生タイミングが被参照コード進行パターンのコードチェンジタイミングになった場合である。
(13)第2の現在コード決定処理では、CPU2は、被参照コード進行パターンを構成する複数のコードのうち、現在の再生タイミングが到達したコードのルートの、その1つ前のコードのルートからの度数差が、生成すべきコードのルートの、現在コードのルートからの度数差に一致し、生成すべきコードのタイプが上記現在の再生タイミングが到達したコードのタイプに一致するようなコードを生成し、生成したコードを現在コードに設定する。この(13)第2の現在コード決定処理は、前述のように(12)第1の現在コード決定処理とほぼ同様であるので、(13)第2の現在コード決定処理の内容についての説明は、これ以上行わない。
前記ステップS42では、CPU2は、リード音が出力中かどうかをチェックする。このチェックの結果、リード音が出力中のときには、CPU2は処理を前記(11)の第2のハーモニー音生成・出力処理に進める一方、リード音が出力中でないときには、CPU2は処理をステップS45に進める。この(11)第2のハーモニー音生成・出力処理は、前記(10)第1のハーモニー音生成・出力処理と同様であるので、その説明を省略する。
前記ステップS45では、CPU2は、前記(9)の第2の伴奏音生成・出力処理を実行する。この(9)第2の伴奏音生成・出力処理は、前記(8)第1の伴奏音生成・出力処理と同様であるので、その説明を省略する。
このように本実施の形態の演奏補助装置では、ユーザによって単純なコードが指定された場合でも、選択されている伴奏スタイルに合わせて必要に応じて複雑なコードに自動的に変換し、変換後のコードに基づいてハーモニー音を生成するようにしたので、ユーザは難しいコード指定を行わなくてよい。
また、ユーザは伴奏スタイルを選択する際に、コード進行が意識されているのか、テンション音が自動的に付加されるのかなどについて考慮する必要がなくなり、思い通りの伴奏スタイルを自由に選択することができる。
さらに、ハーモニー生成用のコード情報を伴奏スタイルから生成される伴奏音のコード感に合わせるかどうかをモードによりユーザが選択切り替え可能に構成したので、敢えてハーモニー音と自動伴奏音のコード感を合わせずテンション感などを出す演奏も可能になる。たとえば、1拍ずつオンベースコードで1小節間ベース音のみ動くような伴奏パターンの場合、ハーモニー音はコード音1音を1小節間出力し続け、伴奏音として動くベース音が出力される、という使い方も可能になる。曲の区間などで自動伴奏音とハーモニー音の調和感を自在に変えることができる。
なお本実施の形態では、コード入力は、鍵盤から行うようにしたが、これに限らず、予め記憶されたコード進行パターンを順次自動的に読み出して行うようにしてもよい。
また本実施の形態では、伴奏音、ハーモニー音およびリード音を同時に発生させる例を挙げて説明したが、これに限らず、伴奏音およびハーモニー音を同時に発生させるようにしてもよい。
コード入力が、本実施の形態のように(鍵盤を用いた)演奏入力によって行われる場合には、押鍵状態からコード検出を行うようにすればよい。コード検出方法については、特に指定はなく、実際のコード構成音の鍵を押鍵することによりコードを指定するフィンガード方式や、1つから3つ程度の鍵を所定の規則に基づいて押鍵することによりコードを指定するシングルフィンガー方式などが考えられる。または、操作パネル上に配置されたスイッチ操作により、各コードのルートとタイプを順次指定していってもよい。
伴奏スタイルから生成される伴奏音がコード進行を持つかテンション音を持つかを調べる方法は、いくつか考えられる。たとえば、伴奏スタイルデータが予めテンション音を混ぜて出力するタイプと通常のタイプで分類されて記憶されている場合やデータファイルの拡張子により区別されている場合には、伴奏スタイルとして何が選択されたかで判断すればよい。また、伴奏スタイルのセクションデータ内にコード進行パターンが記憶されており、どのセクションを選択しているかで判断するようにしてもよい。もしくは、伴奏スタイルの伴奏パターンデータを再生前にCmajやCminなどの単純なコードで音高変換を行い、テンションノートが混ざっているかどうか調べ、混ざっているテンションノートを持つコードにハーモニー音生成時にユーザの入力コードを変換するようにしてもよい。
ハーモニー音の生成方法は、公知の方法のいずれを採用しても構わないが、コードを元にして生成するものとする。たとえば、リード音高より高くて近い音高がハーモニー音となる方式のハーモニー音生成でコードがCmajの場合、リード音高E3(64)に対してハーモニー音高はG3(67)が決定され、リード音高G3(67)に対してハーモニー音高はC4(72)が決定される。もし、同時に使用している伴奏スタイルが入力コードCmajに対してC6(構成音はC,E,G,A)のコード感の自動伴奏音を生成する場合、上記の方式のハーモニー音生成では、音名がC,E,Gのいずれかのハーモニー音しか生成されない。本実施の形態のように入力コードCmajを伴奏スタイルのコード感に合わせてC6として処理すると、リード音高E3(64)に対してハーモニー音高にG3(67)が決定されるのは同じだが、リード音高G3(67)に対してハーモニー音高はC4(72)ではなくA3(69)が決定され、C6のコード感を持つハーモニー音となる。
コード進行パターン情報からハーモニー生成用のコード情報を作り出す際には、コード進行パターンの各コード間の度数差が保たれるようにルートを変換すればよい。コードタイプはコード進行パターン情報から取得すればよい。
なお、上述した実施の形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体を、システムまたは装置に供給し、そのシステムまたは装置のコンピュータ(またはCPUやMPU)が記憶媒体に格納されたプログラムコードを読出し実行することによっても、本発明の目的が達成されることは言うまでもない。
この場合、記憶媒体から読出されたプログラムコード自体が本発明の新規な機能を実現することになり、そのプログラムコードおよび該プログラムコードを記憶した記憶媒体は本発明を構成することになる。
プログラムコードを供給するための記憶媒体としては、たとえば、フレキシブルディスク、ハードディスク、光磁気ディスク、CD−ROM、CD−R、CD−RW、DVD−ROM、DVD−RAM、DVD−RW、DVD+RW、磁気テープ、不揮発性のメモリカード、ROMなどを用いることができる。また、通信ネットワークを介してサーバコンピュータからプログラムコードが供給されるようにしてもよい。
また、コンピュータが読出したプログラムコードを実行することにより、上述した実施の形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているOSなどが実際の処理の一部または全部を行い、その処理によって上述した実施の形態の機能が実現される場合も含まれることは言うまでもない。
さらに、記憶媒体から読出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPUなどが実際の処理の一部または全部を行い、その処理によって上述した実施の形態の機能が実現される場合も含まれることは言うまでもない。